diff options
-rw-r--r-- | asm/macros/contest_ai_script.inc | 800 | ||||
-rw-r--r-- | data/contest_ai_scripts.s | 126 | ||||
-rw-r--r-- | include/contest.h | 4 | ||||
-rw-r--r-- | src/contest.c | 8 | ||||
-rw-r--r-- | src/contest_ai.c | 713 | ||||
-rw-r--r-- | src/contest_effect.c | 5 |
6 files changed, 1009 insertions, 647 deletions
diff --git a/asm/macros/contest_ai_script.inc b/asm/macros/contest_ai_script.inc index 763c3d1c4..7a5d669f4 100644 --- a/asm/macros/contest_ai_script.inc +++ b/asm/macros/contest_ai_script.inc @@ -1,6 +1,8 @@ +@ A large number of the Contest AI commands go unused, so their corresponding macros in this file are similarly unused + @ Add a positive/negative value to the score of the move being evaluated. - .macro score score + .macro score score:req .byte 0x00 .byte \score .endm @@ -9,36 +11,36 @@ .byte 0x01 .endm - .macro if_appeal_num_less_than param, addr + .macro if_appeal_num_less_than num:req, destination:req .byte 0x02 - .byte \param - .4byte \addr + .byte \num + .4byte \destination .endm - .macro if_appeal_num_more_than param, addr + .macro if_appeal_num_more_than num:req, destination:req .byte 0x03 - .byte \param - .4byte \addr + .byte \num + .4byte \destination .endm - .macro if_appeal_num_eq param, addr + .macro if_appeal_num_eq num:req, destination:req .byte 0x04 - .byte \param - .4byte \addr + .byte \num + .4byte \destination .endm - .macro if_appeal_num_not_eq param, addr + .macro if_appeal_num_not_eq num:req, destination:req .byte 0x05 - .byte \param - .4byte \addr + .byte \num + .4byte \destination .endm - .macro if_last_appeal addr:req - if_appeal_num_eq CONTEST_LAST_APPEAL, \addr + .macro if_last_appeal destination:req + if_appeal_num_eq CONTEST_LAST_APPEAL, \destination .endm - .macro if_not_last_appeal addr:req - if_appeal_num_not_eq CONTEST_LAST_APPEAL, \addr + .macro if_not_last_appeal destination:req + if_appeal_num_not_eq CONTEST_LAST_APPEAL, \destination .endm @ audience excitement @@ -47,28 +49,28 @@ .byte 0x06 .endm - .macro if_excitement_less_than param, addr + .macro if_excitement_less_than num:req, destination:req .byte 0x07 - .byte \param - .4byte \addr + .byte \num + .4byte \destination .endm - .macro if_excitement_more_than param, addr + .macro if_excitement_more_than num:req, destination:req .byte 0x08 - .byte \param - .4byte \addr + .byte \num + .4byte \destination .endm - .macro if_excitement_eq param, addr + .macro if_excitement_eq num:req, destination:req .byte 0x09 - .byte \param - .4byte \addr + .byte \num + .4byte \destination .endm - .macro if_excitement_not_eq param, addr + .macro if_excitement_not_eq num:req, destination:req .byte 0x0A - .byte \param - .4byte \addr + .byte \num + .4byte \destination .endm @ the order that the user goes in the current appeal @@ -77,28 +79,28 @@ .byte 0x0B .endm - .macro if_user_order_less_than param addr + .macro if_user_order_less_than num:req, destination:req .byte 0x0C - .byte \param - .4byte \addr + .byte \num + .4byte \destination .endm - .macro if_user_order_more_than param addr + .macro if_user_order_more_than num:req, destination:req .byte 0x0D - .byte \param - .4byte \addr + .byte \num + .4byte \destination .endm - .macro if_user_order_eq param addr + .macro if_user_order_eq num:req, destination:req .byte 0x0E - .byte \param - .4byte \addr + .byte \num + .4byte \destination .endm - .macro if_user_order_not_eq param addr + .macro if_user_order_not_eq num:req, destination:req .byte 0x0F - .byte \param - .4byte \addr + .byte \num + .4byte \destination .endm @ user condition @@ -107,40 +109,89 @@ .byte 0x10 .endm - .macro if_user_condition_less_than param, addr + .macro if_user_condition_less_than num:req, destination:req .byte 0x11 - .byte \param - .4byte \addr + .byte \num + .4byte \destination .endm - .macro if_user_condition_more_than param, addr + .macro if_user_condition_more_than num:req, destination:req .byte 0x12 - .byte \param - .4byte \addr + .byte \num + .4byte \destination .endm - .macro if_user_condition_eq param, addr + .macro if_user_condition_eq num:req, destination:req .byte 0x13 - .byte \param - .4byte \addr + .byte \num + .4byte \destination .endm - .macro if_user_condition_not_eq param, addr + .macro if_user_condition_not_eq num:req, destination:req .byte 0x14 - .byte \param - .4byte \addr + .byte \num + .4byte \destination + .endm + +@ appeal points + + .macro get_point_total + .byte 0x15 + .endm + + .macro if_points_less_than num:req, destination:req + .byte 0x16 + .byte \num + .4byte \destination .endm -@ 15 -@ 16 -@ 17 -@ 18 -@ 19 -@ 1A -@ 1B -@ 1C -@ 1D -@ 1E + .macro if_points_more_than num:req, destination:req + .byte 0x17 + .byte \num + .4byte \destination + .endm + + .macro if_points_eq num:req, destination:req + .byte 0x18 + .byte \num + .4byte \destination + .endm + + .macro if_points_not_eq num:req, destination:req + .byte 0x19 + .byte \num + .4byte \destination + .endm + +@ preliminary (pre-appeal) judging points + + .macro get_preliminary_points + .byte 0x1A + .endm + + .macro if_preliminary_points_less_than num:req, destination:req + .byte 0x1B + .byte \num + .4byte \destination + .endm + + .macro if_preliminary_points_more_than num:req, destination:req + .byte 0x1C + .byte \num + .4byte \destination + .endm + + .macro if_preliminary_points_eq num:req, destination:req + .byte 0x1D + .byte \num + .4byte \destination + .endm + + .macro if_preliminary_points_not_eq num:req, destination:req + .byte 0x1E + .byte \num + .4byte \destination + .endm @ contest type @@ -148,16 +199,16 @@ .byte 0x1F .endm - .macro if_contest_type_eq param, addr + .macro if_contest_type_eq type:req, destination:req .byte 0x20 - .byte \param - .4byte \addr + .byte \type + .4byte \destination .endm - .macro if_contest_type_not_eq param, addr + .macro if_contest_type_not_eq type:req, destination:req .byte 0x21 - .byte \param - .4byte \addr + .byte \type + .4byte \destination .endm @ move excitement (change in excitement due to move) @@ -166,28 +217,28 @@ .byte 0x22 .endm - .macro if_move_excitement_less_than param, addr + .macro if_move_excitement_less_than num:req, destination:req .byte 0x23 - .byte \param - .4byte \addr + .byte \num + .4byte \destination .endm - .macro if_move_excitement_more_than param, addr + .macro if_move_excitement_more_than num:req, destination:req .byte 0x24 - .byte \param - .4byte \addr + .byte \num + .4byte \destination .endm - .macro if_move_excitement_eq param, addr + .macro if_move_excitement_eq num:req, destination:req .byte 0x25 - .byte \param - .4byte \addr + .byte \num + .4byte \destination .endm - .macro if_move_excitement_not_eq param, addr + .macro if_move_excitement_not_eq num:req, destination:req .byte 0x26 - .byte \param - .4byte \addr + .byte \num + .4byte \destination .endm @ move effect @@ -196,16 +247,16 @@ .byte 0x27 .endm - .macro if_effect_eq param, addr + .macro if_effect_eq effect:req, destination:req .byte 0x28 - .byte \param - .4byte \addr + .byte \effect + .4byte \destination .endm - .macro if_effect_not_eq param, addr + .macro if_effect_not_eq effect:req, destination:req .byte 0x29 - .byte \param - .4byte \addr + .byte \effect + .4byte \destination .endm @ move effect type @@ -214,16 +265,16 @@ .byte 0x2A .endm - .macro if_effect_type_eq param, addr + .macro if_effect_type_eq type:req, destination:req .byte 0x2B - .byte \param - .4byte \addr + .byte \type + .4byte \destination .endm - .macro if_effect_type_not_eq param, addr + .macro if_effect_type_not_eq type:req, destination:req .byte 0x2C - .byte \param - .4byte \addr + .byte \type + .4byte \destination .endm @ whether the current move is the most appealing in the user's moveset @@ -232,23 +283,81 @@ .byte 0x2D .endm - .macro if_most_appealing_move addr + .macro if_most_appealing_move destination:req .byte 0x2E - .4byte \addr - .endm - -@ 2F -@ 30 -@ 31 -@ 32 -@ 33 -@ 34 -@ 35 -@ 36 -@ 37 -@ 38 -@ 39 -@ 3A + .4byte \destination + .endm + +@ whether the current move is the most jamming in the user's moveset + + .macro check_most_jamming_move + .byte 0x2F + .endm + + .macro if_most_jamming_move destination:req + .byte 0x30 + .4bye \destination + .endm + +@ number of hearts the current move's appeal would provide + + .macro get_num_move_hearts + .byte 0x31 + .endm + + .macro if_num_move_hearts_less_than num:req, destination:req + .byte 0x32 + .byte \num + .4byte \destination + .endm + + .macro if_num_move_hearts_more_than num:req, destination:req + .byte 0x33 + .byte \num + .4byte \destination + .endm + + .macro if_num_move_hearts_eq num:req, destination:req + .byte 0x34 + .byte \num + .4byte \destination + .endm + + .macro if_num_move_hearts_not_eq num:req, destination:req + .byte 0x35 + .byte \num + .4byte \destination + .endm + +@ number of hearts the current move's jam would remove + + .macro get_num_move_jam_hearts + .byte 0x36 + .endm + + .macro if_num_move_jam_hearts_less_than num:req, destination:req + .byte 0x37 + .byte \num + .4byte \destination + .endm + + .macro if_num_move_jam_hearts_more_than num:req, destination:req + .byte 0x38 + .byte \num + .4byte \destination + .endm + + .macro if_num_move_jam_hearts_eq num:req, destination:req + .byte 0x39 + .byte \num + .4byte \destination + .endm + + .macro if_num_move_jam_hearts_not_eq num:req, destination:req + .byte 0x3A + .byte \num + .4byte \destination + .endm @ number of times current move has been used @@ -256,28 +365,28 @@ .byte 0x3B .endm - .macro if_move_used_count_less_than param, addr + .macro if_move_used_count_less_than num:req, destination:req .byte 0x3C - .byte \param - .4byte \addr + .byte \num + .4byte \destination .endm - .macro if_move_used_count_more_than param, addr + .macro if_move_used_count_more_than num:req, destination:req .byte 0x3D - .byte \param - .4byte \addr + .byte \num + .4byte \destination .endm - .macro if_move_used_count_eq param, addr + .macro if_move_used_count_eq num:req, destination:req .byte 0x3E - .byte \param - .4byte \addr + .byte \num + .4byte \destination .endm - .macro if_move_used_count_not_eq param, addr + .macro if_move_used_count_not_eq num:req, destination:req .byte 0x3F - .byte \param - .4byte \addr + .byte \num + .4byte \destination .endm @ whether the current move is a combo starter (with another move in the moveset) @@ -286,14 +395,14 @@ .byte 0x40 .endm - .macro if_combo_starter addr + .macro if_combo_starter destination:req .byte 0x41 - .4byte \addr + .4byte \destination .endm - .macro if_not_combo_starter addr + .macro if_not_combo_starter destination:req .byte 0x42 - .4byte \addr + .4byte \destination .endm @ whether the current move is a combo finisher (with another move in the moveset) @@ -302,14 +411,14 @@ .byte 0x43 .endm - .macro if_combo_finisher addr + .macro if_combo_finisher destination:req .byte 0x44 - .4byte \addr + .4byte \destination .endm - .macro if_not_combo_finisher addr + .macro if_not_combo_finisher destination:req .byte 0x45 - .4byte \addr + .4byte \destination .endm @ whether the current move would finish a combo @@ -318,170 +427,403 @@ .byte 0x46 .endm - .macro if_would_finish_combo addr + .macro if_would_finish_combo destination:req .byte 0x47 - .4byte \addr + .4byte \destination .endm - .macro if_would_not_finish_combo addr + .macro if_would_not_finish_combo destination:req .byte 0x48 - .4byte \addr + .4byte \destination .endm @ condition of mon (indexed by order) - .macro get_condition mon + .macro get_condition mon:req .byte 0x49 .byte \mon .endm - .macro if_condition_less_than mon, value, addr + .macro if_condition_less_than mon:req, num:req destination:req .byte 0x4A .byte \mon - .byte \value - .4byte \addr + .byte \num + .4byte \destination .endm - .macro if_condition_more_than mon, value, addr + .macro if_condition_more_than mon:req, num:req, destination:req .byte 0x4B .byte \mon - .byte \value - .4byte \addr + .byte \num + .4byte \destination .endm - .macro if_condition_eq mon, value, addr + .macro if_condition_eq mon:req, num:req, destination:req .byte 0x4C .byte \mon - .byte \value - .4byte \addr + .byte \num + .4byte \destination .endm - .macro if_condition_not_eq mon, value, addr + .macro if_condition_not_eq mon:req, num:req, destination:req .byte 0x4D .byte \mon - .byte \value - .4byte \addr + .byte \num + .4byte \destination .endm @ whether the mon used a combo starter move @ Even though this value is always 1 or 0 (i.e. TRUE/FALSE), @ there are less-than and greater-than comparison operations for some reason. - .macro get_used_combo_starter mon + .macro get_used_combo_starter mon:req .byte 0x4E .byte \mon .endm - .macro if_used_combo_starter_less_than mon, value, addr + .macro if_used_combo_starter_less_than mon:req, num:req, destination:req .byte 0x4F .byte \mon - .byte \value - .4byte \addr + .byte \num + .4byte \destination .endm - .macro if_used_combo_starter_more_than mon, value, addr + .macro if_used_combo_starter_more_than mon:req, num:req, destination:req .byte 0x50 .byte \mon - .byte \value - .4byte \addr + .byte \num + .4byte \destination .endm - .macro if_used_combo_starter_eq mon, value, addr + .macro if_used_combo_starter_eq mon:req, num:req, destination:req .byte 0x51 .byte \mon - .byte \value - .4byte \addr + .byte \num + .4byte \destination .endm - .macro if_used_combo_starter_not_eq mon, value, addr + .macro if_used_combo_starter_not_eq mon:req, num:req, destination:req .byte 0x52 .byte \mon - .byte \value - .4byte \addr + .byte \num + .4byte \destination .endm @ whether the mon can make an appeal - .macro check_can_participate mon + .macro check_can_participate mon:req .byte 0x53 .byte \mon .endm - .macro if_can_participate mon, addr + .macro if_can_participate mon:req, destination:req .byte 0x54 .byte \mon - .4byte \addr + .4byte \destination .endm - .macro if_cannot_participate mon, addr + .macro if_cannot_participate mon:req, destination:req .byte 0x55 .byte \mon - .4byte \addr + .4byte \destination .endm -@ 56 -@ 57 +@ whether the mon just completed a combo - .macro contest_58 param addr + .macro get_completed_combo mon:req + .byte 0x56 + .byte \mon + .4byte \destination + .endm + + .macro if_completed_combo mon:req, destination:req + .byte 0x57 + .byte \mon + .4byte \destination + .endm + + .macro if_not_completed_combo mon:req destination:req .byte 0x58 - .byte \param - .4byte \addr - .endm - -@ 59 -@ 5A -@ 5B -@ 5C -@ 5D -@ 5E -@ 5F -@ 60 -@ 61 -@ 62 -@ 63 -@ 64 -@ 65 -@ 66 -@ 67 -@ 68 -@ 69 -@ 6A -@ 6B -@ 6C -@ 6D -@ 6E -@ 6F -@ 70 -@ 71 -@ 72 -@ 73 -@ 74 -@ 75 -@ 76 -@ 77 -@ 78 -@ 79 -@ 7A -@ 7B -@ 7C - - .macro if_random param addr + .byte \mon + .4byte \destination + .endm + +@ comparing appeal points to another mon + + .macro get_points_diff mon:req + .byte 0x59 + .byte \mon + .endm + + .macro if_points_more_than_mon mon:req, destination:req + .byte 0x5A + .byte \mon + .4byte \destination + .endm + + .macro if_points_less_than_mon mon:req, destination:req + .byte 0x5B + .byte \mon + .4byte \destination + .endm + + .macro if_points_eq_mon mon:req, destination:req + .byte 0x5C + .byte \mon + .4byte \destination + .endm + + .macro if_points_not_eq_mon mon:req, destination:req + .byte 0x5D + .byte \mon + .4byte \destination + .endm + +@ comparing preliminary judging points to another mon + + .macro get_preliminary_points_diff mon:req + .byte 0x5E + .byte \mon + .endm + + .macro if_preliminary_points_more_than_mon mon:req, destination:req + .byte 0x5F + .byte \mon + .4byte \destination + .endm + + .macro if_preliminary_points_less_than_mon mon:req, destination:req + .byte 0x60 + .byte \mon + .4byte \destination + .endm + + .macro if_preliminary_points_eq_mon mon:req, destination:req + .byte 0x61 + .byte \mon + .4byte \destination + .endm + + .macro if_preliminary_points_not_eq_mon mon:req, destination:req + .byte 0x62 + .byte \mon + .4byte \destination + .endm + +@ checking move history for move effect + + .macro get_used_moves_effect mon:req, round:req + .byte 0x63 + .byte \mon + .byte \round + .endm + + .macro if_used_moves_effect_less_than mon:req, round:req, effect:req, destination:req + .byte 0x64 + .byte \mon + .byte \round + .byte \effect + .4byte \destination + .endm + + .macro if_used_moves_effect_more_than mon:req, round:req, effect:req, destination:req + .byte 0x65 + .byte \mon + .byte \round + .byte \effect + .4byte \destination + .endm + + .macro if_used_moves_effect_eq mon:req, round:req, effect:req, destination:req + .byte 0x66 + .byte \mon + .byte \round + .byte \effect + .4byte \destination + .endm + + .macro if_used_moves_effect_not_eq mon:req, round:req, effect:req, destination:req + .byte 0x67 + .byte \mon + .byte \round + .byte \effect + .4byte \destination + .endm + +@ checking move history for excitement + + .macro get_used_moves_excitement mon:req, round:req + .byte 0x68 + .byte \mon + .byte \round + .endm + + .macro if_used_moves_excitement_less_than mon:req, round:req, num:req, destination:req + .byte 0x69 + .byte \mon + .byte \round + .byte \num + .4byte \destination + .endm + + .macro if_used_moves_excitement_more_than mon:req, round:req, num:req, destination:req + .byte 0x6A + .byte \mon + .byte \round + .byte \num + .4byte \destination + .endm + + .macro if_used_moves_excitement_eq mon:req, round:req, num:req, destination:req + .byte 0x6B + .byte \mon + .byte \round + .byte \num + .4byte \destination + .endm + + .macro if_used_moves_excitement_not_eq mon:req, round:req, num:req, destination:req + .byte 0x6C + .byte \mon + .byte \round + .byte \num + .4byte \destination + .endm + +@ checking move history for effect type + + .macro get_used_moves_effect_type mon:req, round:req + .byte 0x6D + .byte \mon + .byte \round + .endm + + .macro if_used_moves_effect_type_eq mon:req, round:req, type:req, destination:req + .byte 0x6E + .byte \mon + .byte \round + .byte \type + .4byte \destination + .endm + + .macro if_used_moves_effect_type_not_eq mon:req, round:req, type:req, destination:req + .byte 0x6F + .byte \mon + .byte \round + .byte \type + .4byte \destination + .endm + +@ generic commands + + .macro save_result varId:req + .byte 0x70 + .byte \varId + .endm + + .macro setvar varId:req, num:req + .byte 0x71 + .byte \varId + .2byte \num + .endm + + .macro add varId:req, num:req + .byte 0x72 + .byte \varId + .2byte \num + .endm + + .macro addvar varId1:req, varId2:req + .byte 0x73 + .byte \varId1 + .byte \varId2 + .endm + + @ Duplicate of above + .macro addvar_duplicate varId1:req, varId2:req + .byte 0x74 + .byte \varId1 + .byte \varId2 + .endm + + .macro if_less_than varId:req, num:req, destination:req + .byte 0x75 + .byte \varId + .2byte \num + .4byte \destination + .endm + + .macro if_greater_than varId:req, num:req, destination:req + .byte 0x76 + .byte \varId + .2byte \num + .4byte \destination + .endm + + .macro if_eq varId:req, num:req, destination:req + .byte 0x77 + .byte \varId + .2byte \num + .4byte \destination + .endm + + .macro if_not_eq varId:req, num:req, destination:req + .byte 0x78 + .byte \varId + .2byte \num + .4byte \destination + .endm + + .macro if_less_than_var varId1:req, varId2:req, destination:req + .byte 0x79 + .byte \varId1 + .byte \varId2 + .4byte \destination + .endm + + .macro if_greater_than_var varId1:req, varId2:req, destination:req + .byte 0x7A + .byte \varId1 + .byte \varId2 + .4byte \destination + .endm + + .macro if_eq_var varId1:req, varId2:req, destination:req + .byte 0x7B + .byte \varId1 + .byte \varId2 + .4byte \destination + .endm + + .macro if_not_eq_var varId1:req, varId2:req, destination:req + .byte 0x7C + .byte \varId1 + .byte \varId2 + .4byte \destination + .endm + + @ NOTE: Random is broken (see ContestAICmd_if_random_less_than) + .macro if_random_less_than num:req, destination:req .byte 0x7D - .byte \param - .4byte \addr + .byte \num + .4byte \destination .endm -@ 7E + .macro if_random_greater_than num:req, destination:req + .byte 0x7E + .byte \num + .4byte \destination + .endm - .macro jump addr + .macro goto destination:req .byte 0x7F - .4byte \addr + .4byte \destination .endm - .macro call addr + .macro call destination:req .byte 0x80 - .4byte \addr + .4byte \destination .endm .macro end @@ -492,21 +834,29 @@ .byte 0x82 .endm - .macro if_user_has_exciting_move addr + .macro if_user_has_exciting_move destination:req .byte 0x83 - .4byte \addr + .4byte \destination .endm - .macro if_user_doesnt_have_exciting_move addr + .macro if_user_doesnt_have_exciting_move destination:req .byte 0x84 - .4byte \addr + .4byte \destination .endm -@ 85 -@ 86 + .macro check_user_has_move move:req + .byte 0x85 + .2byte \move + .endm + + .macro if_user_has_move move:req, destination:req + .byte 0x86 + .2byte \move + .4byte \destination + .endm - .macro if_effect_in_user_moveset param addr + .macro if_effect_in_user_moveset effect:req, destination:req .byte 0x87 - .2byte \param - .4byte \addr + .2byte \effect + .4byte \destination .endm diff --git a/data/contest_ai_scripts.s b/data/contest_ai_scripts.s index 4a0bed817..bb8d32f57 100644 --- a/data/contest_ai_scripts.s +++ b/data/contest_ai_scripts.s @@ -159,29 +159,29 @@ AI_contest09_081DC2AB: end AI_contest0F_1_081DC2AB: if_user_order_not_eq MON_1, AI_contest7D_1_081DC2AB - if_random 51, AI_end_081DC2AB + if_random_less_than 51, AI_end_081DC2AB score +20 end AI_contest7D_1_081DC2AB: - if_random 127, AI_end_081DC2AB + if_random_less_than 127, AI_end_081DC2AB score -10 end AI_contest0F_2_081DC2AB: if_user_order_not_eq MON_1, AI_contest7D_3_081DC2AB if_last_appeal AI_score_081DC2AB AI_contest7D_2_081DC2AB: - if_random 51, AI_end_081DC2AB + if_random_less_than 51, AI_end_081DC2AB score +10 end AI_score_081DC2AB: score +15 end AI_contest7D_3_081DC2AB: - if_random 127, AI_end_081DC2AB + if_random_less_than 127, AI_end_081DC2AB score +10 end AI_contest7D_4_081DC2AB: - if_random 127, AI_end_081DC2AB + if_random_less_than 127, AI_end_081DC2AB score +10 end AI_contest3D_081DC2AB: @@ -191,7 +191,7 @@ AI_contest3D_081DC2AB: score +30 end AI_contest7D_5_081DC2AB: - if_random 100, AI_end_081DC2AB + if_random_less_than 100, AI_end_081DC2AB score +10 end AI_contest29_081DC2AB: @@ -225,17 +225,17 @@ AI_score_081DC348: end AI_contest04_1_081DC348: if_last_appeal AI_contest7D_081DC348 - if_random 150, AI_end_081DC348 + if_random_less_than 150, AI_end_081DC348 score +10 end AI_contest04_2_081DC348: if_last_appeal AI_contest7D_081DC348 - if_random 125, AI_end_081DC348 + if_random_less_than 125, AI_end_081DC348 score +10 end AI_contest04_3_081DC348: if_last_appeal AI_contest7D_081DC348 - if_random 50, AI_end_081DC348 + if_random_less_than 50, AI_end_081DC348 score +10 end AI_contest04_4_081DC348: @@ -243,7 +243,7 @@ AI_contest04_4_081DC348: score +10 end AI_contest7D_081DC348: - if_random 125, AI_end_081DC348 + if_random_less_than 125, AI_end_081DC348 score -15 end AI_end_081DC348: @@ -276,11 +276,11 @@ ContestEffect39_score1: score +20 end ContestEffect39_score2: - if_random 125, ContestEffectEnd + if_random_less_than 125, ContestEffectEnd score +15 end ContestEffect39_score3: - if_random 125, ContestEffectEnd + if_random_less_than 125, ContestEffectEnd score +5 end ContestEffect39_score4: @@ -289,27 +289,27 @@ ContestEffect39_score4: ContestEffect40: if_effect_in_user_moveset CONTEST_EFFECT_BETTER_IF_FIRST, ContestEffectEnd - if_random 50, ContestEffectEnd + if_random_less_than 50, ContestEffectEnd score +20 end ContestEffect41: if_effect_in_user_moveset CONTEST_EFFECT_BETTER_IF_LAST, ContestEffectEnd - if_random 50, ContestEffectEnd + if_random_less_than 50, ContestEffectEnd score +20 end ContestEffect3: if_user_order_not_eq MON_4, ContestEffectEnd - if_random 50, ContestEffectEnd + if_random_less_than 50, ContestEffectEnd score +15 end if_last_appeal ContestEffect3_7D - if_random 220, ContestEffect3_score + if_random_less_than 220, ContestEffect3_score score +10 end ContestEffect3_7D: - if_random 20, ContestEffectEnd + if_random_less_than 20, ContestEffectEnd score +15 end ContestEffect3_score: @@ -319,7 +319,7 @@ ContestEffect3_score: ContestEffect38: if_effect_in_user_moveset CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION, ContestEffect38_contest04 if_user_condition_eq 3, ContestEffect38_score1 - if_random 50, ContestEffectEnd + if_random_less_than 50, ContestEffectEnd score +15 end ContestEffect38_score1: @@ -329,11 +329,11 @@ ContestEffect38_contest04: if_last_appeal ContestEffect38_score2 if_appeal_num_eq 0, ContestEffect38_random if_move_used_count_eq 1, ContestEffectEnd - if_random 125, ContestEffectEnd + if_random_less_than 125, ContestEffectEnd score +10 end ContestEffect38_random: - if_random 100, ContestEffectEnd + if_random_less_than 100, ContestEffectEnd score +10 end ContestEffect38_score2: @@ -350,7 +350,7 @@ ContestEffect47: score +10 end ContestEffect47_random: - if_random 127, ContestEffectEnd + if_random_less_than 127, ContestEffectEnd score +10 end @@ -385,7 +385,7 @@ ContestEffect32_score2: ContestEffect32_score3: if_cannot_participate MON_1, ContestEffect32_score4 score +5 - jump ContestEffect32_score4 + goto ContestEffect32_score4 end ContestEffect32_score4: if_cannot_participate MON_2, ContestEffectEnd @@ -394,12 +394,12 @@ ContestEffect32_score4: ContestEffect32_score5: if_cannot_participate MON_1, ContestEffect32_score6 score +5 - jump ContestEffect32_score6 + goto ContestEffect32_score6 end ContestEffect32_score6: if_cannot_participate MON_2, ContestEffect32_score7 score +5 - jump ContestEffect32_score7 + goto ContestEffect32_score7 end ContestEffect32_score7: if_cannot_participate MON_3, ContestEffectEnd @@ -416,25 +416,25 @@ ContestEffect46_05: if_excitement_eq 3, ContestEffect46_score3 end ContestEffect46_score1: - if_random 125, ContestEffectEnd + if_random_less_than 125, ContestEffectEnd score -15 end ContestEffect46_score2: - if_random 125, ContestEffectEnd + if_random_less_than 125, ContestEffectEnd score +20 end ContestEffect46_score3: - if_random 125, ContestEffectEnd + if_random_less_than 125, ContestEffectEnd score +15 end ContestEffect46_score4: - if_random 178, ContestEffectEnd + if_random_less_than 178, ContestEffectEnd score +10 end ContestEffect27: if_user_order_eq MON_1, ContestEffectEnd - jump ContestEffect27_55_1 + goto ContestEffect27_55_1 end ContestEffect27_55_1: if_cannot_participate MON_1, ContestEffect27_noscore @@ -444,17 +444,17 @@ ContestEffect27_55_1: if_condition_eq MON_1, 3, ContestEffect27_score3 end ContestEffect27_score1: - if_random 125, ContestEffect27_55_2 + if_random_less_than 125, ContestEffect27_55_2 score +5 if_user_order_more_than MON_2, ContestEffect27_55_2 end ContestEffect27_score2: - if_random 125, ContestEffect27_55_2 + if_random_less_than 125, ContestEffect27_55_2 score +10 if_user_order_more_than MON_2, ContestEffect27_55_2 end ContestEffect27_score3: - if_random 125, ContestEffect27_55_2 + if_random_less_than 125, ContestEffect27_55_2 score +15 if_user_order_more_than MON_2, ContestEffect27_55_2 end @@ -469,17 +469,17 @@ ContestEffect27_55_2: if_condition_eq MON_2, 3, ContestEffect27_score6 end ContestEffect27_score4: - if_random 125, ContestEffect27_55_3 + if_random_less_than 125, ContestEffect27_55_3 score +5 if_user_order_more_than MON_3, ContestEffect27_55_3 end ContestEffect27_score5: - if_random 125, ContestEffect27_55_3 + if_random_less_than 125, ContestEffect27_55_3 score +10 if_user_order_more_than MON_3, ContestEffect27_55_3 end ContestEffect27_score6: - if_random 125, ContestEffect27_55_3 + if_random_less_than 125, ContestEffect27_55_3 score +15 if_user_order_more_than MON_3, ContestEffect27_55_3 end @@ -494,15 +494,15 @@ ContestEffect27_55_3: if_condition_eq MON_3, 3, ContestEffect27_score9 end ContestEffect27_score7: - if_random 125, ContestEffectEnd + if_random_less_than 125, ContestEffectEnd score +5 end ContestEffect27_score8: - if_random 125, ContestEffectEnd + if_random_less_than 125, ContestEffectEnd score +10 end ContestEffect27_score9: - if_random 125, ContestEffectEnd + if_random_less_than 125, ContestEffectEnd score +15 end ContestEffect27_end: @@ -510,44 +510,44 @@ ContestEffect27_end: ContestEffect16or17: if_user_order_eq MON_1, ContestEffectEnd - jump ContestEffect16or17_55 + goto ContestEffect16or17_55 end ContestEffect16or17_55: if_cannot_participate MON_1, ContestEffect16or17_0E_1 if_used_combo_starter_eq MON_1, TRUE, ContestEffect16or17_0E_1 - if_random 125, ContestEffect16or17_0E_1 + if_random_less_than 125, ContestEffect16or17_0E_1 score +2 - contest_58 MON_1, ContestEffect16or17_0E_1 + if_not_completed_combo MON_1, ContestEffect16or17_0E_1 score +8 end ContestEffect16or17_0E_1: if_user_order_eq MON_2, ContestEffectEnd if_cannot_participate MON_2, ContestEffect16or17_0E_2 if_used_combo_starter_eq MON_2, TRUE, ContestEffect16or17_0E_2 - if_random 125, ContestEffect16or17_0E_2 + if_random_less_than 125, ContestEffect16or17_0E_2 score +2 - contest_58 MON_2, ContestEffect16or17_0E_2 + if_not_completed_combo MON_2, ContestEffect16or17_0E_2 score +8 end ContestEffect16or17_0E_2: if_user_order_eq MON_3, ContestEffectEnd if_cannot_participate MON_3, ContestEffectEnd if_used_combo_starter_eq MON_3, TRUE, ContestEffectEnd - if_random 125, ContestEffectEnd + if_random_less_than 125, ContestEffectEnd score +2 - contest_58 MON_3, ContestEffectEnd + if_not_completed_combo MON_3, ContestEffectEnd score +8 end ContestEffect_FollowingMonsNervous: if_user_order_eq MON_4, ContestEffectEnd - jump ContestEffect_FollowingMonsNervous_CheckMon4 + goto ContestEffect_FollowingMonsNervous_CheckMon4 end ContestEffect_FollowingMonsNervous_CheckMon4: if_cannot_participate MON_4, ContestEffect_FollowingMonsNervous_CheckMon3 if_used_combo_starter_eq MON_4, FALSE, ContestEffect_FollowingMonsNervous_CheckMon3 score +5 - if_random 125, ContestEffect16or17_0E_1 + if_random_less_than 125, ContestEffect16or17_0E_1 score +5 end ContestEffect_FollowingMonsNervous_CheckMon3: @@ -555,7 +555,7 @@ ContestEffect_FollowingMonsNervous_CheckMon3: if_cannot_participate MON_3, ContestEffect_FollowingMonsNervous_CheckMon2 if_used_combo_starter_eq MON_3, FALSE, ContestEffect_FollowingMonsNervous_CheckMon2 score +5 - if_random 125, ContestEffect16or17_0E_2 + if_random_less_than 125, ContestEffect16or17_0E_2 score +5 end ContestEffect_FollowingMonsNervous_CheckMon2: @@ -563,17 +563,17 @@ ContestEffect_FollowingMonsNervous_CheckMon2: if_cannot_participate MON_2, ContestEffectEnd if_used_combo_starter_eq MON_2, FALSE, ContestEffectEnd score +5 - if_random 125, ContestEffectEnd + if_random_less_than 125, ContestEffectEnd score +5 end ContestEffect18: if_last_appeal ContestEffect18_score1 - jump ContestEffect18_0E + goto ContestEffect18_0E end ContestEffect18_score1: score +5 - jump ContestEffect18_0E + goto ContestEffect18_0E end ContestEffect18_0E: if_user_order_eq MON_1, ContestEffect18_score2 @@ -585,15 +585,15 @@ ContestEffect18_score2: score -15 end ContestEffect18_random1: - if_random 125, ContestEffectEnd + if_random_less_than 125, ContestEffectEnd score -10 end ContestEffect18_random2: - if_random 125, ContestEffectEnd + if_random_less_than 125, ContestEffectEnd score +5 end ContestEffect18_random3: - if_random 125, ContestEffectEnd + if_random_less_than 125, ContestEffectEnd score +15 end @@ -607,7 +607,7 @@ AI_Erratic: if_contest_type_eq CONTEST_CATEGORY_TOUGH, Erratic_CuteSmartTough end Erratic_CuteSmartTough: - if_random 125, Erratic_NoScoreIncrease + if_random_less_than 125, Erratic_NoScoreIncrease score +10 end Erratic_NoScoreIncrease: @@ -772,23 +772,23 @@ ContestEffect2_2: if_last_appeal ContestEffect2_2_score5 end ContestEffect2_2_score1: - if_random 20, ContestEffectEnd2 + if_random_less_than 20, ContestEffectEnd2 score -15 end ContestEffect2_2_score2: - if_random 40, ContestEffectEnd2 + if_random_less_than 40, ContestEffectEnd2 score -15 end ContestEffect2_2_score3: - if_random 60, ContestEffectEnd2 + if_random_less_than 60, ContestEffectEnd2 score -15 end ContestEffect2_2_score4: - if_random 80, ContestEffectEnd2 + if_random_less_than 80, ContestEffectEnd2 score -15 end ContestEffect2_2_score5: - if_random 20, ContestEffectEnd2 + if_random_less_than 20, ContestEffectEnd2 score +20 end @@ -813,7 +813,7 @@ AI_score2_081DCA4C: score -15 end AI_random1_081DCA4C: - if_random 100, ContestEffectEnd2 + if_random_less_than 100, ContestEffectEnd2 score +10 end AI_effectcheck2_081DCA4C: @@ -824,7 +824,7 @@ AI_score3_081DCA4C: score -5 end AI_random2_081DCA4C: - if_random 125, ContestEffectEnd2 + if_random_less_than 125, ContestEffectEnd2 score +10 end AI_effectcheck3_081DCA4C: @@ -851,7 +851,7 @@ AI_score6_081DCA4C: score -10 end AI_random3_081DCA4C: - if_random 125, ContestEffectEnd2 + if_random_less_than 125, ContestEffectEnd2 score +10 end AI_score7_081DCA4C: diff --git a/include/contest.h b/include/contest.h index d008b8fce..d53aec212 100644 --- a/include/contest.h +++ b/include/contest.h @@ -201,7 +201,7 @@ struct ContestantStatus bool8 repeatedMove:1; bool8 unused2:1; bool8 repeatedPrevMove:1; // never read - bool8 unk15_3:1; + bool8 completedComboFlag:1; bool8 hasJudgesAttention:1; bool8 judgesAttentionWasRemoved:1; bool8 usedComboMove:1; @@ -234,7 +234,7 @@ struct ContestAIInfo /*0x10*/ u8 currentAICheck; /*0x14*/ u32 aiChecks; /*0x18*/ s16 scriptResult; - /*0x1A*/ s16 scriptArr[3]; + /*0x1A*/ s16 vars[3]; /*0x20*/ const u8 *stack[8]; /*0x40*/ u8 stackSize; /*0x41*/ u8 contestantId; diff --git a/src/contest.c b/src/contest.c index a015c5bab..32a8675e5 100644 --- a/src/contest.c +++ b/src/contest.c @@ -3490,7 +3490,7 @@ static bool8 ContestantCanUseTurn(u8 contestant) return TRUE; } -static void ResetContestantStatuses(void) +static void SetContestantStatusesForNextRound(void) { s32 i; @@ -4483,7 +4483,7 @@ static void CalculateAppealMoveImpact(u8 contestant) eContestantStatus[contestant].usedComboMove = TRUE; eContestantStatus[contestant].hasJudgesAttention = FALSE; eContestantStatus[contestant].comboAppealBonus = eContestantStatus[contestant].baseAppeal * eContestantStatus[contestant].completedCombo; - eContestantStatus[contestant].unk15_3 = TRUE; + eContestantStatus[contestant].completedComboFlag = TRUE; // Redundant with completedCombo, used by AI } else { @@ -5172,7 +5172,7 @@ static void Task_ResetForNextRound(u8 taskId) eContest.waitForLink = TRUE; if (IsPlayerLinkLeader()) - ResetContestantStatuses(); + SetContestantStatusesForNextRound(); taskId2 = CreateTask(Task_LinkContest_CommunicateAppealsState, 0); SetTaskFuncWithFollowupFunc(taskId2, Task_LinkContest_CommunicateAppealsState, Task_EndWaitForLink); ContestPrintLinkStandby(); @@ -5180,7 +5180,7 @@ static void Task_ResetForNextRound(u8 taskId) } else { - ResetContestantStatuses(); + SetContestantStatusesForNextRound(); gTasks[taskId].data[0] = 3; } break; diff --git a/src/contest_ai.c b/src/contest_ai.c index b5e91c314..463553998 100644 --- a/src/contest_ai.c +++ b/src/contest_ai.c @@ -30,22 +30,22 @@ static void ContestAICmd_if_user_condition_less_than(void); static void ContestAICmd_if_user_condition_more_than(void); static void ContestAICmd_if_user_condition_eq(void); static void ContestAICmd_if_user_condition_not_eq(void); -static void ContestAICmd_unk_15(void); -static void ContestAICmd_unk_16(void); -static void ContestAICmd_unk_17(void); -static void ContestAICmd_unk_18(void); -static void ContestAICmd_unk_19(void); -static void ContestAICmd_unk_1A(void); -static void ContestAICmd_unk_1B(void); -static void ContestAICmd_unk_1C(void); -static void ContestAICmd_unk_1D(void); -static void ContestAICmd_unk_1E(void); +static void ContestAICmd_get_points(void); +static void ContestAICmd_if_points_less_than(void); +static void ContestAICmd_if_points_more_than(void); +static void ContestAICmd_if_points_eq(void); +static void ContestAICmd_if_points_not_eq(void); +static void ContestAICmd_get_preliminary_points(void); +static void ContestAICmd_if_preliminary_points_less_than(void); +static void ContestAICmd_if_preliminary_points_more_than(void); +static void ContestAICmd_if_preliminary_points_eq(void); +static void ContestAICmd_if_preliminary_points_not_eq(void); static void ContestAICmd_get_contest_type(void); static void ContestAICmd_if_contest_type_eq(void); static void ContestAICmd_if_contest_type_not_eq(void); static void ContestAICmd_get_move_excitement(void); static void ContestAICmd_if_move_excitement_less_than(void); -static void ContestAICmd_if_move_excitement_greater_than(void); +static void ContestAICmd_if_move_excitement_more_than(void); static void ContestAICmd_if_move_excitement_eq(void); static void ContestAICmd_if_move_excitement_not_eq(void); static void ContestAICmd_get_move_effect(void); @@ -56,18 +56,18 @@ static void ContestAICmd_if_move_effect_type_eq(void); static void ContestAICmd_if_move_effect_type_not_eq(void); static void ContestAICmd_check_most_appealing_move(void); static void ContestAICmd_if_most_appealing_move(void); -static void ContestAICmd_unk_2F(void); -static void ContestAICmd_unk_30(void); -static void ContestAICmd_unk_31(void); -static void ContestAICmd_unk_32(void); -static void ContestAICmd_unk_33(void); -static void ContestAICmd_unk_34(void); -static void ContestAICmd_unk_35(void); -static void ContestAICmd_unk_36(void); -static void ContestAICmd_unk_37(void); -static void ContestAICmd_unk_38(void); -static void ContestAICmd_unk_39(void); -static void ContestAICmd_unk_3A(void); +static void ContestAICmd_check_most_jamming_move(void); +static void ContestAICmd_if_most_jamming_move(void); +static void ContestAICmd_get_num_move_hearts(void); +static void ContestAICmd_if_num_move_hearts_less_than(void); +static void ContestAICmd_if_num_move_hearts_more_than(void); +static void ContestAICmd_if_num_move_hearts_eq(void); +static void ContestAICmd_if_num_move_hearts_not_eq(void); +static void ContestAICmd_get_num_move_jam_hearts(void); +static void ContestAICmd_if_num_move_jam_hearts_less_than(void); +static void ContestAICmd_if_num_move_jam_hearts_more_than(void); +static void ContestAICmd_if_num_move_jam_hearts_eq(void); +static void ContestAICmd_if_num_move_jam_hearts_not_eq(void); static void ContestAICmd_get_move_used_count(void); static void ContestAICmd_if_most_used_count_less_than(void); static void ContestAICmd_if_most_used_count_more_than(void); @@ -95,197 +95,197 @@ static void ContestAICmd_if_used_combo_starter_not_eq(void); static void ContestAICmd_check_can_participate(void); static void ContestAICmd_if_can_participate(void); static void ContestAICmd_if_cannot_participate(void); -static void ContestAICmd_get_val_812A188(void); -static void ContestAICmd_unk_57(void); -static void ContestAICmd_contest_58(void); -static void ContestAICmd_unk_59(void); -static void ContestAICmd_unk_5A(void); -static void ContestAICmd_unk_5B(void); -static void ContestAICmd_unk_5C(void); -static void ContestAICmd_unk_5D(void); -static void ContestAICmd_unk_5E(void); -static void ContestAICmd_unk_5F(void); -static void ContestAICmd_unk_60(void); -static void ContestAICmd_unk_61(void); -static void ContestAICmd_unk_62(void); -static void ContestAICmd_unk_63(void); -static void ContestAICmd_unk_64(void); -static void ContestAICmd_unk_65(void); -static void ContestAICmd_unk_66(void); -static void ContestAICmd_unk_67(void); -static void ContestAICmd_unk_68(void); -static void ContestAICmd_unk_69(void); -static void ContestAICmd_unk_6A(void); -static void ContestAICmd_unk_6B(void); -static void ContestAICmd_unk_6C(void); -static void ContestAICmd_unk_6D(void); -static void ContestAICmd_unk_6E(void); -static void ContestAICmd_unk_6F(void); -static void ContestAICmd_unk_70(void); -static void ContestAICmd_unk_71(void); -static void ContestAICmd_unk_72(void); -static void ContestAICmd_unk_73(void); -static void ContestAICmd_unk_74(void); -static void ContestAICmd_unk_75(void); -static void ContestAICmd_unk_76(void); -static void ContestAICmd_unk_77(void); -static void ContestAICmd_unk_78(void); -static void ContestAICmd_unk_79(void); -static void ContestAICmd_unk_7A(void); -static void ContestAICmd_unk_7B(void); -static void ContestAICmd_unk_7C(void); -static void ContestAICmd_if_random(void); -static void ContestAICmd_unk_7E(void); -static void ContestAICmd_jump(void); +static void ContestAICmd_get_completed_combo(void); +static void ContestAICmd_if_completed_combo(void); +static void ContestAICmd_if_not_completed_combo(void); +static void ContestAICmd_get_points_diff(void); +static void ContestAICmd_if_points_more_than_mon(void); +static void ContestAICmd_if_points_less_than_mon(void); +static void ContestAICmd_if_points_eq_mon(void); +static void ContestAICmd_if_points_not_eq_mon(void); +static void ContestAICmd_get_preliminary_points_diff(void); +static void ContestAICmd_if_preliminary_points_more_than_mon(void); +static void ContestAICmd_if_preliminary_points_less_than_mon(void); +static void ContestAICmd_if_preliminary_points_eq_mon(void); +static void ContestAICmd_if_preliminary_points_not_eq_mon(void); +static void ContestAICmd_get_used_moves_effect(void); +static void ContestAICmd_if_used_moves_effect_less_than(void); +static void ContestAICmd_if_used_moves_effect_more_than(void); +static void ContestAICmd_if_used_moves_effect_eq(void); +static void ContestAICmd_if_used_moves_effect_not_eq(void); +static void ContestAICmd_get_used_moves_excitement(void); +static void ContestAICmd_if_used_moves_excitement_less_than(void); +static void ContestAICmd_if_used_moves_excitement_more_than(void); +static void ContestAICmd_if_used_moves_excitement_eq(void); +static void ContestAICmd_if_used_moves_excitement_not_eq(void); +static void ContestAICmd_get_used_moves_effect_type(void); +static void ContestAICmd_if_used_moves_effect_type_eq(void); +static void ContestAICmd_if_used_moves_effect_type_not_eq(void); +static void ContestAICmd_save_result(void); +static void ContestAICmd_setvar(void); +static void ContestAICmd_add(void); +static void ContestAICmd_addvar(void); +static void ContestAICmd_addvar_duplicate(void); +static void ContestAICmd_if_less_than(void); +static void ContestAICmd_if_greater_than(void); +static void ContestAICmd_if_eq(void); +static void ContestAICmd_if_not_eq(void); +static void ContestAICmd_if_less_than_var(void); +static void ContestAICmd_if_greater_than_var(void); +static void ContestAICmd_if_eq_var(void); +static void ContestAICmd_if_not_eq_var(void); +static void ContestAICmd_if_random_less_than(void); +static void ContestAICmd_if_random_greater_than(void); +static void ContestAICmd_goto(void); static void ContestAICmd_call(void); static void ContestAICmd_end(void); static void ContestAICmd_check_user_has_exciting_move(void); static void ContestAICmd_if_user_has_exciting_move(void); static void ContestAICmd_if_user_doesnt_have_exciting_move(void); -static void ContestAICmd_unk_85(void); -static void ContestAICmd_unk_86(void); +static void ContestAICmd_check_user_has_move(void); +static void ContestAICmd_if_user_has_move(void); static void ContestAICmd_if_effect_in_user_moveset(void); typedef void (* ContestAICmdFunc)(void); static const ContestAICmdFunc sContestAICmdTable[] = { - ContestAICmd_score, // 0x00 - 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 - ContestAICmd_if_excitement_eq, // 0x09 - ContestAICmd_if_excitement_not_eq, // 0x0A - ContestAICmd_get_user_order, // 0x0B - ContestAICmd_if_user_order_less_than, // 0x0C - ContestAICmd_if_user_order_more_than, // 0x0D - ContestAICmd_if_user_order_eq, // 0x0E - ContestAICmd_if_user_order_not_eq, // 0x0F - ContestAICmd_get_user_condition, // 0x10 - ContestAICmd_if_user_condition_less_than, // 0x11 - ContestAICmd_if_user_condition_more_than, // 0x12 - ContestAICmd_if_user_condition_eq, // 0x13 - ContestAICmd_if_user_condition_not_eq, // 0x14 - ContestAICmd_unk_15, // 0x15 - ContestAICmd_unk_16, // 0x16 - ContestAICmd_unk_17, // 0x17 - ContestAICmd_unk_18, // 0x18 - ContestAICmd_unk_19, // 0x19 - ContestAICmd_unk_1A, // 0x1A - ContestAICmd_unk_1B, // 0x1B - ContestAICmd_unk_1C, // 0x1C - ContestAICmd_unk_1D, // 0x1D - ContestAICmd_unk_1E, // 0x1E - ContestAICmd_get_contest_type, // 0x1F - ContestAICmd_if_contest_type_eq, // 0x20 - ContestAICmd_if_contest_type_not_eq, // 0x21 - ContestAICmd_get_move_excitement, // 0x22 - ContestAICmd_if_move_excitement_less_than, // 0x23 - ContestAICmd_if_move_excitement_greater_than, // 0x24 - ContestAICmd_if_move_excitement_eq, // 0x25 - ContestAICmd_if_move_excitement_not_eq, // 0x26 - ContestAICmd_get_move_effect, // 0x27 - ContestAICmd_if_move_effect_eq, // 0x28 - ContestAICmd_if_move_effect_not_eq, // 0x29 - ContestAICmd_get_move_effect_type, // 0x2A - ContestAICmd_if_move_effect_type_eq, // 0x2B - ContestAICmd_if_move_effect_type_not_eq, // 0x2C - ContestAICmd_check_most_appealing_move, // 0x2D - ContestAICmd_if_most_appealing_move, // 0x2E - ContestAICmd_unk_2F, // 0x2F - ContestAICmd_unk_30, // 0x30 - ContestAICmd_unk_31, // 0x31 - ContestAICmd_unk_32, // 0x32 - ContestAICmd_unk_33, // 0x33 - ContestAICmd_unk_34, // 0x34 - ContestAICmd_unk_35, // 0x35 - ContestAICmd_unk_36, // 0x36 - ContestAICmd_unk_37, // 0x37 - ContestAICmd_unk_38, // 0x38 - ContestAICmd_unk_39, // 0x39 - ContestAICmd_unk_3A, // 0x3A - ContestAICmd_get_move_used_count, // 0x3B - ContestAICmd_if_most_used_count_less_than, // 0x3C - ContestAICmd_if_most_used_count_more_than, // 0x3D - ContestAICmd_if_most_used_count_eq, // 0x3E - ContestAICmd_if_most_used_count_not_eq, // 0x3F - ContestAICmd_check_combo_starter, // 0x40 - ContestAICmd_if_combo_starter, // 0x41 - ContestAICmd_if_not_combo_starter, // 0x42 - ContestAICmd_check_combo_finisher, // 0x43 - ContestAICmd_if_combo_finisher, // 0x44 - ContestAICmd_if_not_combo_finisher, // 0x45 - ContestAICmd_check_would_finish_combo, // 0x46 - ContestAICmd_if_would_finish_combo, // 0x47 - ContestAICmd_if_would_not_finish_combo, // 0x48 - ContestAICmd_get_condition, // 0x49 - ContestAICmd_if_condition_less_than, // 0x4A - ContestAICmd_if_condition_more_than, // 0x4B - ContestAICmd_if_condition_eq, // 0x4C - ContestAICmd_if_condition_not_eq, // 0x4D - ContestAICmd_get_used_combo_starter, // 0x4E - ContestAICmd_if_used_combo_starter_less_than, // 0x4F - ContestAICmd_if_used_combo_starter_more_than, // 0x50 - ContestAICmd_if_used_combo_starter_eq, // 0x51 - ContestAICmd_if_used_combo_starter_not_eq, // 0x52 - ContestAICmd_check_can_participate, // 0x53 - ContestAICmd_if_can_participate, // 0x54 - ContestAICmd_if_cannot_participate, // 0x55 - ContestAICmd_get_val_812A188, // 0x56 - ContestAICmd_unk_57, // 0x57 - ContestAICmd_contest_58, // 0x58 - ContestAICmd_unk_59, // 0x59 - ContestAICmd_unk_5A, // 0x5A - ContestAICmd_unk_5B, // 0x5B - ContestAICmd_unk_5C, // 0x5C - ContestAICmd_unk_5D, // 0x5D - ContestAICmd_unk_5E, // 0x5E - ContestAICmd_unk_5F, // 0x5F - ContestAICmd_unk_60, // 0x60 - ContestAICmd_unk_61, // 0x61 - ContestAICmd_unk_62, // 0x62 - ContestAICmd_unk_63, // 0x63 - ContestAICmd_unk_64, // 0x64 - ContestAICmd_unk_65, // 0x65 - ContestAICmd_unk_66, // 0x66 - ContestAICmd_unk_67, // 0x67 - ContestAICmd_unk_68, // 0x68 - ContestAICmd_unk_69, // 0x69 - ContestAICmd_unk_6A, // 0x6A - ContestAICmd_unk_6B, // 0x6B - ContestAICmd_unk_6C, // 0x6C - ContestAICmd_unk_6D, // 0x6D - ContestAICmd_unk_6E, // 0x6E - ContestAICmd_unk_6F, // 0x6F - ContestAICmd_unk_70, // 0x70 - ContestAICmd_unk_71, // 0x71 - ContestAICmd_unk_72, // 0x72 - ContestAICmd_unk_73, // 0x73 - ContestAICmd_unk_74, // 0x74 - ContestAICmd_unk_75, // 0x75 - ContestAICmd_unk_76, // 0x76 - ContestAICmd_unk_77, // 0x77 - ContestAICmd_unk_78, // 0x78 - ContestAICmd_unk_79, // 0x79 - ContestAICmd_unk_7A, // 0x7A - ContestAICmd_unk_7B, // 0x7B - ContestAICmd_unk_7C, // 0x7C - ContestAICmd_if_random, // 0x7D - ContestAICmd_unk_7E, // 0x7E - ContestAICmd_jump, // 0x7F - ContestAICmd_call, // 0x80 - ContestAICmd_end, // 0x81 - ContestAICmd_check_user_has_exciting_move, // 0x82 - ContestAICmd_if_user_has_exciting_move, // 0x83 - ContestAICmd_if_user_doesnt_have_exciting_move, // 0x84 - ContestAICmd_unk_85, // 0x85 - ContestAICmd_unk_86, // 0x86 - ContestAICmd_if_effect_in_user_moveset, // 0x87 + ContestAICmd_score, // 0x00 + 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 + ContestAICmd_if_excitement_eq, // 0x09 + ContestAICmd_if_excitement_not_eq, // 0x0A + ContestAICmd_get_user_order, // 0x0B + ContestAICmd_if_user_order_less_than, // 0x0C + ContestAICmd_if_user_order_more_than, // 0x0D + ContestAICmd_if_user_order_eq, // 0x0E + ContestAICmd_if_user_order_not_eq, // 0x0F + ContestAICmd_get_user_condition, // 0x10 + ContestAICmd_if_user_condition_less_than, // 0x11 + ContestAICmd_if_user_condition_more_than, // 0x12 + ContestAICmd_if_user_condition_eq, // 0x13 + ContestAICmd_if_user_condition_not_eq, // 0x14 + ContestAICmd_get_points, // 0x15 + ContestAICmd_if_points_less_than, // 0x16 + ContestAICmd_if_points_more_than, // 0x17 + ContestAICmd_if_points_eq, // 0x18 + ContestAICmd_if_points_not_eq, // 0x19 + ContestAICmd_get_preliminary_points, // 0x1A + ContestAICmd_if_preliminary_points_less_than, // 0x1B + ContestAICmd_if_preliminary_points_more_than, // 0x1C + ContestAICmd_if_preliminary_points_eq, // 0x1D + ContestAICmd_if_preliminary_points_not_eq, // 0x1E + ContestAICmd_get_contest_type, // 0x1F + ContestAICmd_if_contest_type_eq, // 0x20 + ContestAICmd_if_contest_type_not_eq, // 0x21 + ContestAICmd_get_move_excitement, // 0x22 + ContestAICmd_if_move_excitement_less_than, // 0x23 + ContestAICmd_if_move_excitement_more_than, // 0x24 + ContestAICmd_if_move_excitement_eq, // 0x25 + ContestAICmd_if_move_excitement_not_eq, // 0x26 + ContestAICmd_get_move_effect, // 0x27 + ContestAICmd_if_move_effect_eq, // 0x28 + ContestAICmd_if_move_effect_not_eq, // 0x29 + ContestAICmd_get_move_effect_type, // 0x2A + ContestAICmd_if_move_effect_type_eq, // 0x2B + ContestAICmd_if_move_effect_type_not_eq, // 0x2C + ContestAICmd_check_most_appealing_move, // 0x2D + ContestAICmd_if_most_appealing_move, // 0x2E + ContestAICmd_check_most_jamming_move, // 0x2F + ContestAICmd_if_most_jamming_move, // 0x30 + ContestAICmd_get_num_move_hearts, // 0x31 + ContestAICmd_if_num_move_hearts_less_than, // 0x32 + ContestAICmd_if_num_move_hearts_more_than, // 0x33 + ContestAICmd_if_num_move_hearts_eq, // 0x34 + ContestAICmd_if_num_move_hearts_not_eq, // 0x35 + ContestAICmd_get_num_move_jam_hearts, // 0x36 + ContestAICmd_if_num_move_jam_hearts_less_than, // 0x37 + ContestAICmd_if_num_move_jam_hearts_more_than, // 0x38 + ContestAICmd_if_num_move_jam_hearts_eq, // 0x39 + ContestAICmd_if_num_move_jam_hearts_not_eq, // 0x3A + ContestAICmd_get_move_used_count, // 0x3B + ContestAICmd_if_most_used_count_less_than, // 0x3C + ContestAICmd_if_most_used_count_more_than, // 0x3D + ContestAICmd_if_most_used_count_eq, // 0x3E + ContestAICmd_if_most_used_count_not_eq, // 0x3F + ContestAICmd_check_combo_starter, // 0x40 + ContestAICmd_if_combo_starter, // 0x41 + ContestAICmd_if_not_combo_starter, // 0x42 + ContestAICmd_check_combo_finisher, // 0x43 + ContestAICmd_if_combo_finisher, // 0x44 + ContestAICmd_if_not_combo_finisher, // 0x45 + ContestAICmd_check_would_finish_combo, // 0x46 + ContestAICmd_if_would_finish_combo, // 0x47 + ContestAICmd_if_would_not_finish_combo, // 0x48 + ContestAICmd_get_condition, // 0x49 + ContestAICmd_if_condition_less_than, // 0x4A + ContestAICmd_if_condition_more_than, // 0x4B + ContestAICmd_if_condition_eq, // 0x4C + ContestAICmd_if_condition_not_eq, // 0x4D + ContestAICmd_get_used_combo_starter, // 0x4E + ContestAICmd_if_used_combo_starter_less_than, // 0x4F + ContestAICmd_if_used_combo_starter_more_than, // 0x50 + ContestAICmd_if_used_combo_starter_eq, // 0x51 + ContestAICmd_if_used_combo_starter_not_eq, // 0x52 + ContestAICmd_check_can_participate, // 0x53 + ContestAICmd_if_can_participate, // 0x54 + ContestAICmd_if_cannot_participate, // 0x55 + ContestAICmd_get_completed_combo, // 0x56 + ContestAICmd_if_completed_combo, // 0x57 + ContestAICmd_if_not_completed_combo, // 0x58 + ContestAICmd_get_points_diff, // 0x59 + ContestAICmd_if_points_more_than_mon, // 0x5A + ContestAICmd_if_points_less_than_mon, // 0x5B + ContestAICmd_if_points_eq_mon, // 0x5C + ContestAICmd_if_points_not_eq_mon, // 0x5D + ContestAICmd_get_preliminary_points_diff, // 0x5E + ContestAICmd_if_preliminary_points_more_than_mon, // 0x5F + ContestAICmd_if_preliminary_points_less_than_mon, // 0x60 + ContestAICmd_if_preliminary_points_eq_mon, // 0x61 + ContestAICmd_if_preliminary_points_not_eq_mon, // 0x62 + ContestAICmd_get_used_moves_effect, // 0x63 + ContestAICmd_if_used_moves_effect_less_than, // 0x64 + ContestAICmd_if_used_moves_effect_more_than, // 0x65 + ContestAICmd_if_used_moves_effect_eq, // 0x66 + ContestAICmd_if_used_moves_effect_not_eq, // 0x67 + ContestAICmd_get_used_moves_excitement, // 0x68 + ContestAICmd_if_used_moves_excitement_less_than, // 0x69 + ContestAICmd_if_used_moves_excitement_more_than, // 0x6A + ContestAICmd_if_used_moves_excitement_eq, // 0x6B + ContestAICmd_if_used_moves_excitement_not_eq, // 0x6C + ContestAICmd_get_used_moves_effect_type, // 0x6D + ContestAICmd_if_used_moves_effect_type_eq, // 0x6E + ContestAICmd_if_used_moves_effect_type_not_eq, // 0x6F + ContestAICmd_save_result, // 0x70 + ContestAICmd_setvar, // 0x71 + ContestAICmd_add, // 0x72 + ContestAICmd_addvar, // 0x73 + ContestAICmd_addvar_duplicate, // 0x74 + ContestAICmd_if_less_than, // 0x75 + ContestAICmd_if_greater_than, // 0x76 + ContestAICmd_if_eq, // 0x77 + ContestAICmd_if_not_eq, // 0x78 + ContestAICmd_if_less_than_var, // 0x79 + ContestAICmd_if_greater_than_var, // 0x7A + ContestAICmd_if_eq_var, // 0x7B + ContestAICmd_if_not_eq_var, // 0x7C + ContestAICmd_if_random_less_than, // 0x7D + ContestAICmd_if_random_greater_than, // 0x7E + ContestAICmd_goto, // 0x7F + ContestAICmd_call, // 0x80 + ContestAICmd_end, // 0x81 + ContestAICmd_check_user_has_exciting_move, // 0x82 + ContestAICmd_if_user_has_exciting_move, // 0x83 + ContestAICmd_if_user_doesnt_have_exciting_move, // 0x84 + ContestAICmd_check_user_has_move, // 0x85 + ContestAICmd_if_user_has_move, // 0x86 + ContestAICmd_if_effect_in_user_moveset, // 0x87 }; static void ContestAI_DoAIProcessing(void); @@ -588,15 +588,15 @@ static void ContestAICmd_if_user_condition_not_eq(void) gAIScriptPtr += 5; } -static void ContestAICmd_unk_15(void) +static void ContestAICmd_get_points(void) { eContestAI.scriptResult = eContestantStatus[eContestAI.contestantId].pointTotal; gAIScriptPtr += 1; } -static void ContestAICmd_unk_16(void) +static void ContestAICmd_if_points_less_than(void) { - ContestAICmd_unk_15(); + ContestAICmd_get_points(); if (eContestAI.scriptResult < (s16)T1_READ_16(gAIScriptPtr + 0)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); @@ -604,9 +604,9 @@ static void ContestAICmd_unk_16(void) gAIScriptPtr += 6; } -static void ContestAICmd_unk_17(void) +static void ContestAICmd_if_points_more_than(void) { - ContestAICmd_unk_15(); + ContestAICmd_get_points(); if (eContestAI.scriptResult > (s16)T1_READ_16(gAIScriptPtr + 0)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); @@ -614,9 +614,9 @@ static void ContestAICmd_unk_17(void) gAIScriptPtr += 6; } -static void ContestAICmd_unk_18(void) +static void ContestAICmd_if_points_eq(void) { - ContestAICmd_unk_15(); + ContestAICmd_get_points(); if (eContestAI.scriptResult == (s16)T1_READ_16(gAIScriptPtr + 0)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); @@ -624,9 +624,9 @@ static void ContestAICmd_unk_18(void) gAIScriptPtr += 6; } -static void ContestAICmd_unk_19(void) +static void ContestAICmd_if_points_not_eq(void) { - ContestAICmd_unk_15(); + ContestAICmd_get_points(); if (eContestAI.scriptResult != (s16)T1_READ_16(gAIScriptPtr + 0)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); @@ -634,15 +634,15 @@ static void ContestAICmd_unk_19(void) gAIScriptPtr += 6; } -static void ContestAICmd_unk_1A(void) +static void ContestAICmd_get_preliminary_points(void) { eContestAI.scriptResult = gContestMonRound1Points[eContestAI.contestantId]; gAIScriptPtr += 1; } -static void ContestAICmd_unk_1B(void) +static void ContestAICmd_if_preliminary_points_less_than(void) { - ContestAICmd_unk_1A(); + ContestAICmd_get_preliminary_points(); if (eContestAI.scriptResult < (s16)T1_READ_16(gAIScriptPtr + 0)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); @@ -650,9 +650,9 @@ static void ContestAICmd_unk_1B(void) gAIScriptPtr += 6; } -static void ContestAICmd_unk_1C(void) +static void ContestAICmd_if_preliminary_points_more_than(void) { - ContestAICmd_unk_1A(); + ContestAICmd_get_preliminary_points(); if (eContestAI.scriptResult > (s16)T1_READ_16(gAIScriptPtr + 0)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); @@ -660,9 +660,9 @@ static void ContestAICmd_unk_1C(void) gAIScriptPtr += 6; } -static void ContestAICmd_unk_1D(void) +static void ContestAICmd_if_preliminary_points_eq(void) { - ContestAICmd_unk_1A(); + ContestAICmd_get_preliminary_points(); if (eContestAI.scriptResult == (s16)T1_READ_16(gAIScriptPtr + 0)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); @@ -670,9 +670,9 @@ static void ContestAICmd_unk_1D(void) gAIScriptPtr += 6; } -static void ContestAICmd_unk_1E(void) +static void ContestAICmd_if_preliminary_points_not_eq(void) { - ContestAICmd_unk_1A(); + ContestAICmd_get_preliminary_points(); if (eContestAI.scriptResult != (s16)T1_READ_16(gAIScriptPtr + 0)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); @@ -722,7 +722,7 @@ static void ContestAICmd_if_move_excitement_less_than(void) gAIScriptPtr += 5; } -static void ContestAICmd_if_move_excitement_greater_than(void) +static void ContestAICmd_if_move_excitement_more_than(void) { ContestAICmd_get_move_excitement(); @@ -839,7 +839,7 @@ static void ContestAICmd_if_most_appealing_move(void) gAIScriptPtr += 4; } -static void ContestAICmd_unk_2F(void) +static void ContestAICmd_check_most_jamming_move(void) { int i; u16 move = gContestMons[eContestAI.contestantId].moves[eContestAI.nextMoveIndex]; @@ -848,7 +848,7 @@ static void ContestAICmd_unk_2F(void) for (i = 0; i < MAX_MON_MOVES; i++) { u16 newMove = gContestMons[eContestAI.contestantId].moves[i]; - if (newMove != 0 && jam < gContestEffects[gContestMoves[newMove].effect].jam) + if (newMove != MOVE_NONE && jam < gContestEffects[gContestMoves[newMove].effect].jam) break; } @@ -860,9 +860,9 @@ static void ContestAICmd_unk_2F(void) gAIScriptPtr += 1; } -static void ContestAICmd_unk_30(void) +static void ContestAICmd_if_most_jamming_move(void) { - ContestAICmd_unk_2F(); + ContestAICmd_check_most_jamming_move(); if (eContestAI.scriptResult != FALSE) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); @@ -870,7 +870,7 @@ static void ContestAICmd_unk_30(void) gAIScriptPtr += 5; } -static void ContestAICmd_unk_31(void) +static void ContestAICmd_get_num_move_hearts(void) { u16 move = gContestMons[eContestAI.contestantId].moves[eContestAI.nextMoveIndex]; @@ -878,9 +878,9 @@ static void ContestAICmd_unk_31(void) gAIScriptPtr += 1; } -static void ContestAICmd_unk_32(void) +static void ContestAICmd_if_num_move_hearts_less_than(void) { - ContestAICmd_unk_31(); + ContestAICmd_get_num_move_hearts(); if (eContestAI.scriptResult < gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); @@ -888,9 +888,9 @@ static void ContestAICmd_unk_32(void) gAIScriptPtr += 5; } -static void ContestAICmd_unk_33(void) +static void ContestAICmd_if_num_move_hearts_more_than(void) { - ContestAICmd_unk_31(); + ContestAICmd_get_num_move_hearts(); if (eContestAI.scriptResult > gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); @@ -898,9 +898,9 @@ static void ContestAICmd_unk_33(void) gAIScriptPtr += 5; } -static void ContestAICmd_unk_34(void) +static void ContestAICmd_if_num_move_hearts_eq(void) { - ContestAICmd_unk_31(); + ContestAICmd_get_num_move_hearts(); if (eContestAI.scriptResult == gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); @@ -908,9 +908,9 @@ static void ContestAICmd_unk_34(void) gAIScriptPtr += 5; } -static void ContestAICmd_unk_35(void) +static void ContestAICmd_if_num_move_hearts_not_eq(void) { - ContestAICmd_unk_31(); + ContestAICmd_get_num_move_hearts(); if (eContestAI.scriptResult != gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); @@ -918,7 +918,7 @@ static void ContestAICmd_unk_35(void) gAIScriptPtr += 5; } -static void ContestAICmd_unk_36(void) +static void ContestAICmd_get_num_move_jam_hearts(void) { u16 move = gContestMons[eContestAI.contestantId].moves[eContestAI.nextMoveIndex]; @@ -926,9 +926,9 @@ static void ContestAICmd_unk_36(void) gAIScriptPtr += 1; } -static void ContestAICmd_unk_37(void) +static void ContestAICmd_if_num_move_jam_hearts_less_than(void) { - ContestAICmd_unk_36(); + ContestAICmd_get_num_move_jam_hearts(); if (eContestAI.scriptResult < gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); @@ -936,9 +936,9 @@ static void ContestAICmd_unk_37(void) gAIScriptPtr += 5; } -static void ContestAICmd_unk_38(void) +static void ContestAICmd_if_num_move_jam_hearts_more_than(void) { - ContestAICmd_unk_36(); + ContestAICmd_get_num_move_jam_hearts(); if (eContestAI.scriptResult > gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); @@ -946,9 +946,9 @@ static void ContestAICmd_unk_38(void) gAIScriptPtr += 5; } -static void ContestAICmd_unk_39(void) +static void ContestAICmd_if_num_move_jam_hearts_eq(void) { - ContestAICmd_unk_36(); + ContestAICmd_get_num_move_jam_hearts(); if (eContestAI.scriptResult == gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); @@ -956,9 +956,9 @@ static void ContestAICmd_unk_39(void) gAIScriptPtr += 5; } -static void ContestAICmd_unk_3A(void) +static void ContestAICmd_if_num_move_jam_hearts_not_eq(void) { - ContestAICmd_unk_36(); + ContestAICmd_get_num_move_jam_hearts(); if (eContestAI.scriptResult != gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); @@ -1050,7 +1050,7 @@ static void ContestAICmd_if_combo_starter(void) { ContestAICmd_check_combo_starter(); - if (eContestAI.scriptResult != 0) + if (eContestAI.scriptResult) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1060,7 +1060,7 @@ static void ContestAICmd_if_not_combo_starter(void) { ContestAICmd_check_combo_starter(); - if (eContestAI.scriptResult == 0) + if (!eContestAI.scriptResult) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1096,7 +1096,7 @@ static void ContestAICmd_if_combo_finisher(void) { ContestAICmd_check_combo_finisher(); - if (eContestAI.scriptResult != 0) + if (eContestAI.scriptResult) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1106,7 +1106,7 @@ static void ContestAICmd_if_not_combo_finisher(void) { ContestAICmd_check_combo_finisher(); - if (eContestAI.scriptResult == 0) + if (!eContestAI.scriptResult) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1131,7 +1131,7 @@ static void ContestAICmd_if_would_finish_combo(void) { ContestAICmd_check_would_finish_combo(); - if (eContestAI.scriptResult != 0) + if (eContestAI.scriptResult) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1141,7 +1141,7 @@ static void ContestAICmd_if_would_not_finish_combo(void) { ContestAICmd_check_would_finish_combo(); - if (eContestAI.scriptResult == 0) + if (!eContestAI.scriptResult) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1261,7 +1261,7 @@ static void ContestAICmd_if_can_participate(void) { ContestAICmd_check_can_participate(); - if (eContestAI.scriptResult != 0) + if (eContestAI.scriptResult) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1271,41 +1271,41 @@ static void ContestAICmd_if_cannot_participate(void) { ContestAICmd_check_can_participate(); - if (eContestAI.scriptResult == 0) + if (!eContestAI.scriptResult) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; } -static void ContestAICmd_get_val_812A188(void) +static void ContestAICmd_get_completed_combo(void) { u8 contestant = GetContestantIdByTurn(gAIScriptPtr[1]); - eContestAI.scriptResult = eContestantStatus[contestant].unk15_3; + eContestAI.scriptResult = eContestantStatus[contestant].completedComboFlag; gAIScriptPtr += 2; } -static void ContestAICmd_unk_57(void) +static void ContestAICmd_if_completed_combo(void) { - ContestAICmd_get_val_812A188(); + ContestAICmd_get_completed_combo(); - if (eContestAI.scriptResult != 0) + if (eContestAI.scriptResult) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; } -static void ContestAICmd_contest_58(void) +static void ContestAICmd_if_not_completed_combo(void) { - ContestAICmd_get_val_812A188(); + ContestAICmd_get_completed_combo(); - if (eContestAI.scriptResult == 0) + if (!eContestAI.scriptResult) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; } -static void ContestAICmd_unk_59(void) +static void ContestAICmd_get_points_diff(void) { u8 contestant = GetContestantIdByTurn(gAIScriptPtr[1]); @@ -1313,9 +1313,9 @@ static void ContestAICmd_unk_59(void) gAIScriptPtr += 2; } -static void ContestAICmd_unk_5A(void) +static void ContestAICmd_if_points_more_than_mon(void) { - ContestAICmd_unk_59(); + ContestAICmd_get_points_diff(); if (eContestAI.scriptResult < 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); @@ -1323,9 +1323,9 @@ static void ContestAICmd_unk_5A(void) gAIScriptPtr += 4; } -static void ContestAICmd_unk_5B(void) +static void ContestAICmd_if_points_less_than_mon(void) { - ContestAICmd_unk_59(); + ContestAICmd_get_points_diff(); if (eContestAI.scriptResult > 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); @@ -1333,9 +1333,9 @@ static void ContestAICmd_unk_5B(void) gAIScriptPtr += 4; } -static void ContestAICmd_unk_5C(void) +static void ContestAICmd_if_points_eq_mon(void) { - ContestAICmd_unk_59(); + ContestAICmd_get_points_diff(); if (eContestAI.scriptResult == 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); @@ -1343,9 +1343,9 @@ static void ContestAICmd_unk_5C(void) gAIScriptPtr += 4; } -static void ContestAICmd_unk_5D(void) +static void ContestAICmd_if_points_not_eq_mon(void) { - ContestAICmd_unk_59(); + ContestAICmd_get_points_diff(); if (eContestAI.scriptResult != 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); @@ -1353,7 +1353,7 @@ static void ContestAICmd_unk_5D(void) gAIScriptPtr += 4; } -static void ContestAICmd_unk_5E(void) +static void ContestAICmd_get_preliminary_points_diff(void) { u8 contestant = GetContestantIdByTurn(gAIScriptPtr[1]); @@ -1361,9 +1361,9 @@ static void ContestAICmd_unk_5E(void) gAIScriptPtr += 2; } -static void ContestAICmd_unk_5F(void) +static void ContestAICmd_if_preliminary_points_more_than_mon(void) { - ContestAICmd_unk_5E(); + ContestAICmd_get_preliminary_points_diff(); if (eContestAI.scriptResult < 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); @@ -1371,9 +1371,9 @@ static void ContestAICmd_unk_5F(void) gAIScriptPtr += 4; } -static void ContestAICmd_unk_60(void) +static void ContestAICmd_if_preliminary_points_less_than_mon(void) { - ContestAICmd_unk_5E(); + ContestAICmd_get_preliminary_points_diff(); if (eContestAI.scriptResult > 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); @@ -1381,9 +1381,9 @@ static void ContestAICmd_unk_60(void) gAIScriptPtr += 4; } -static void ContestAICmd_unk_61(void) +static void ContestAICmd_if_preliminary_points_eq_mon(void) { - ContestAICmd_unk_5E(); + ContestAICmd_get_preliminary_points_diff(); if (eContestAI.scriptResult == 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); @@ -1391,9 +1391,9 @@ static void ContestAICmd_unk_61(void) gAIScriptPtr += 4; } -static void ContestAICmd_unk_62(void) +static void ContestAICmd_if_preliminary_points_not_eq_mon(void) { - ContestAICmd_unk_5E(); + ContestAICmd_get_preliminary_points_diff(); if (eContestAI.scriptResult != 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); @@ -1401,19 +1401,19 @@ static void ContestAICmd_unk_62(void) gAIScriptPtr += 4; } -static void ContestAICmd_unk_63(void) +static void ContestAICmd_get_used_moves_effect(void) { u8 contestant = GetContestantIdByTurn(gAIScriptPtr[1]); - u8 turn = gAIScriptPtr[2]; - u16 move = eContest.moveHistory[turn][contestant]; + u8 round = gAIScriptPtr[2]; + u16 move = eContest.moveHistory[round][contestant]; eContestAI.scriptResult = gContestMoves[move].effect; gAIScriptPtr += 3; } -static void ContestAICmd_unk_64(void) +static void ContestAICmd_if_used_moves_effect_less_than(void) { - ContestAICmd_unk_63(); + ContestAICmd_get_used_moves_effect(); if (eContestAI.scriptResult < gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); @@ -1421,9 +1421,9 @@ static void ContestAICmd_unk_64(void) gAIScriptPtr += 5; } -static void ContestAICmd_unk_65(void) +static void ContestAICmd_if_used_moves_effect_more_than(void) { - ContestAICmd_unk_63(); + ContestAICmd_get_used_moves_effect(); if (eContestAI.scriptResult > gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); @@ -1431,9 +1431,9 @@ static void ContestAICmd_unk_65(void) gAIScriptPtr += 5; } -static void ContestAICmd_unk_66(void) +static void ContestAICmd_if_used_moves_effect_eq(void) { - ContestAICmd_unk_63(); + ContestAICmd_get_used_moves_effect(); if (eContestAI.scriptResult == gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); @@ -1441,9 +1441,9 @@ static void ContestAICmd_unk_66(void) gAIScriptPtr += 5; } -static void ContestAICmd_unk_67(void) +static void ContestAICmd_if_used_moves_effect_not_eq(void) { - ContestAICmd_unk_63(); + ContestAICmd_get_used_moves_effect(); if (eContestAI.scriptResult != gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); @@ -1451,19 +1451,19 @@ static void ContestAICmd_unk_67(void) gAIScriptPtr += 5; } -static void ContestAICmd_unk_68(void) +static void ContestAICmd_get_used_moves_excitement(void) { u8 contestant = GetContestantIdByTurn(gAIScriptPtr[1]); - u8 turn = gAIScriptPtr[2]; - s8 result = eContest.excitementHistory[turn][contestant]; + u8 round = gAIScriptPtr[2]; + s8 result = eContest.excitementHistory[round][contestant]; eContestAI.scriptResult = result; gAIScriptPtr += 3; } -static void ContestAICmd_unk_69(void) +static void ContestAICmd_if_used_moves_excitement_less_than(void) { - ContestAICmd_unk_68(); + ContestAICmd_get_used_moves_excitement(); if (eContestAI.scriptResult < gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); @@ -1471,9 +1471,9 @@ static void ContestAICmd_unk_69(void) gAIScriptPtr += 5; } -static void ContestAICmd_unk_6A(void) +static void ContestAICmd_if_used_moves_excitement_more_than(void) { - ContestAICmd_unk_68(); + ContestAICmd_get_used_moves_excitement(); if (eContestAI.scriptResult > gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); @@ -1481,9 +1481,9 @@ static void ContestAICmd_unk_6A(void) gAIScriptPtr += 5; } -static void ContestAICmd_unk_6B(void) +static void ContestAICmd_if_used_moves_excitement_eq(void) { - ContestAICmd_unk_68(); + ContestAICmd_get_used_moves_excitement(); if (eContestAI.scriptResult == gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); @@ -1491,9 +1491,9 @@ static void ContestAICmd_unk_6B(void) gAIScriptPtr += 5; } -static void ContestAICmd_unk_6C(void) +static void ContestAICmd_if_used_moves_excitement_not_eq(void) { - ContestAICmd_unk_68(); + ContestAICmd_get_used_moves_excitement(); if (eContestAI.scriptResult != gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); @@ -1501,19 +1501,19 @@ static void ContestAICmd_unk_6C(void) gAIScriptPtr += 5; } -static void ContestAICmd_unk_6D(void) +static void ContestAICmd_get_used_moves_effect_type(void) { u8 contestant = GetContestantIdByTurn(gAIScriptPtr[1]); - u8 turn = gAIScriptPtr[2]; - u16 move = eContest.moveHistory[turn][contestant]; + u8 round = gAIScriptPtr[2]; + u16 move = eContest.moveHistory[round][contestant]; eContestAI.scriptResult = gContestEffects[gContestMoves[move].effect].effectType; gAIScriptPtr += 3; } -static void ContestAICmd_unk_6E(void) +static void ContestAICmd_if_used_moves_effect_type_eq(void) { - ContestAICmd_unk_6D(); + ContestAICmd_get_used_moves_effect_type(); if (eContestAI.scriptResult == gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); @@ -1521,9 +1521,9 @@ static void ContestAICmd_unk_6E(void) gAIScriptPtr += 5; } -static void ContestAICmd_unk_6F(void) +static void ContestAICmd_if_used_moves_effect_type_not_eq(void) { - ContestAICmd_unk_6D(); + ContestAICmd_get_used_moves_effect_type(); if (eContestAI.scriptResult != gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); @@ -1531,119 +1531,128 @@ static void ContestAICmd_unk_6F(void) gAIScriptPtr += 5; } -static void ContestAICmd_unk_70(void) +static void ContestAICmd_save_result(void) { - eContestAI.scriptArr[gAIScriptPtr[1]] = eContestAI.scriptResult; + eContestAI.vars[gAIScriptPtr[1]] = eContestAI.scriptResult; gAIScriptPtr += 2; } -static void ContestAICmd_unk_71(void) +static void ContestAICmd_setvar(void) { - eContestAI.scriptArr[gAIScriptPtr[1]] = T1_READ_16(gAIScriptPtr + 2); + eContestAI.vars[gAIScriptPtr[1]] = T1_READ_16(gAIScriptPtr + 2); gAIScriptPtr += 4; } -static void ContestAICmd_unk_72(void) +static void ContestAICmd_add(void) { // wtf? shouldn't T1_READ_16 work here? why the signed 8 load by gAIScriptPtr[2]? - eContestAI.scriptArr[gAIScriptPtr[1]] += ((s8)gAIScriptPtr[2] | gAIScriptPtr[3] << 8); + eContestAI.vars[gAIScriptPtr[1]] += ((s8)gAIScriptPtr[2] | gAIScriptPtr[3] << 8); gAIScriptPtr += 4; } -static void ContestAICmd_unk_73(void) +static void ContestAICmd_addvar(void) { - eContestAI.scriptArr[gAIScriptPtr[1]] += eContestAI.scriptArr[gAIScriptPtr[2]]; + eContestAI.vars[gAIScriptPtr[1]] += eContestAI.vars[gAIScriptPtr[2]]; gAIScriptPtr += 3; } -static void ContestAICmd_unk_74(void) +static void ContestAICmd_addvar_duplicate(void) { - eContestAI.scriptArr[gAIScriptPtr[1]] += eContestAI.scriptArr[gAIScriptPtr[2]]; + eContestAI.vars[gAIScriptPtr[1]] += eContestAI.vars[gAIScriptPtr[2]]; gAIScriptPtr += 3; } -static void ContestAICmd_unk_75(void) +static void ContestAICmd_if_less_than(void) { - if (eContestAI.scriptArr[gAIScriptPtr[1]] < T1_READ_16(gAIScriptPtr + 2)) + if (eContestAI.vars[gAIScriptPtr[1]] < T1_READ_16(gAIScriptPtr + 2)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4); else gAIScriptPtr += 8; } -static void ContestAICmd_unk_76(void) +static void ContestAICmd_if_greater_than(void) { - if (eContestAI.scriptArr[gAIScriptPtr[1]] > T1_READ_16(gAIScriptPtr + 2)) + if (eContestAI.vars[gAIScriptPtr[1]] > T1_READ_16(gAIScriptPtr + 2)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4); else gAIScriptPtr += 8; } -static void ContestAICmd_unk_77(void) +static void ContestAICmd_if_eq(void) { - if (eContestAI.scriptArr[gAIScriptPtr[1]] == T1_READ_16(gAIScriptPtr + 2)) + if (eContestAI.vars[gAIScriptPtr[1]] == T1_READ_16(gAIScriptPtr + 2)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4); else gAIScriptPtr += 8; } -static void ContestAICmd_unk_78(void) +static void ContestAICmd_if_not_eq(void) { - if (eContestAI.scriptArr[gAIScriptPtr[1]] != T1_READ_16(gAIScriptPtr + 2)) + if (eContestAI.vars[gAIScriptPtr[1]] != T1_READ_16(gAIScriptPtr + 2)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4); else gAIScriptPtr += 8; } -static void ContestAICmd_unk_79(void) +static void ContestAICmd_if_less_than_var(void) { - if (eContestAI.scriptArr[gAIScriptPtr[1]] < (eContestAI.scriptArr[gAIScriptPtr[2]])) + if (eContestAI.vars[gAIScriptPtr[1]] < (eContestAI.vars[gAIScriptPtr[2]])) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3); else gAIScriptPtr += 7; } -static void ContestAICmd_unk_7A(void) +static void ContestAICmd_if_greater_than_var(void) { - if (eContestAI.scriptArr[gAIScriptPtr[1]] > (eContestAI.scriptArr[gAIScriptPtr[2]])) + if (eContestAI.vars[gAIScriptPtr[1]] > (eContestAI.vars[gAIScriptPtr[2]])) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3); else gAIScriptPtr += 7; } -static void ContestAICmd_unk_7B(void) +static void ContestAICmd_if_eq_var(void) { - if (eContestAI.scriptArr[gAIScriptPtr[1]] == (eContestAI.scriptArr[gAIScriptPtr[2]])) + if (eContestAI.vars[gAIScriptPtr[1]] == (eContestAI.vars[gAIScriptPtr[2]])) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3); else gAIScriptPtr += 7; } -static void ContestAICmd_unk_7C(void) +static void ContestAICmd_if_not_eq_var(void) { - if (eContestAI.scriptArr[gAIScriptPtr[1]] != (eContestAI.scriptArr[gAIScriptPtr[2]])) + if (eContestAI.vars[gAIScriptPtr[1]] != (eContestAI.vars[gAIScriptPtr[2]])) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3); else gAIScriptPtr += 7; } -static void ContestAICmd_if_random(void) +// UB: Should just be comparing to gAIScriptPtr[1] in the functions below +// With the values passed to if_random_less_than this goes way OOB on vars +static void ContestAICmd_if_random_less_than(void) { - if ((Random() & 0xFF) < eContestAI.scriptArr[gAIScriptPtr[1]]) +#ifndef UBFIX + if ((Random() & 0xFF) < eContestAI.vars[gAIScriptPtr[1]]) +#else + if ((Random() & 0xFF) < gAIScriptPtr[1]) +#endif gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); else gAIScriptPtr += 6; } -static void ContestAICmd_unk_7E(void) +static void ContestAICmd_if_random_greater_than(void) { - if ((Random() & 0xFF) > eContestAI.scriptArr[gAIScriptPtr[1]]) +#ifndef UBFIX + if (((Random()) & 0xFF) > eContestAI.vars[gAIScriptPtr[1]]) +#else + if (((Random()) & 0xFF) > gAIScriptPtr[1]) +#endif gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); else gAIScriptPtr += 6; } -// jump -static void ContestAICmd_jump(void) +static void ContestAICmd_goto(void) { gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); } @@ -1704,7 +1713,7 @@ static void ContestAICmd_if_user_has_exciting_move(void) { ContestAICmd_check_user_has_exciting_move(); - if (eContestAI.scriptResult != 0) + if (eContestAI.scriptResult) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1714,37 +1723,37 @@ static void ContestAICmd_if_user_doesnt_have_exciting_move(void) { ContestAICmd_check_user_has_exciting_move(); - if (eContestAI.scriptResult == 0) + if (!eContestAI.scriptResult) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; } -static void ContestAICmd_unk_85(void) +static void ContestAICmd_check_user_has_move(void) { - int result = 0; + int hasMove = FALSE; int i; - u16 arg = T1_READ_16(gAIScriptPtr + 1); + u16 targetMove = T1_READ_16(gAIScriptPtr + 1); for (i = 0; i < MAX_MON_MOVES; i++) { u16 move = gContestMons[eContestAI.contestantId].moves[i]; - if (move == arg) + if (move == targetMove) { - result = 1; + hasMove = TRUE; break; } } - eContestAI.scriptResult = result; + eContestAI.scriptResult = hasMove; gAIScriptPtr += 3; } -static void ContestAICmd_unk_86(void) +static void ContestAICmd_if_user_has_move(void) { - ContestAICmd_unk_85(); + ContestAICmd_check_user_has_move(); - if (eContestAI.scriptResult != 0) + if (eContestAI.scriptResult) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1752,9 +1761,9 @@ static void ContestAICmd_unk_86(void) static void ContestAICmd_if_effect_in_user_moveset(void) { - ContestAICmd_unk_85(); + ContestAICmd_check_user_has_move(); - if (eContestAI.scriptResult == 0) + if (!eContestAI.scriptResult) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; diff --git a/src/contest_effect.c b/src/contest_effect.c index 8d1bbb298..1fe21daab 100644 --- a/src/contest_effect.c +++ b/src/contest_effect.c @@ -68,7 +68,10 @@ bool8 AreMovesContestCombo(u16 lastMove, u16 nextMove) if (lastMoveComboStarterId == 0) return FALSE; - else if (lastMoveComboStarterId == nextMoveComboMoves[0] || lastMoveComboStarterId == nextMoveComboMoves[1] || lastMoveComboStarterId == nextMoveComboMoves[2] || lastMoveComboStarterId == nextMoveComboMoves[3]) + else if (lastMoveComboStarterId == nextMoveComboMoves[0] + || lastMoveComboStarterId == nextMoveComboMoves[1] + || lastMoveComboStarterId == nextMoveComboMoves[2] + || lastMoveComboStarterId == nextMoveComboMoves[3]) return gComboStarterLookupTable[lastMoveComboStarterId]; else return FALSE; |