diff options
author | Diegoisawesome <Diegoisawesome@users.noreply.github.com> | 2018-08-16 14:16:00 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-16 14:16:00 -0700 |
commit | 1fd1faef922b1aba700c65ac0c7c647e4e37e1df (patch) | |
tree | d2e95d116ee3515fbaeb38169c63f40f80c5e13a | |
parent | 2b81db7acecd8baa3e343de66fd229040ec81381 (diff) | |
parent | 5dd1afd383fafda3bb8b956073e426ffad42fa00 (diff) |
Merge pull request #297 from DizzyEggg/contest_table
Decompile contest_effect
-rw-r--r-- | asm/contest.s | 36 | ||||
-rw-r--r-- | asm/contest_effect.s | 3175 | ||||
-rw-r--r-- | data/contest_effect.s | 22 | ||||
-rw-r--r-- | data/contest_effect_function_table.inc | 50 | ||||
-rw-r--r-- | data/contest_effects.inc | 289 | ||||
-rw-r--r-- | data/contest_moves.inc | 2486 | ||||
-rw-r--r-- | include/contest.h | 1 | ||||
-rw-r--r-- | ld_script.txt | 4 | ||||
-rw-r--r-- | src/contest_effect.c | 1080 | ||||
-rw-r--r-- | src/data/contest_moves.h | 3008 | ||||
-rw-r--r-- | src/pokemon_summary_screen.c | 48 |
11 files changed, 4133 insertions, 6066 deletions
diff --git a/asm/contest.s b/asm/contest.s index b67450eef..b984a98b6 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -3233,7 +3233,7 @@ _080DD166: ands r0, r2 strb r0, [r1, 0x15] _080DD1B4: - ldr r0, =gContestEffectFunctionTable + ldr r0, =gContestEffectFuncs add r0, r9 ldr r0, [r0] bl _call_via_r0 @@ -3506,8 +3506,8 @@ _080DD3C4: .pool thumb_func_end sub_80DD080 - thumb_func_start sub_80DD3D4 -sub_80DD3D4: @ 80DD3D4 + thumb_func_start SetContestantEffectStringID +SetContestantEffectStringID: @ 80DD3D4 lsls r0, 24 lsrs r0, 24 ldr r2, =gContestResources @@ -3520,10 +3520,10 @@ sub_80DD3D4: @ 80DD3D4 strb r1, [r2, 0x13] bx lr .pool - thumb_func_end sub_80DD3D4 + thumb_func_end SetContestantEffectStringID - thumb_func_start sub_80DD3F0 -sub_80DD3F0: @ 80DD3F0 + thumb_func_start SetContestantEffectStringID2 +SetContestantEffectStringID2: @ 80DD3F0 lsls r0, 24 lsrs r0, 24 ldr r2, =gContestResources @@ -3536,10 +3536,10 @@ sub_80DD3F0: @ 80DD3F0 strb r1, [r2, 0x14] bx lr .pool - thumb_func_end sub_80DD3F0 + thumb_func_end SetContestantEffectStringID2 - thumb_func_start sub_80DD40C -sub_80DD40C: @ 80DD40C + thumb_func_start SetStartledString +SetStartledString: @ 80DD40C push {lr} lsls r0, 24 lsrs r0, 24 @@ -3550,36 +3550,36 @@ sub_80DD40C: @ 80DD40C cmp r1, 0x3B bls _080DD426 movs r1, 0x35 - bl sub_80DD3D4 + bl SetContestantEffectStringID b _080DD456 _080DD426: cmp r1, 0x27 bls _080DD432 movs r1, 0x34 - bl sub_80DD3D4 + bl SetContestantEffectStringID b _080DD456 _080DD432: cmp r1, 0x1D bls _080DD43E movs r1, 0x33 - bl sub_80DD3D4 + bl SetContestantEffectStringID b _080DD456 _080DD43E: cmp r1, 0x13 bls _080DD44A movs r1, 0x32 - bl sub_80DD3D4 + bl SetContestantEffectStringID b _080DD456 _080DD44A: cmp r2, 0x9 bls _080DD456 adds r0, r3, 0 movs r1, 0x31 - bl sub_80DD3D4 + bl SetContestantEffectStringID _080DD456: pop {r0} bx r0 - thumb_func_end sub_80DD40C + thumb_func_end SetStartledString thumb_func_start sub_80DD45C sub_80DD45C: @ 80DD45C @@ -3678,8 +3678,8 @@ _080DD52C: .pool thumb_func_end sub_80DD45C - thumb_func_start sub_80DD560 -sub_80DD560: @ 80DD560 + thumb_func_start MakeContestantNervous +MakeContestantNervous: @ 80DD560 push {r4,lr} lsls r0, 24 lsrs r0, 24 @@ -3703,7 +3703,7 @@ sub_80DD560: @ 80DD560 pop {r0} bx r0 .pool - thumb_func_end sub_80DD560 + thumb_func_end MakeContestantNervous thumb_func_start sub_80DD590 sub_80DD590: @ 80DD590 diff --git a/asm/contest_effect.s b/asm/contest_effect.s deleted file mode 100644 index 406de35d8..000000000 --- a/asm/contest_effect.s +++ /dev/null @@ -1,3175 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start AreMovesContestCombo -@ u8 AreMovesContestCombo(u16 moveId1, u16 moveId2) -AreMovesContestCombo: @ 80E5414 - push {r4,lr} - sub sp, 0x4 - lsls r0, 16 - lsls r1, 16 - ldr r2, =gContestMoves - lsrs r0, 13 - adds r0, r2 - ldrb r4, [r0, 0x2] - mov r3, sp - lsrs r1, 13 - adds r1, r2 - ldrb r0, [r1, 0x3] - strb r0, [r3] - mov r2, sp - ldrb r0, [r1, 0x4] - strb r0, [r2, 0x1] - ldrb r0, [r1, 0x5] - strb r0, [r2, 0x2] - mov r0, sp - ldrb r1, [r1, 0x6] - strb r1, [r0, 0x3] - cmp r4, 0 - beq _080E5470 - mov r0, sp - ldrb r0, [r0] - cmp r4, r0 - beq _080E545E - mov r0, sp - ldrb r0, [r0, 0x1] - cmp r4, r0 - beq _080E545E - mov r0, sp - ldrb r0, [r0, 0x2] - cmp r4, r0 - beq _080E545E - cmp r4, r1 - bne _080E5470 -_080E545E: - ldr r0, =gComboStarterLookupTable - adds r0, r4, r0 - ldrb r0, [r0] - b _080E5472 - .pool -_080E5470: - movs r0, 0 -_080E5472: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end AreMovesContestCombo - - thumb_func_start ContestEffectFunc_080E547C -ContestEffectFunc_080E547C: @ 80E547C - bx lr - thumb_func_end ContestEffectFunc_080E547C - - thumb_func_start ContestEffectFunc_080E5480 -ContestEffectFunc_080E5480: @ 80E5480 - push {lr} - ldr r3, =gContestResources - ldr r1, [r3] - ldr r0, [r1, 0x8] - ldrb r2, [r0, 0x11] - ldr r1, [r1, 0x4] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x10] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0, 0x10] - ldr r0, [r3] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0 - bl sub_80DD3D4 - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E5480 - - thumb_func_start ContestEffectFunc_080E54B0 -ContestEffectFunc_080E54B0: @ 80E54B0 - push {lr} - ldr r3, =gContestResources - ldr r1, [r3] - ldr r0, [r1, 0x8] - ldrb r2, [r0, 0x11] - ldr r1, [r1, 0x4] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x11] - movs r2, 0x8 - orrs r1, r2 - strb r1, [r0, 0x11] - ldr r0, [r3] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x1 - bl sub_80DD3D4 - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E54B0 - - thumb_func_start ContestEffectFunc_080E54E0 -ContestEffectFunc_080E54E0: @ 80E54E0 - ldr r3, =gContestResources - ldr r1, [r3] - ldr r0, [r1, 0x8] - ldrb r2, [r0, 0x11] - ldr r1, [r1, 0x4] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x10] - movs r2, 0x8 - orrs r1, r2 - strb r1, [r0, 0x10] - ldr r1, [r3] - ldr r0, [r1, 0x8] - ldrb r0, [r0, 0x11] - ldr r2, [r1, 0x4] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1, 0x15] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x15] - ldr r1, [r3] - ldr r0, [r1, 0x8] - ldrb r0, [r0, 0x11] - ldr r2, [r1, 0x4] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1, 0xB] - movs r0, 0x71 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0xB] - bx lr - .pool - thumb_func_end ContestEffectFunc_080E54E0 - - thumb_func_start ContestEffectFunc_080E5534 -ContestEffectFunc_080E5534: @ 80E5534 - push {lr} - ldr r3, =gContestResources - ldr r1, [r3] - ldr r0, [r1, 0x8] - ldrb r2, [r0, 0x11] - ldr r1, [r1, 0x4] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0, 0x12] - ldr r0, [r3] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x2 - bl sub_80DD3D4 - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E5534 - - thumb_func_start ContestEffectFunc_080E5560 -ContestEffectFunc_080E5560: @ 80E5560 - push {lr} - ldr r3, =gContestResources - ldr r1, [r3] - ldr r0, [r1, 0x8] - ldrb r2, [r0, 0x11] - ldr r1, [r1, 0x4] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x10] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0, 0x10] - ldr r0, [r3] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x3 - bl sub_80DD3D4 - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E5560 - - thumb_func_start ContestEffectFunc_080E5590 -ContestEffectFunc_080E5590: @ 80E5590 - push {lr} - ldr r3, =gContestResources - ldr r1, [r3] - ldr r0, [r1, 0x8] - ldrb r2, [r0, 0x11] - ldr r1, [r1, 0x4] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - movs r1, 0x14 - strb r1, [r0, 0xF] - ldr r0, [r3] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x4 - bl sub_80DD3D4 - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E5590 - - thumb_func_start ContestEffectFunc_080E55BC -ContestEffectFunc_080E55BC: @ 80E55BC - push {lr} - ldr r3, =gContestResources - ldr r1, [r3] - ldr r0, [r1, 0x8] - ldrb r2, [r0, 0x11] - ldr r1, [r1, 0x4] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x10] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0, 0x10] - ldr r0, [r3] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x5 - bl sub_80DD3D4 - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E55BC - - thumb_func_start ContestEffectFunc_080E55EC -ContestEffectFunc_080E55EC: @ 80E55EC - push {r4,r5,lr} - movs r2, 0 - ldr r5, =gContestResources - ldr r0, [r5] - ldr r1, [r0, 0x8] - ldrb r4, [r1, 0x11] - adds r3, r1, r4 - ldrb r0, [r3] - cmp r0, 0 - beq _080E563A - subs r0, 0x1 - ldrb r1, [r1] - cmp r0, r1 - beq _080E5622 - adds r3, r5, 0 -_080E560A: - adds r2, 0x1 - cmp r2, 0x3 - bgt _080E5622 - ldr r0, [r3] - ldr r1, [r0, 0x8] - adds r0, r1, r4 - ldrb r0, [r0] - subs r0, 0x1 - adds r1, r2 - ldrb r1, [r1] - cmp r0, r1 - bne _080E560A -_080E5622: - ldr r1, =gContestResources - ldr r0, [r1] - ldr r0, [r0, 0x8] - strb r2, [r0, 0x8] - ldr r0, [r1] - ldr r1, [r0, 0x8] - movs r0, 0xFF - strb r0, [r1, 0x9] - bl sub_80E6A2C - lsls r0, 24 - lsrs r2, r0, 24 -_080E563A: - cmp r2, 0 - bne _080E564C - ldr r0, =gContestResources - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x36 - bl sub_80DD3F0 -_080E564C: - ldr r0, =gContestResources - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x30 - bl sub_80DD3D4 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E55EC - - thumb_func_start ContestEffectFunc_080E5664 -ContestEffectFunc_080E5664: @ 80E5664 - push {r4-r6,lr} - movs r1, 0 - ldr r2, =gContestResources - ldr r0, [r2] - ldr r0, [r0, 0x8] - ldrb r5, [r0, 0x11] - adds r0, r5 - ldrb r0, [r0] - cmp r0, 0 - beq _080E56B4 - movs r3, 0 - movs r4, 0 - adds r6, r2, 0 -_080E567E: - ldr r0, [r6] - ldr r2, [r0, 0x8] - adds r0, r2, r5 - adds r1, r2, r3 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bls _080E5698 - adds r0, r2, 0 - adds r0, 0x8 - adds r0, r4 - strb r3, [r0] - adds r4, 0x1 -_080E5698: - adds r3, 0x1 - cmp r3, 0x3 - ble _080E567E - ldr r0, =gContestResources - ldr r0, [r0] - ldr r0, [r0, 0x8] - adds r0, 0x8 - adds r0, r4 - movs r1, 0xFF - strb r1, [r0] - bl sub_80E6A2C - lsls r0, 24 - lsrs r1, r0, 24 -_080E56B4: - cmp r1, 0 - bne _080E56C6 - ldr r0, =gContestResources - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x36 - bl sub_80DD3F0 -_080E56C6: - ldr r0, =gContestResources - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x30 - bl sub_80DD3D4 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E5664 - - thumb_func_start ContestEffectFunc_080E56E0 -ContestEffectFunc_080E56E0: @ 80E56E0 - push {lr} - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x14 - cmp r0, 0x1 - bls _080E5702 - movs r1, 0x3C - cmp r0, 0x7 - bhi _080E5702 - movs r1, 0x28 -_080E5702: - ldr r0, =gContestResources - ldr r0, [r0] - ldr r0, [r0, 0x8] - strh r1, [r0, 0x4] - bl ContestEffectFunc_080E55EC - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E56E0 - - thumb_func_start ContestEffectFunc_080E5718 -ContestEffectFunc_080E5718: @ 80E5718 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r7, 0 - ldr r1, =gContestResources - ldr r0, [r1] - ldr r0, [r0, 0x8] - ldrb r5, [r0, 0x11] - adds r0, r5 - ldrb r0, [r0] - mov r8, r1 - cmp r0, 0 - beq _080E579E - movs r4, 0 - mov r6, r8 -_080E5736: - ldr r0, [r6] - ldr r2, [r0, 0x8] - adds r0, r2, r5 - adds r1, r2, r4 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bls _080E5798 - strb r4, [r2, 0x8] - ldr r0, [r6] - ldr r1, [r0, 0x8] - movs r0, 0xFF - strb r0, [r1, 0x9] - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - cmp r0, 0 - beq _080E5782 - movs r1, 0xA - cmp r0, 0x2 - bls _080E5782 - movs r1, 0x14 - cmp r0, 0x4 - bls _080E5782 - movs r1, 0x1E - cmp r0, 0x6 - bls _080E5782 - movs r1, 0x3C - cmp r0, 0x8 - bhi _080E5782 - movs r1, 0x28 -_080E5782: - ldr r0, [r6] - ldr r0, [r0, 0x8] - strh r1, [r0, 0x4] - bl sub_80E6A2C - lsls r0, 24 - cmp r0, 0 - beq _080E5798 - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 -_080E5798: - adds r4, 0x1 - cmp r4, 0x3 - ble _080E5736 -_080E579E: - mov r1, r8 - ldr r0, [r1] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x30 - bl sub_80DD3D4 - cmp r7, 0 - bne _080E57BE - mov r1, r8 - ldr r0, [r1] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x36 - bl sub_80DD3F0 -_080E57BE: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E5718 - - thumb_func_start ContestEffectFunc_080E57CC -ContestEffectFunc_080E57CC: @ 80E57CC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r0, 0 - mov r9, r0 - ldr r1, =gContestResources - ldr r0, [r1] - ldr r0, [r0, 0x8] - ldrb r2, [r0, 0x11] - mov r8, r2 - add r0, r8 - ldrb r0, [r0] - mov r10, r1 - cmp r0, 0 - beq _080E5858 - movs r6, 0 - mov r7, r10 - movs r5, 0 -_080E57F4: - ldr r2, [r7] - ldr r0, [r2, 0x8] - mov r3, r8 - adds r1, r0, r3 - adds r0, r6 - ldrb r1, [r1] - ldrb r0, [r0] - cmp r1, r0 - bls _080E5850 - ldr r0, [r2, 0x4] - adds r0, r5, r0 - ldrb r1, [r0, 0x15] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080E5850 - lsls r0, r6, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl sub_80E69C8 - lsls r0, 24 - cmp r0, 0 - beq _080E5850 - ldr r0, [r7] - ldr r2, [r0, 0x4] - adds r2, r5, r2 - ldrb r0, [r2, 0x15] - movs r3, 0x11 - negs r3, r3 - adds r1, r3, 0 - ands r0, r1 - strb r0, [r2, 0x15] - ldr r0, [r7] - ldr r2, [r0, 0x4] - adds r2, r5, r2 - ldrb r0, [r2, 0x15] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r2, 0x15] - adds r0, r4, 0 - movs r1, 0x8 - bl sub_80DD3D4 - movs r0, 0x1 - mov r9, r0 -_080E5850: - adds r5, 0x1C - adds r6, 0x1 - cmp r6, 0x3 - ble _080E57F4 -_080E5858: - mov r1, r10 - ldr r0, [r1] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x7 - bl sub_80DD3D4 - mov r2, r9 - cmp r2, 0 - bne _080E587A - mov r3, r10 - ldr r0, [r3] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x36 - bl sub_80DD3F0 -_080E587A: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E57CC - - thumb_func_start ContestEffectFunc_080E588C -ContestEffectFunc_080E588C: @ 80E588C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r0, 0 - mov r9, r0 - ldr r1, =gContestResources - ldr r0, [r1] - ldr r0, [r0, 0x8] - ldrb r7, [r0, 0x11] - adds r0, r7 - ldrb r0, [r0] - adds r4, r1, 0 - cmp r0, 0 - beq _080E590A - movs r5, 0 - movs r6, 0 - mov r8, r4 -_080E58B0: - ldr r3, [r4] - ldr r2, [r3, 0x8] - adds r0, r2, r7 - adds r1, r2, r5 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bls _080E5900 - ldr r0, [r3, 0x4] - adds r0, r6, r0 - ldrb r1, [r0, 0x15] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080E58D8 - movs r0, 0x32 - b _080E58DA - .pool -_080E58D8: - movs r0, 0xA -_080E58DA: - strh r0, [r2, 0x4] - mov r1, r8 - ldr r0, [r1] - ldr r0, [r0, 0x8] - strb r5, [r0, 0x8] - ldr r0, [r1] - ldr r1, [r0, 0x8] - movs r0, 0xFF - strb r0, [r1, 0x9] - bl sub_80E6A2C - lsls r0, 24 - cmp r0, 0 - beq _080E5900 - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_080E5900: - adds r6, 0x1C - adds r5, 0x1 - ldr r4, =gContestResources - cmp r5, 0x3 - ble _080E58B0 -_080E590A: - ldr r0, [r4] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x30 - bl sub_80DD3D4 - mov r0, r9 - cmp r0, 0 - bne _080E5928 - ldr r0, [r4] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x36 - bl sub_80DD3F0 -_080E5928: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E588C - - thumb_func_start ContestEffectFunc_080E5938 -ContestEffectFunc_080E5938: @ 80E5938 - push {r4,lr} - ldr r4, =gContestResources - ldr r1, [r4] - ldr r0, [r1, 0x8] - ldrb r2, [r0, 0x11] - ldr r1, [r1, 0x4] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x11] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0, 0x11] - bl ContestEffectFunc_080E5664 - ldr r0, [r4] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x30 - bl sub_80DD3D4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E5938 - - thumb_func_start ContestEffectFunc_080E5970 -ContestEffectFunc_080E5970: @ 80E5970 - push {r4,lr} - ldr r4, =gContestResources - ldr r1, [r4] - ldr r0, [r1, 0x8] - ldrb r2, [r0, 0x11] - ldr r1, [r1, 0x4] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x6] - ldr r1, =gContestMoves - lsls r0, 3 - adds r0, r1 - ldrb r0, [r0, 0x1] - lsls r0, 29 - lsrs r0, 29 - bl sub_80E6934 - ldr r0, [r4] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x30 - bl sub_80DD3D4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E5970 - - thumb_func_start ContestEffectFunc_080E59B0 -ContestEffectFunc_080E59B0: @ 80E59B0 - push {lr} - movs r0, 0 - bl sub_80E6934 - ldr r0, =gContestResources - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x30 - bl sub_80DD3D4 - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E59B0 - - thumb_func_start ContestEffectFunc_080E59D0 -ContestEffectFunc_080E59D0: @ 80E59D0 - push {lr} - movs r0, 0x1 - bl sub_80E6934 - ldr r0, =gContestResources - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x30 - bl sub_80DD3D4 - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E59D0 - - thumb_func_start ContestEffectFunc_080E59F0 -ContestEffectFunc_080E59F0: @ 80E59F0 - push {lr} - movs r0, 0x2 - bl sub_80E6934 - ldr r0, =gContestResources - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x30 - bl sub_80DD3D4 - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E59F0 - - thumb_func_start ContestEffectFunc_080E5A10 -ContestEffectFunc_080E5A10: @ 80E5A10 - push {lr} - movs r0, 0x3 - bl sub_80E6934 - ldr r0, =gContestResources - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x30 - bl sub_80DD3D4 - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E5A10 - - thumb_func_start ContestEffectFunc_080E5A30 -ContestEffectFunc_080E5A30: @ 80E5A30 - push {lr} - movs r0, 0x4 - bl sub_80E6934 - ldr r0, =gContestResources - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x30 - bl sub_80DD3D4 - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E5A30 - - thumb_func_start ContestEffectFunc_080E5A50 -ContestEffectFunc_080E5A50: @ 80E5A50 - push {r4-r6,lr} - movs r4, 0 - ldr r2, =gContestResources - ldr r0, [r2] - ldr r0, [r0, 0x8] - ldrb r1, [r0, 0x11] - adds r0, r1 - ldrb r0, [r0] - adds r6, r2, 0 - cmp r0, 0x3 - beq _080E5AB0 - movs r5, 0 -_080E5A68: - ldr r0, =gContestResources - ldr r0, [r0] - ldr r1, [r0, 0x8] - ldrb r0, [r1, 0x11] - adds r0, r1, r0 - ldrb r0, [r0] - adds r0, 0x1 - adds r1, r5 - ldrb r1, [r1] - cmp r0, r1 - bne _080E5AAA - lsls r0, r5, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl sub_80E69C8 - lsls r0, 24 - cmp r0, 0 - beq _080E5AA0 - adds r0, r4, 0 - bl sub_80DD560 - adds r0, r4, 0 - movs r1, 0xA - b _080E5AA4 - .pool -_080E5AA0: - adds r0, r4, 0 - movs r1, 0x3C -_080E5AA4: - bl sub_80DD3D4 - movs r4, 0x1 -_080E5AAA: - adds r5, 0x1 - cmp r5, 0x3 - ble _080E5A68 -_080E5AB0: - ldr r0, [r6] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x9 - bl sub_80DD3D4 - cmp r4, 0 - bne _080E5ACC - ldr r0, [r6] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x36 - bl sub_80DD3F0 -_080E5ACC: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end ContestEffectFunc_080E5A50 - - thumb_func_start ContestEffectFunc_080E5AD4 -ContestEffectFunc_080E5AD4: @ 80E5AD4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - movs r0, 0 - mov r9, r0 - movs r1, 0 - str r1, [sp, 0x18] - mov r0, sp - movs r1, 0xFF - movs r2, 0x5 - bl memset - movs r5, 0 - movs r4, 0 - add r2, sp, 0x10 - mov r8, r2 - add r3, sp, 0x8 - mov r10, r3 - movs r6, 0 -_080E5B00: - ldr r0, =gContestResources - ldr r2, [r0] - ldr r1, [r2, 0x8] - ldrb r0, [r1, 0x11] - adds r0, r1, r0 - adds r1, r5 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bcs _080E5B38 - ldr r0, [r2, 0x4] - adds r0, r6, r0 - ldrb r1, [r0, 0xC] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080E5B38 - lsls r0, r5, 24 - lsrs r0, 24 - bl Contest_IsMonsTurnDisabled - lsls r0, 24 - cmp r0, 0 - bne _080E5B38 - mov r1, sp - adds r0, r1, r4 - strb r5, [r0] - adds r4, 0x1 -_080E5B38: - adds r6, 0x1C - adds r5, 0x1 - cmp r5, 0x3 - ble _080E5B00 - cmp r4, 0x1 - bne _080E5B50 - movs r0, 0x3C - mov r2, r8 - strh r0, [r2] - b _080E5B7E - .pool -_080E5B50: - cmp r4, 0x2 - bne _080E5B5E - movs r0, 0x1E - mov r3, r8 - strh r0, [r3] - strh r0, [r3, 0x2] - b _080E5B7E -_080E5B5E: - cmp r4, 0x3 - bne _080E5B6E - movs r0, 0x14 - mov r6, r8 - strh r0, [r6] - strh r0, [r6, 0x2] - strh r0, [r6, 0x4] - b _080E5B7E -_080E5B6E: - mov r1, r8 - movs r2, 0 - mov r0, r8 - adds r0, 0x6 -_080E5B76: - strh r2, [r0] - subs r0, 0x2 - cmp r0, r1 - bge _080E5B76 -_080E5B7E: - movs r5, 0 - ldr r7, =gContestResources - movs r6, 0 - mov r4, r10 -_080E5B86: - ldr r0, [r7] - ldr r0, [r0, 0x4] - adds r0, r6, r0 - ldrb r1, [r0, 0x15] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080E5BD0 - lsls r0, r5, 24 - lsrs r0, 24 - bl sub_80DE1E8 - lsls r0, 24 - cmp r0, 0 - beq _080E5BD0 - ldr r0, [r7] - ldr r0, [r0, 0x4] - adds r0, r6, r0 - ldrh r0, [r0, 0x8] - lsls r0, 3 - ldr r1, =gContestMoves - adds r0, r1 - ldrb r0, [r0, 0x2] - ldr r2, =gComboStarterLookupTable - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 1 - b _080E5BD2 - .pool -_080E5BD0: - movs r0, 0 -_080E5BD2: - strh r0, [r4] - ldr r0, [r7] - ldr r0, [r0, 0x4] - adds r0, r6, r0 - ldrb r0, [r0, 0xD] - lsls r0, 24 - asrs r0, 24 - movs r1, 0xA - bl __divsi3 - lsls r0, 24 - asrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 1 - ldrh r0, [r4] - subs r0, r1 - strh r0, [r4] - adds r6, 0x1C - adds r4, 0x2 - adds r5, 0x1 - cmp r5, 0x3 - ble _080E5B86 - mov r3, r8 - movs r6, 0 - ldrsh r0, [r3, r6] - cmp r0, 0 - beq _080E5CA0 - movs r5, 0 - mov r0, sp - ldrb r0, [r0] - cmp r0, 0xFF - beq _080E5CA0 - mov r4, sp -_080E5C16: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - lsls r1, r5, 1 - add r1, r8 - movs r3, 0 - ldrsh r2, [r1, r3] - ldrb r3, [r4] - lsls r1, r3, 1 - add r1, r10 - movs r6, 0 - ldrsh r1, [r1, r6] - adds r2, r1 - cmp r0, r2 - bge _080E5C66 - adds r0, r3, 0 - bl sub_80E69C8 - lsls r0, 24 - cmp r0, 0 - beq _080E5C70 - ldrb r0, [r4] - bl sub_80DD560 - ldrb r0, [r4] - movs r1, 0xA - bl sub_80DD3D4 - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - b _080E5C6A -_080E5C66: - movs r0, 0x1 - str r0, [sp, 0x18] -_080E5C6A: - ldr r1, [sp, 0x18] - cmp r1, 0 - beq _080E5C86 -_080E5C70: - movs r2, 0 - str r2, [sp, 0x18] - ldrb r0, [r4] - movs r1, 0x3C - bl sub_80DD3D4 - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_080E5C86: - ldr r0, =gContestResources - ldr r0, [r0] - ldr r0, [r0, 0x8] - adds r0, 0xD - ldrb r3, [r4] - adds r0, r3 - movs r1, 0x1 - strb r1, [r0] - adds r4, 0x1 - adds r5, 0x1 - ldrb r0, [r4] - cmp r0, 0xFF - bne _080E5C16 -_080E5CA0: - ldr r6, =gContestResources - ldr r0, [r6] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0xB - bl sub_80DD3D4 - mov r0, r9 - cmp r0, 0 - bne _080E5CC0 - ldr r0, [r6] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x36 - bl sub_80DD3F0 -_080E5CC0: - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E5AD4 - - thumb_func_start ContestEffectFunc_080E5CD4 -ContestEffectFunc_080E5CD4: @ 80E5CD4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r0, 0 - mov r8, r0 - movs r6, 0 - ldr r7, =gContestResources - movs r5, 0 -_080E5CE4: - ldr r2, [r7] - ldr r0, [r2, 0x8] - ldrb r1, [r0, 0x11] - adds r1, r0, r1 - adds r0, r6 - ldrb r1, [r1] - ldrb r0, [r0] - cmp r1, r0 - bls _080E5D46 - ldr r0, [r2, 0x4] - adds r0, r5, r0 - ldrb r0, [r0, 0xD] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - ble _080E5D46 - lsls r0, r6, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl sub_80E69C8 - lsls r0, 24 - cmp r0, 0 - beq _080E5D46 - ldr r0, [r7] - ldr r0, [r0, 0x4] - adds r0, r5, r0 - movs r1, 0 - strb r1, [r0, 0xD] - ldr r0, [r7] - ldr r2, [r0, 0x4] - adds r2, r5, r2 - ldrb r1, [r2, 0x10] - movs r3, 0x31 - negs r3, r3 - adds r0, r3, 0 - ands r1, r0 - movs r0, 0x20 - orrs r1, r0 - strb r1, [r2, 0x10] - adds r0, r4, 0 - movs r1, 0xD - bl sub_80DD3D4 - mov r0, r8 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 -_080E5D46: - adds r5, 0x1C - adds r6, 0x1 - cmp r6, 0x3 - ble _080E5CE4 - ldr r4, =gContestResources - ldr r0, [r4] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0xC - bl sub_80DD3D4 - mov r0, r8 - cmp r0, 0 - bne _080E5D6E - ldr r0, [r4] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x39 - bl sub_80DD3F0 -_080E5D6E: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E5CD4 - - thumb_func_start ContestEffectFunc_080E5D7C -ContestEffectFunc_080E5D7C: @ 80E5D7C - push {r4-r7,lr} - movs r7, 0 - movs r4, 0 - ldr r5, =gContestResources - movs r6, 0 -_080E5D86: - ldr r3, [r5] - ldr r2, [r3, 0x8] - ldrb r0, [r2, 0x11] - adds r0, r2, r0 - adds r1, r2, r4 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bls _080E5DD2 - ldr r0, [r3, 0x4] - adds r0, r6, r0 - ldrb r0, [r0, 0xD] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - ble _080E5DB0 - movs r0, 0x28 - b _080E5DB2 - .pool -_080E5DB0: - movs r0, 0xA -_080E5DB2: - strh r0, [r2, 0x4] - ldr r0, [r5] - ldr r0, [r0, 0x8] - strb r4, [r0, 0x8] - ldr r0, [r5] - ldr r1, [r0, 0x8] - movs r0, 0xFF - strb r0, [r1, 0x9] - bl sub_80E6A2C - lsls r0, 24 - cmp r0, 0 - beq _080E5DD2 - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 -_080E5DD2: - adds r6, 0x1C - adds r4, 0x1 - cmp r4, 0x3 - ble _080E5D86 - ldr r4, =gContestResources - ldr r0, [r4] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0xE - bl sub_80DD3D4 - cmp r7, 0 - bne _080E5DF8 - ldr r0, [r4] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x39 - bl sub_80DD3F0 -_080E5DF8: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E5D7C - - thumb_func_start ContestEffectFunc_080E5E04 -ContestEffectFunc_080E5E04: @ 80E5E04 - push {r4,lr} - ldr r1, =gUnknown_02039F26 - ldr r0, =gContestResources - ldr r4, [r0] - ldr r0, [r4, 0x8] - ldrb r2, [r0, 0x11] - adds r1, r2, r1 - ldrb r0, [r1] - cmp r0, 0 - bne _080E5E46 - ldr r0, [r4, 0x4] - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r1, 0x6] - ldr r3, =gContestEffects - ldr r2, =gContestMoves - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x1] - lsls r0, 1 - ldrh r2, [r1, 0x2] - adds r0, r2 - strh r0, [r1, 0x2] - ldr r0, [r4, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0xF - bl sub_80DD3D4 -_080E5E46: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E5E04 - - thumb_func_start ContestEffectFunc_080E5E5C -ContestEffectFunc_080E5E5C: @ 80E5E5C - push {r4,lr} - ldr r1, =gUnknown_02039F26 - ldr r0, =gContestResources - ldr r4, [r0] - ldr r0, [r4, 0x8] - ldrb r2, [r0, 0x11] - adds r1, r2, r1 - ldrb r0, [r1] - cmp r0, 0x3 - bne _080E5E9E - ldr r0, [r4, 0x4] - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r1, 0x6] - ldr r3, =gContestEffects - ldr r2, =gContestMoves - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x1] - lsls r0, 1 - ldrh r2, [r1, 0x2] - adds r0, r2 - strh r0, [r1, 0x2] - ldr r0, [r4, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x10 - bl sub_80DD3D4 -_080E5E9E: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E5E5C - - thumb_func_start ContestEffectFunc_080E5EB4 -ContestEffectFunc_080E5EB4: @ 80E5EB4 - push {r4-r7,lr} - movs r1, 0 - movs r5, 0 - ldr r0, =gContestResources - ldr r4, [r0] - ldr r2, [r4, 0x8] - ldrb r0, [r2, 0x11] - adds r0, r2, r0 - ldrb r6, [r0] - movs r3, 0 -_080E5EC8: - adds r0, r2, r1 - ldrb r0, [r0] - cmp r6, r0 - bls _080E5EDA - ldr r0, [r4, 0x4] - adds r0, r3, r0 - movs r7, 0x2 - ldrsh r0, [r0, r7] - adds r5, r0 -_080E5EDA: - adds r3, 0x1C - adds r1, 0x1 - cmp r1, 0x3 - ble _080E5EC8 - cmp r5, 0 - bge _080E5EE8 - movs r5, 0 -_080E5EE8: - ldr r0, =gContestResources - ldr r3, [r0] - ldr r0, [r3, 0x8] - ldrb r2, [r0, 0x11] - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _080E5EFC - cmp r5, 0 - bne _080E5F0C -_080E5EFC: - adds r0, r2, 0 - movs r1, 0x12 - bl sub_80DD3D4 - b _080E5F2C - .pool -_080E5F0C: - ldr r0, [r3, 0x4] - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r0 - lsrs r0, r5, 31 - adds r0, r5, r0 - asrs r0, 1 - ldrh r2, [r1, 0x2] - adds r0, r2 - strh r0, [r1, 0x2] - ldr r0, [r3, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x11 - bl sub_80DD3D4 -_080E5F2C: - ldr r4, =gContestResources - ldr r1, [r4] - ldr r0, [r1, 0x8] - ldrb r2, [r0, 0x11] - ldr r1, [r1, 0x4] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - movs r7, 0x2 - ldrsh r0, [r0, r7] - bl sub_80E6B70 - ldr r2, [r4] - ldr r1, [r2, 0x8] - ldrb r3, [r1, 0x11] - ldr r2, [r2, 0x4] - lsls r1, r3, 3 - subs r1, r3 - lsls r1, 2 - adds r1, r2 - strh r0, [r1, 0x2] - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E5EB4 - - thumb_func_start ContestEffectFunc_080E5F64 -ContestEffectFunc_080E5F64: @ 80E5F64 - push {r4-r7,lr} - movs r6, 0 - ldr r0, =gContestResources - ldr r4, [r0] - ldr r2, [r4, 0x8] - ldrb r1, [r2, 0x11] - adds r3, r2, r1 - ldrb r1, [r3] - adds r7, r0, 0 - cmp r1, 0 - beq _080E5FB2 - movs r1, 0 - adds r5, r4, 0 - adds r4, r2, 0 - ldrb r0, [r3] - subs r3, r0, 0x1 - movs r2, 0 -_080E5F86: - adds r0, r4, r1 - ldrb r0, [r0] - cmp r3, r0 - bne _080E5F94 - ldr r0, [r5, 0x4] - adds r0, r2, r0 - ldrh r6, [r0, 0x2] -_080E5F94: - adds r2, 0x1C - adds r1, 0x1 - cmp r1, 0x3 - ble _080E5F86 - ldr r3, [r7] - ldr r0, [r3, 0x8] - ldrb r2, [r0, 0x11] - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _080E5FB2 - lsls r0, r6, 16 - asrs r4, r0, 16 - cmp r4, 0 - bgt _080E5FC4 -_080E5FB2: - ldr r0, [r7] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x14 - bl sub_80DD3D4 - b _080E5FDE - .pool -_080E5FC4: - ldr r1, [r3, 0x4] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x2] - adds r1, r4, r1 - strh r1, [r0, 0x2] - ldr r0, [r3, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x13 - bl sub_80DD3D4 -_080E5FDE: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end ContestEffectFunc_080E5F64 - - thumb_func_start ContestEffectFunc_080E5FE4 -ContestEffectFunc_080E5FE4: @ 80E5FE4 - push {r4,r5,lr} - ldr r1, =gContestResources - ldr r3, [r1] - ldr r0, [r3, 0x8] - ldrb r2, [r0, 0x11] - adds r0, r2 - ldrb r4, [r0] - adds r5, r1, 0 - cmp r4, 0 - bne _080E600C - ldr r0, [r3, 0x4] - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r0 - movs r0, 0xA - b _080E601C - .pool -_080E600C: - ldr r0, [r3, 0x4] - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r0 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 2 -_080E601C: - strh r0, [r1, 0x2] - cmp r4, 0 - bne _080E6030 - ldr r0, [r5] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x15 - bl sub_80DD3D4 - b _080E6060 -_080E6030: - cmp r4, 0x1 - bne _080E6042 - ldr r0, [r5] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x16 - bl sub_80DD3D4 - b _080E6060 -_080E6042: - cmp r4, 0x2 - bne _080E6054 - ldr r0, [r5] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x17 - bl sub_80DD3D4 - b _080E6060 -_080E6054: - ldr r0, [r5] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x18 - bl sub_80DD3D4 -_080E6060: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end ContestEffectFunc_080E5FE4 - - thumb_func_start ContestEffectFunc_080E6068 -ContestEffectFunc_080E6068: @ 80E6068 - push {r4,lr} - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - cmp r0, 0x2 - bhi _080E6098 - movs r4, 0xA - ldr r0, =gContestResources - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x1A - bl sub_80DD3D4 - b _080E60FC - .pool -_080E6098: - cmp r0, 0x5 - bhi _080E60B4 - movs r4, 0x14 - ldr r0, =gContestResources - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x1B - bl sub_80DD3D4 - b _080E60FC - .pool -_080E60B4: - cmp r0, 0x7 - bhi _080E60D0 - movs r4, 0x28 - ldr r0, =gContestResources - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x1C - bl sub_80DD3D4 - b _080E60FC - .pool -_080E60D0: - cmp r1, 0x8 - bhi _080E60EC - movs r4, 0x3C - ldr r0, =gContestResources - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x1D - bl sub_80DD3D4 - b _080E60FC - .pool -_080E60EC: - movs r4, 0x50 - ldr r0, =gContestResources - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x1E - bl sub_80DD3D4 -_080E60FC: - ldr r0, =gContestResources - ldr r1, [r0] - ldr r0, [r1, 0x8] - ldrb r2, [r0, 0x11] - ldr r1, [r1, 0x4] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - strh r4, [r0, 0x2] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E6068 - - thumb_func_start ContestEffectFunc_080E611C -ContestEffectFunc_080E611C: @ 80E611C - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r2, =gContestResources - ldr r0, [r2] - ldr r3, [r0, 0x8] - ldrb r0, [r3, 0x11] - adds r0, r3, r0 - movs r1, 0 - ldrsb r1, [r0, r1] - subs r0, r1, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - mov r8, r2 - cmp r1, 0 - beq _080E61F8 - mov r7, r8 - ldrb r6, [r3] -_080E6140: - movs r2, 0 - lsls r0, r4, 24 - asrs r1, r0, 24 - adds r5, r0, 0 - cmp r6, r1 - beq _080E616A - ldr r4, =gContestResources -_080E614E: - lsls r0, r2, 24 - movs r2, 0x80 - lsls r2, 17 - adds r0, r2 - lsrs r2, r0, 24 - asrs r3, r0, 24 - cmp r3, 0x3 - bgt _080E616A - ldr r0, [r4] - ldr r0, [r0, 0x8] - adds r0, r3 - ldrb r0, [r0] - cmp r0, r1 - bne _080E614E -_080E616A: - ldr r0, [r7] - lsls r3, r2, 24 - asrs r1, r3, 24 - ldr r2, [r0, 0x4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r2, r0, r2 - ldrb r1, [r2, 0xB] - movs r0, 0x80 - ands r0, r1 - mov r12, r3 - cmp r0, 0 - bne _080E6190 - ldrb r1, [r2, 0xC] - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - beq _080E61A4 -_080E6190: - movs r1, 0xFF - lsls r1, 24 - adds r0, r5, r1 - lsrs r4, r0, 24 - cmp r0, 0 - blt _080E61F8 - b _080E6140 - .pool -_080E61A4: - mov r2, r8 - ldr r6, [r2] - ldr r0, [r6, 0x8] - ldrb r1, [r0, 0x11] - ldr r4, [r6, 0x4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r5, r0, r4 - ldrh r0, [r5, 0x6] - ldr r3, =gContestMoves - lsls r0, 3 - adds r7, r0, r3 - ldrb r2, [r7, 0x1] - lsls r2, 29 - mov r0, r12 - asrs r1, r0, 24 - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r0, [r0, 0x6] - lsls r0, 3 - adds r0, r3 - ldrb r0, [r0, 0x1] - lsls r0, 29 - cmp r2, r0 - bne _080E61F8 - ldr r1, =gContestEffects - ldrb r0, [r7] - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x1] - lsls r0, 1 - ldrh r1, [r5, 0x2] - adds r0, r1 - strh r0, [r5, 0x2] - ldr r0, [r6, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x1F - bl sub_80DD3D4 -_080E61F8: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E611C - - thumb_func_start ContestEffectFunc_080E620C -ContestEffectFunc_080E620C: @ 80E620C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, =gContestResources - ldr r3, [r0] - ldr r1, [r3, 0x8] - ldrb r2, [r1, 0x11] - adds r1, r2 - ldrb r1, [r1] - mov r9, r0 - cmp r1, 0 - beq _080E62AC - ldr r1, [r3, 0x4] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x6] - mov r8, r0 - movs r6, 0 - ldr r0, =gContestMoves - mov r12, r0 - movs r7, 0 -_080E623C: - mov r1, r9 - ldr r4, [r1] - ldr r0, [r4, 0x8] - ldrb r2, [r0, 0x11] - adds r1, r0, r2 - ldrb r1, [r1] - subs r1, 0x1 - adds r0, r6 - ldrb r0, [r0] - cmp r1, r0 - bne _080E62A4 - mov r1, r8 - lsls r0, r1, 3 - mov r1, r12 - adds r5, r0, r1 - ldrb r1, [r5, 0x1] - lsls r1, 29 - ldr r3, [r4, 0x4] - adds r0, r7, r3 - ldrh r0, [r0, 0x6] - lsls r0, 3 - add r0, r12 - ldrb r0, [r0, 0x1] - lsls r0, 29 - cmp r1, r0 - beq _080E62A4 - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r3 - ldr r2, =gContestEffects - ldrb r0, [r5] - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - lsls r0, 1 - ldrh r2, [r1, 0x2] - adds r0, r2 - strh r0, [r1, 0x2] - ldr r0, [r4, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x20 - bl sub_80DD3D4 - b _080E62AC - .pool -_080E62A4: - adds r7, 0x1C - adds r6, 0x1 - cmp r6, 0x3 - ble _080E623C -_080E62AC: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end ContestEffectFunc_080E620C - - thumb_func_start ContestEffectFunc_080E62B8 -ContestEffectFunc_080E62B8: @ 80E62B8 - push {r4-r7,lr} - ldr r0, =gContestResources - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r1, [r0, 0x11] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _080E632E - movs r5, 0 - movs r6, 0 -_080E62CE: - ldr r0, =gContestResources - ldr r4, [r0] - ldr r1, [r4, 0x8] - ldrb r2, [r1, 0x11] - adds r0, r1, r2 - ldrb r0, [r0] - subs r0, 0x1 - adds r1, r5 - ldrb r1, [r1] - cmp r0, r1 - bne _080E6326 - ldr r1, [r4, 0x4] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r3, r0, r1 - adds r1, r6, r1 - movs r0, 0x2 - ldrsh r2, [r3, r0] - movs r7, 0x2 - ldrsh r0, [r1, r7] - cmp r2, r0 - ble _080E6314 - adds r0, r2, 0 - lsls r0, 1 - strh r0, [r3, 0x2] - ldr r0, [r4, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x21 - bl sub_80DD3D4 - b _080E6326 - .pool -_080E6314: - cmp r2, r0 - bge _080E6326 - movs r0, 0 - strh r0, [r3, 0x2] - ldr r0, [r4, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x22 - bl sub_80DD3D4 -_080E6326: - adds r6, 0x1C - adds r5, 0x1 - cmp r5, 0x3 - ble _080E62CE -_080E632E: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end ContestEffectFunc_080E62B8 - - thumb_func_start ContestEffectFunc_080E6334 -ContestEffectFunc_080E6334: @ 80E6334 - push {r4,lr} - ldr r4, =gContestResources - ldr r1, [r4] - ldr r0, [r1, 0x8] - ldrb r2, [r0, 0x11] - ldr r1, [r1, 0x4] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r1, r0, r1 - ldrb r3, [r1, 0xD] - movs r0, 0xD - ldrsb r0, [r1, r0] - cmp r0, 0x1D - bgt _080E6388 - adds r0, r3, 0 - adds r0, 0xA - strb r0, [r1, 0xD] - ldr r1, [r4] - ldr r0, [r1, 0x8] - ldrb r2, [r0, 0x11] - ldr r1, [r1, 0x4] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r2, [r0, 0x10] - movs r1, 0x31 - negs r1, r1 - ands r1, r2 - movs r2, 0x10 - orrs r1, r2 - strb r1, [r0, 0x10] - ldr r0, [r4] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x23 - bl sub_80DD3D4 - b _080E6390 - .pool -_080E6388: - adds r0, r2, 0 - movs r1, 0x3A - bl sub_80DD3D4 -_080E6390: - pop {r4} - pop {r0} - bx r0 - thumb_func_end ContestEffectFunc_080E6334 - - thumb_func_start ContestEffectFunc_080E6398 -ContestEffectFunc_080E6398: @ 80E6398 - push {lr} - ldr r3, =gContestResources - ldr r1, [r3] - ldr r0, [r1, 0x8] - ldrb r2, [r0, 0x11] - ldr r1, [r1, 0x4] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x11] - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0, 0x11] - ldr r1, [r3] - ldr r0, [r1, 0x8] - ldrb r2, [r0, 0x11] - ldr r1, [r1, 0x4] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0xD] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - beq _080E63DC - adds r0, r2, 0 - movs r1, 0x24 - bl sub_80DD3D4 - b _080E63E4 - .pool -_080E63DC: - adds r0, r2, 0 - movs r1, 0x3B - bl sub_80DD3D4 -_080E63E4: - pop {r0} - bx r0 - thumb_func_end ContestEffectFunc_080E6398 - - thumb_func_start ContestEffectFunc_080E63E8 -ContestEffectFunc_080E63E8: @ 80E63E8 - push {r4-r7,lr} - sub sp, 0x4 - ldr r0, =gContestResources - ldr r2, [r0] - ldr r1, [r2] - ldrb r1, [r1, 0x1] - mov r12, r0 - cmp r1, 0x4 - bne _080E63FC - b _080E6518 -_080E63FC: - movs r6, 0 - adds r4, r2, 0 -_080E6400: - lsls r1, r6, 24 - asrs r1, 24 - mov r0, sp - adds r3, r0, r1 - ldr r2, [r4, 0x4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x19] - strb r0, [r3] - adds r1, 0x1 - lsls r1, 24 - lsrs r6, r1, 24 - asrs r1, 24 - cmp r1, 0x3 - ble _080E6400 - mov r1, r12 - ldr r0, [r1] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - mov r2, sp - adds r1, r2, r0 - movs r0, 0xFF - strb r0, [r1] - movs r6, 0 - mov r3, r12 - ldr r7, [r3] -_080E6438: - movs r5, 0 -_080E643A: - lsls r0, r5, 24 - asrs r2, r0, 24 - ldr r0, [r7, 0x8] - ldrb r0, [r0, 0x11] - cmp r2, r0 - beq _080E6474 - lsls r0, r6, 24 - asrs r3, r0, 24 - mov r0, sp - adds r4, r0, r2 - ldrb r1, [r4] - cmp r3, r1 - bne _080E6474 - ldr r0, [r7, 0x4] - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r0 - lsls r0, r3, 24 - lsrs r0, 24 - ldrb r1, [r1, 0x19] - cmp r0, r1 - bne _080E6474 - adds r0, r3, 0x1 - strb r0, [r4] - b _080E6484 - .pool -_080E6474: - lsls r0, r5, 24 - movs r2, 0x80 - lsls r2, 17 - adds r0, r2 - lsrs r5, r0, 24 - asrs r0, 24 - cmp r0, 0x3 - ble _080E643A -_080E6484: - cmp r5, 0x4 - beq _080E6498 - lsls r0, r6, 24 - movs r3, 0x80 - lsls r3, 17 - adds r0, r3 - lsrs r6, r0, 24 - asrs r0, 24 - cmp r0, 0x3 - ble _080E6438 -_080E6498: - mov r4, r12 - ldr r1, [r4] - ldr r0, [r1, 0x8] - ldrb r0, [r0, 0x11] - mov r3, sp - adds r2, r3, r0 - movs r0, 0 - strb r0, [r2] - ldr r0, [r1, 0x8] - ldrb r2, [r0, 0x11] - ldr r1, [r1, 0x4] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r2, [r0, 0x10] - movs r1, 0x3F - ands r1, r2 - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0, 0x10] - movs r6, 0 - mov r3, r12 -_080E64C6: - ldr r0, [r3] - lsls r1, r6, 24 - asrs r1, 24 - ldr r2, [r0, 0x4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - mov r4, sp - adds r2, r4, r1 - ldrb r2, [r2] - strb r2, [r0, 0x19] - adds r1, 0x1 - lsls r1, 24 - lsrs r6, r1, 24 - asrs r1, 24 - cmp r1, 0x3 - ble _080E64C6 - mov r0, r12 - ldr r1, [r0] - ldr r0, [r1, 0x8] - ldrb r2, [r0, 0x11] - ldr r1, [r1, 0x4] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r2, [r0, 0x11] - movs r1, 0x4 - negs r1, r1 - ands r1, r2 - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0, 0x11] - mov r1, r12 - ldr r0, [r1] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x25 - bl sub_80DD3D4 -_080E6518: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end ContestEffectFunc_080E63E8 - - thumb_func_start ContestEffectFunc_080E6520 -ContestEffectFunc_080E6520: @ 80E6520 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r0, =gContestResources - ldr r2, [r0] - ldr r1, [r2] - ldrb r1, [r1, 0x1] - mov r12, r0 - cmp r1, 0x4 - bne _080E6538 - b _080E6658 -_080E6538: - movs r6, 0 - adds r4, r2, 0 -_080E653C: - lsls r1, r6, 24 - asrs r1, 24 - mov r0, sp - adds r3, r0, r1 - ldr r2, [r4, 0x4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x19] - strb r0, [r3] - adds r1, 0x1 - lsls r1, 24 - lsrs r6, r1, 24 - asrs r1, 24 - cmp r1, 0x3 - ble _080E653C - mov r1, r12 - ldr r0, [r1] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - mov r2, sp - adds r1, r2, r0 - movs r0, 0xFF - strb r0, [r1] - movs r6, 0x3 - mov r3, r12 - ldr r7, [r3] - movs r4, 0x1 - negs r4, r4 - mov r8, r4 -_080E657A: - movs r5, 0 -_080E657C: - lsls r0, r5, 24 - asrs r2, r0, 24 - ldr r0, [r7, 0x8] - ldrb r0, [r0, 0x11] - cmp r2, r0 - beq _080E65B4 - lsls r0, r6, 24 - asrs r3, r0, 24 - mov r0, sp - adds r4, r0, r2 - ldrb r1, [r4] - cmp r3, r1 - bne _080E65B4 - ldr r0, [r7, 0x4] - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r0 - lsls r0, r3, 24 - lsrs r0, 24 - ldrb r1, [r1, 0x19] - cmp r0, r1 - bne _080E65B4 - subs r0, r3, 0x1 - strb r0, [r4] - b _080E65C4 - .pool -_080E65B4: - lsls r0, r5, 24 - movs r2, 0x80 - lsls r2, 17 - adds r0, r2 - lsrs r5, r0, 24 - asrs r0, 24 - cmp r0, 0x3 - ble _080E657C -_080E65C4: - cmp r5, 0x4 - beq _080E65D8 - lsls r0, r6, 24 - movs r3, 0xFF - lsls r3, 24 - adds r0, r3 - lsrs r6, r0, 24 - asrs r0, 24 - cmp r0, r8 - bgt _080E657A -_080E65D8: - mov r4, r12 - ldr r1, [r4] - ldr r0, [r1, 0x8] - ldrb r0, [r0, 0x11] - mov r3, sp - adds r2, r3, r0 - movs r0, 0x3 - strb r0, [r2] - ldr r0, [r1, 0x8] - ldrb r2, [r0, 0x11] - ldr r1, [r1, 0x4] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r2, [r0, 0x10] - movs r1, 0x3F - ands r1, r2 - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0, 0x10] - movs r6, 0 - mov r3, r12 -_080E6606: - ldr r0, [r3] - lsls r1, r6, 24 - asrs r1, 24 - ldr r2, [r0, 0x4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - mov r4, sp - adds r2, r4, r1 - ldrb r2, [r2] - strb r2, [r0, 0x19] - adds r1, 0x1 - lsls r1, 24 - lsrs r6, r1, 24 - asrs r1, 24 - cmp r1, 0x3 - ble _080E6606 - mov r0, r12 - ldr r1, [r0] - ldr r0, [r1, 0x8] - ldrb r2, [r0, 0x11] - ldr r1, [r1, 0x4] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r2, [r0, 0x11] - movs r1, 0x4 - negs r1, r1 - ands r1, r2 - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0, 0x11] - mov r1, r12 - ldr r0, [r1] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x26 - bl sub_80DD3D4 -_080E6658: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end ContestEffectFunc_080E6520 - - thumb_func_start ContestEffectFunc_080E6664 -ContestEffectFunc_080E6664: @ 80E6664 - bx lr - thumb_func_end ContestEffectFunc_080E6664 - - thumb_func_start ContestEffectFunc_080E6668 -ContestEffectFunc_080E6668: @ 80E6668 - push {r4-r7,lr} - sub sp, 0x8 - ldr r0, =gContestResources - ldr r1, [r0] - ldr r0, [r1] - ldrb r0, [r0, 0x1] - cmp r0, 0x4 - beq _080E676C - movs r6, 0 - add r5, sp, 0x4 - adds r4, r1, 0 - adds r7, r5, 0 -_080E6680: - lsls r1, r6, 24 - asrs r1, 24 - mov r0, sp - adds r3, r0, r1 - ldr r2, [r4, 0x4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x19] - strb r0, [r3] - adds r0, r7, r1 - strb r6, [r0] - adds r1, 0x1 - lsls r1, 24 - lsrs r6, r1, 24 - asrs r1, 24 - cmp r1, 0x3 - ble _080E6680 - movs r6, 0 - adds r7, r5, 0 -_080E66AA: - bl Random - lsls r0, 16 - lsrs r0, 16 - lsls r2, r6, 24 - asrs r2, 24 - movs r1, 0x4 - subs r1, r2 - bl __modsi3 - lsls r0, 24 - lsrs r4, r0, 24 - movs r1, 0 -_080E66C4: - lsls r0, r1, 24 - asrs r2, r0, 24 - adds r3, r7, r2 - ldrb r1, [r3] - adds r5, r0, 0 - cmp r1, 0xFF - beq _080E66EE - cmp r4, 0 - bne _080E66E8 - mov r1, sp - adds r0, r1, r2 - strb r6, [r0] - movs r0, 0xFF - strb r0, [r3] - b _080E66FC - .pool -_080E66E8: - subs r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_080E66EE: - movs r1, 0x80 - lsls r1, 17 - adds r0, r5, r1 - lsrs r1, r0, 24 - asrs r0, 24 - cmp r0, 0x3 - ble _080E66C4 -_080E66FC: - lsls r0, r6, 24 - movs r6, 0x80 - lsls r6, 17 - adds r0, r6 - lsrs r6, r0, 24 - asrs r0, 24 - cmp r0, 0x3 - ble _080E66AA - movs r6, 0 - ldr r5, =gContestResources - adds r4, r5, 0 -_080E6712: - ldr r0, [r4] - lsls r3, r6, 24 - asrs r3, 24 - ldr r1, [r0, 0x4] - lsls r2, r3, 3 - subs r2, r3 - lsls r2, 2 - adds r1, r2, r1 - mov r6, sp - adds r0, r6, r3 - ldrb r0, [r0] - strb r0, [r1, 0x19] - ldr r0, [r4] - ldr r0, [r0, 0x4] - adds r2, r0 - ldrb r1, [r2, 0x10] - movs r0, 0x3F - ands r0, r1 - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x10] - adds r3, 0x1 - lsls r3, 24 - lsrs r6, r3, 24 - asrs r3, 24 - cmp r3, 0x3 - ble _080E6712 - ldr r1, [r5] - ldr r0, [r1, 0x8] - ldrb r2, [r0, 0x11] - ldr r1, [r1, 0x4] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x11] - movs r2, 0x3 - orrs r1, r2 - strb r1, [r0, 0x11] - ldr r0, [r5] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x27 - bl sub_80DD3D4 -_080E676C: - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E6668 - - thumb_func_start ContestEffectFunc_080E6778 -ContestEffectFunc_080E6778: @ 80E6778 - push {lr} - ldr r3, =gContestMoves - ldr r0, =gContestResources - ldr r1, [r0] - ldr r0, [r1, 0x8] - ldrb r2, [r0, 0x11] - ldr r1, [r1, 0x4] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r2, r0, r1 - ldrh r0, [r2, 0x6] - lsls r0, 3 - adds r0, r3 - ldrb r0, [r0, 0x1] - lsls r0, 29 - ldr r1, =gSpecialVar_ContestCategory - lsrs r0, 29 - ldrh r1, [r1] - cmp r0, r1 - beq _080E67AA - ldrb r0, [r2, 0x11] - movs r1, 0x10 - orrs r0, r1 - strb r0, [r2, 0x11] -_080E67AA: - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E6778 - - thumb_func_start ContestEffectFunc_080E67BC -ContestEffectFunc_080E67BC: @ 80E67BC - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r0, 0 - mov r8, r0 - movs r4, 0 - ldr r5, =gContestResources - movs r6, 0 -_080E67CC: - ldr r3, [r5] - ldr r2, [r3, 0x8] - ldrb r0, [r2, 0x11] - adds r0, r2, r0 - adds r1, r2, r4 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bls _080E682E - ldr r0, [r3, 0x4] - adds r1, r6, r0 - movs r7, 0x2 - ldrsh r0, [r1, r7] - cmp r0, 0 - ble _080E6808 - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r2, 0x4] - ldr r0, [r3, 0x8] - movs r1, 0x4 - ldrsh r0, [r0, r1] - bl sub_80E6BB4 - ldr r1, [r5] - ldr r1, [r1, 0x8] - strh r0, [r1, 0x4] - b _080E680C - .pool -_080E6808: - movs r0, 0xA - strh r0, [r2, 0x4] -_080E680C: - ldr r0, [r5] - ldr r0, [r0, 0x8] - strb r4, [r0, 0x8] - ldr r0, [r5] - ldr r1, [r0, 0x8] - movs r0, 0xFF - strb r0, [r1, 0x9] - bl sub_80E6A2C - lsls r0, 24 - cmp r0, 0 - beq _080E682E - mov r0, r8 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 -_080E682E: - adds r6, 0x1C - adds r4, 0x1 - cmp r4, 0x3 - ble _080E67CC - mov r7, r8 - cmp r7, 0 - bne _080E684A - ldr r0, =gContestResources - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x36 - bl sub_80DD3F0 -_080E684A: - ldr r0, =gContestResources - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x30 - bl sub_80DD3D4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E67BC - - thumb_func_start ContestEffectFunc_080E6868 -ContestEffectFunc_080E6868: @ 80E6868 - push {r4,lr} - ldr r0, =gContestResources - ldr r1, [r0] - ldr r0, [r1] - ldrb r0, [r0, 0x13] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bne _080E688C - movs r4, 0xA - ldr r0, [r1, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x1A - bl sub_80DD3D4 - b _080E68CE - .pool -_080E688C: - cmp r0, 0x1 - bne _080E689E - movs r4, 0x14 - ldr r0, [r1, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x1B - bl sub_80DD3D4 - b _080E68CE -_080E689E: - cmp r0, 0x2 - bne _080E68B0 - movs r4, 0x1E - ldr r0, [r1, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x1C - bl sub_80DD3D4 - b _080E68CE -_080E68B0: - cmp r0, 0x3 - bne _080E68C2 - movs r4, 0x32 - ldr r0, [r1, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x1D - bl sub_80DD3D4 - b _080E68CE -_080E68C2: - movs r4, 0x3C - ldr r0, [r1, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x1E - bl sub_80DD3D4 -_080E68CE: - ldr r0, =gContestResources - ldr r1, [r0] - ldr r0, [r1, 0x8] - ldrb r2, [r0, 0x11] - ldr r1, [r1, 0x4] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - strh r4, [r0, 0x2] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E6868 - - thumb_func_start ContestEffectFunc_080E68EC -ContestEffectFunc_080E68EC: @ 80E68EC - push {r4,lr} - ldr r4, =gContestResources - ldr r0, [r4] - ldr r2, [r0, 0x10] - ldrb r1, [r2, 0x1] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080E692A - movs r0, 0x1 - orrs r0, r1 - strb r0, [r2, 0x1] - ldr r0, [r4] - ldr r3, [r0, 0x10] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x7 - ands r1, r0 - lsls r1, 1 - ldrb r2, [r3, 0x1] - movs r0, 0xF - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x1] - ldr r0, [r4] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x3D - bl sub_80DD3D4 -_080E692A: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ContestEffectFunc_080E68EC - - thumb_func_start sub_80E6934 -sub_80E6934: @ 80E6934 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r7, 0 - movs r4, 0 - ldr r6, =gContestResources - ldr r0, =gContestMoves - mov r9, r0 - movs r5, 0 -_080E694E: - ldr r3, [r6] - ldr r2, [r3, 0x8] - ldrb r0, [r2, 0x11] - adds r0, r2, r0 - adds r1, r2, r4 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bls _080E699E - ldr r0, [r3, 0x4] - adds r0, r5, r0 - ldrh r0, [r0, 0x6] - lsls r0, 3 - add r0, r9 - ldrb r0, [r0, 0x1] - lsls r0, 29 - lsrs r0, 29 - cmp r8, r0 - bne _080E6980 - movs r0, 0x28 - b _080E6982 - .pool -_080E6980: - movs r0, 0xA -_080E6982: - strh r0, [r2, 0x4] - ldr r0, [r6] - ldr r0, [r0, 0x8] - strb r4, [r0, 0x8] - ldr r0, [r6] - ldr r1, [r0, 0x8] - movs r0, 0xFF - strb r0, [r1, 0x9] - bl sub_80E6A2C - lsls r0, 24 - cmp r0, 0 - beq _080E699E - adds r7, 0x1 -_080E699E: - adds r5, 0x1C - adds r4, 0x1 - cmp r4, 0x3 - ble _080E694E - cmp r7, 0 - bne _080E69B8 - ldr r0, =gContestResources - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x11] - movs r1, 0x36 - bl sub_80DD3F0 -_080E69B8: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80E6934 - - thumb_func_start sub_80E69C8 -sub_80E69C8: @ 80E69C8 - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r2, =gContestResources - ldr r0, [r2] - ldr r0, [r0, 0x8] - adds r0, 0xD - adds r0, r3 - movs r1, 0x1 - strb r1, [r0] - ldr r0, [r2] - ldr r1, [r0, 0x4] - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r2, r0, r1 - ldrb r1, [r2, 0x10] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080E69FC - adds r0, r3, 0 - movs r1, 0x2D - b _080E6A22 - .pool -_080E69FC: - ldrb r0, [r2, 0x12] - cmp r0, 0 - bne _080E6A1A - ldrb r1, [r2, 0xB] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E6A26 - ldrb r1, [r2, 0xC] - movs r0, 0x6 - ands r0, r1 - cmp r0, 0 - bne _080E6A26 - movs r0, 0x1 - b _080E6A28 -_080E6A1A: - subs r0, 0x1 - strb r0, [r2, 0x12] - adds r0, r3, 0 - movs r1, 0x2C -_080E6A22: - bl sub_80DD3D4 -_080E6A26: - movs r0, 0 -_080E6A28: - pop {r1} - bx r1 - thumb_func_end sub_80E69C8 - - thumb_func_start sub_80E6A2C -sub_80E6A2C: @ 80E6A2C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - mov r0, sp - movs r1, 0 - movs r2, 0x8 - bl memset - movs r7, 0 - ldr r4, =gContestResources - ldr r0, [r4] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x8] - cmp r0, 0xFF - beq _080E6B10 - mov r8, r4 -_080E6A4E: - mov r1, r8 - ldr r0, [r1] - ldr r0, [r0, 0x8] - adds r0, 0x8 - adds r0, r7 - ldrb r5, [r0] - adds r6, r5, 0 - adds r0, r5, 0 - bl sub_80E69C8 - lsls r0, 24 - cmp r0, 0 - beq _080E6AFE - ldr r2, [r4] - ldr r1, [r2, 0x8] - ldrh r0, [r1, 0x4] - strh r0, [r1, 0x6] - ldr r1, [r2, 0x4] - lsls r0, r5, 3 - subs r0, r5 - lsls r4, r0, 2 - adds r1, r4, r1 - ldrb r1, [r1, 0x10] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080E6A8E - ldr r1, [r2, 0x8] - movs r2, 0x6 - ldrsh r0, [r1, r2] - lsls r0, 1 - strh r0, [r1, 0x6] -_080E6A8E: - mov r0, r8 - ldr r3, [r0] - ldr r0, [r3, 0x4] - adds r1, r4, r0 - ldrb r0, [r1, 0x10] - movs r4, 0x1 - ands r4, r0 - cmp r4, 0 - beq _080E6AB4 - ldr r1, [r3, 0x8] - movs r0, 0xA - strh r0, [r1, 0x6] - adds r0, r5, 0 - movs r1, 0x2F - bl sub_80DD3D4 - b _080E6AFE - .pool -_080E6AB4: - ldr r2, [r3, 0x8] - ldrb r1, [r1, 0xF] - ldrh r0, [r2, 0x6] - subs r0, r1 - strh r0, [r2, 0x6] - ldr r2, [r3, 0x8] - ldrh r1, [r2, 0x6] - movs r3, 0x6 - ldrsh r0, [r2, r3] - cmp r0, 0 - bgt _080E6AD6 - strh r4, [r2, 0x6] - adds r0, r5, 0 - movs r1, 0x2E - bl sub_80DD3D4 - b _080E6AFE -_080E6AD6: - lsls r1, 24 - lsrs r1, 24 - adds r0, r6, 0 - bl sub_80E6B3C - mov r1, r8 - ldr r0, [r1] - ldr r0, [r0, 0x8] - ldrb r1, [r0, 0x6] - adds r0, r6, 0 - bl sub_80DD40C - lsls r0, r6, 1 - mov r2, sp - adds r1, r2, r0 - mov r3, r8 - ldr r0, [r3] - ldr r0, [r0, 0x8] - ldrh r0, [r0, 0x6] - strh r0, [r1] -_080E6AFE: - adds r7, 0x1 - ldr r4, =gContestResources - ldr r0, [r4] - ldr r0, [r0, 0x8] - adds r0, 0x8 - adds r0, r7 - ldrb r0, [r0] - cmp r0, 0xFF - bne _080E6A4E -_080E6B10: - movs r7, 0 - mov r1, sp -_080E6B14: - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _080E6B24 - movs r0, 0x1 - b _080E6B2E - .pool -_080E6B24: - adds r1, 0x2 - adds r7, 0x1 - cmp r7, 0x3 - ble _080E6B14 - movs r0, 0 -_080E6B2E: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80E6A2C - - thumb_func_start sub_80E6B3C -sub_80E6B3C: @ 80E6B3C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r2, =gContestResources - ldr r4, [r2] - ldr r3, [r4, 0x4] - lsls r2, r0, 3 - subs r2, r0 - lsls r2, 2 - adds r3, r2, r3 - ldrh r0, [r3, 0x2] - subs r0, r1 - strh r0, [r3, 0x2] - ldr r0, [r4, 0x4] - adds r2, r0 - ldrb r0, [r2, 0xE] - adds r1, r0 - strb r1, [r2, 0xE] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80E6B3C - - thumb_func_start sub_80E6B70 -sub_80E6B70: @ 80E6B70 - push {r4,r5,lr} - lsls r0, 16 - lsrs r5, r0, 16 - asrs r4, r0, 16 - adds r0, r4, 0 - cmp r4, 0 - bge _080E6B80 - negs r0, r4 -_080E6B80: - movs r1, 0xA - bl __modsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r4, 0 - bge _080E6B9E - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0 - beq _080E6BA8 - adds r0, r4, 0 - subs r0, 0xA - adds r0, r1, r0 - b _080E6BA4 -_080E6B9E: - lsls r0, 16 - asrs r0, 16 - subs r0, r4, r0 -_080E6BA4: - lsls r0, 16 - lsrs r5, r0, 16 -_080E6BA8: - lsls r0, r5, 16 - asrs r0, 16 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80E6B70 - - thumb_func_start sub_80E6BB4 -sub_80E6BB4: @ 80E6BB4 - push {r4,r5,lr} - lsls r0, 16 - lsrs r5, r0, 16 - asrs r4, r0, 16 - adds r0, r4, 0 - cmp r4, 0 - bge _080E6BC4 - negs r0, r4 -_080E6BC4: - movs r1, 0xA - bl __modsi3 - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0 - beq _080E6BDC - adds r0, r4, 0 - adds r0, 0xA - subs r0, r1 - lsls r0, 16 - lsrs r5, r0, 16 -_080E6BDC: - lsls r0, r5, 16 - asrs r0, 16 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80E6BB4 - - .align 2, 0 @ Don't pad with nop. diff --git a/data/contest_effect.s b/data/contest_effect.s deleted file mode 100644 index 31b294836..000000000 --- a/data/contest_effect.s +++ /dev/null @@ -1,22 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -@ 858C2B4 - .include "data/contest_moves.inc" - -@ 858CDCC - .include "data/contest_effects.inc" - -@ A lookup table with a 1 for each combo starter ID and a 0 for ID 0, -@ which means "not a combo starter move". -gComboStarterLookupTable:: @ 858CE8C - .byte 0 - .rept 62 - .byte 1 - .endr - - .align 2 -@ 858CECC - .include "data/contest_effect_function_table.inc" diff --git a/data/contest_effect_function_table.inc b/data/contest_effect_function_table.inc deleted file mode 100644 index 57d106844..000000000 --- a/data/contest_effect_function_table.inc +++ /dev/null @@ -1,50 +0,0 @@ - .align 2 -gContestEffectFunctionTable:: @ 858CECC - .4byte ContestEffectFunc_080E547C - .4byte ContestEffectFunc_080E5480 - .4byte ContestEffectFunc_080E54B0 - .4byte ContestEffectFunc_080E54E0 - .4byte ContestEffectFunc_080E5534 - .4byte ContestEffectFunc_080E5560 - .4byte ContestEffectFunc_080E5590 - .4byte ContestEffectFunc_080E55BC - .4byte ContestEffectFunc_080E55EC - .4byte ContestEffectFunc_080E5664 - .4byte ContestEffectFunc_080E55EC - .4byte ContestEffectFunc_080E5664 - .4byte ContestEffectFunc_080E55EC - .4byte ContestEffectFunc_080E5664 - .4byte ContestEffectFunc_080E56E0 - .4byte ContestEffectFunc_080E5718 - .4byte ContestEffectFunc_080E57CC - .4byte ContestEffectFunc_080E588C - .4byte ContestEffectFunc_080E5938 - .4byte ContestEffectFunc_080E5970 - .4byte ContestEffectFunc_080E59B0 - .4byte ContestEffectFunc_080E59D0 - .4byte ContestEffectFunc_080E59F0 - .4byte ContestEffectFunc_080E5A10 - .4byte ContestEffectFunc_080E5A30 - .4byte ContestEffectFunc_080E5A50 - .4byte ContestEffectFunc_080E5AD4 - .4byte ContestEffectFunc_080E5CD4 - .4byte ContestEffectFunc_080E5D7C - .4byte ContestEffectFunc_080E5E04 - .4byte ContestEffectFunc_080E5E5C - .4byte ContestEffectFunc_080E5EB4 - .4byte ContestEffectFunc_080E5F64 - .4byte ContestEffectFunc_080E5FE4 - .4byte ContestEffectFunc_080E6068 - .4byte ContestEffectFunc_080E611C - .4byte ContestEffectFunc_080E620C - .4byte ContestEffectFunc_080E62B8 - .4byte ContestEffectFunc_080E6334 - .4byte ContestEffectFunc_080E6398 - .4byte ContestEffectFunc_080E63E8 - .4byte ContestEffectFunc_080E6520 - .4byte ContestEffectFunc_080E6664 - .4byte ContestEffectFunc_080E6668 - .4byte ContestEffectFunc_080E6778 - .4byte ContestEffectFunc_080E67BC - .4byte ContestEffectFunc_080E6868 - .4byte ContestEffectFunc_080E68EC diff --git a/data/contest_effects.inc b/data/contest_effects.inc deleted file mode 100644 index 46da79e45..000000000 --- a/data/contest_effects.inc +++ /dev/null @@ -1,289 +0,0 @@ - .align 2 -gContestEffects:: @ 858CDCC -@ 0x00 - .byte 0 @ effect type - .byte 40 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x01 - .byte 0 @ effect type - .byte 60 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x02 - .byte 0 @ effect type - .byte 80 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x03 - .byte 0 @ effect type - .byte 30 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x04 - .byte 1 @ effect type - .byte 20 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x05 - .byte 1 @ effect type - .byte 10 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x06 - .byte 1 @ effect type - .byte 30 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x07 - .byte 1 @ effect type - .byte 30 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x08 - .byte 2 @ effect type - .byte 30 @ appeal - .byte 20 @ jam - .byte 0 @ padding - -@ 0x09 - .byte 3 @ effect type - .byte 30 @ appeal - .byte 10 @ jam - .byte 0 @ padding - -@ 0x0a - .byte 2 @ effect type - .byte 20 @ appeal - .byte 30 @ jam - .byte 0 @ padding - -@ 0x0b - .byte 3 @ effect type - .byte 20 @ appeal - .byte 20 @ jam - .byte 0 @ padding - -@ 0x0c - .byte 2 @ effect type - .byte 10 @ appeal - .byte 40 @ jam - .byte 0 @ padding - -@ 0x0d - .byte 3 @ effect type - .byte 10 @ appeal - .byte 30 @ jam - .byte 0 @ padding - -@ 0x0e - .byte 2 @ effect type - .byte 30 @ appeal - .byte 20 @ jam - .byte 0 @ padding - -@ 0x0f - .byte 3 @ effect type - .byte 30 @ appeal - .byte 10 @ jam - .byte 0 @ padding - -@ 0x10 - .byte 4 @ effect type - .byte 30 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x11 - .byte 3 @ effect type - .byte 20 @ appeal - .byte 10 @ jam - .byte 0 @ padding - -@ 0x12 - .byte 3 @ effect type - .byte 40 @ appeal - .byte 40 @ jam - .byte 0 @ padding - -@ 0x13 - .byte 3 @ effect type - .byte 20 @ appeal - .byte 10 @ jam - .byte 0 @ padding - -@ 0x14 - .byte 3 @ effect type - .byte 20 @ appeal - .byte 10 @ jam - .byte 0 @ padding - -@ 0x15 - .byte 3 @ effect type - .byte 20 @ appeal - .byte 10 @ jam - .byte 0 @ padding - -@ 0x16 - .byte 3 @ effect type - .byte 20 @ appeal - .byte 10 @ jam - .byte 0 @ padding - -@ 0x17 - .byte 3 @ effect type - .byte 20 @ appeal - .byte 10 @ jam - .byte 0 @ padding - -@ 0x18 - .byte 3 @ effect type - .byte 20 @ appeal - .byte 10 @ jam - .byte 0 @ padding - -@ 0x19 - .byte 4 @ effect type - .byte 20 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x1a - .byte 4 @ effect type - .byte 20 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x1b - .byte 4 @ effect type - .byte 30 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x1c - .byte 3 @ effect type - .byte 30 @ appeal - .byte 10 @ jam - .byte 0 @ padding - -@ 0x1d - .byte 5 @ effect type - .byte 20 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x1e - .byte 5 @ effect type - .byte 20 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x1f - .byte 5 @ effect type - .byte 10 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x20 - .byte 5 @ effect type - .byte 10 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x21 - .byte 5 @ effect type - .byte 10 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x22 - .byte 5 @ effect type - .byte 10 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x23 - .byte 5 @ effect type - .byte 20 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x24 - .byte 5 @ effect type - .byte 20 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x25 - .byte 5 @ effect type - .byte 30 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x26 - .byte 5 @ effect type - .byte 10 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x27 - .byte 5 @ effect type - .byte 10 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x28 - .byte 6 @ effect type - .byte 30 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x29 - .byte 6 @ effect type - .byte 30 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x2a - .byte 6 @ effect type - .byte 30 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x2b - .byte 6 @ effect type - .byte 30 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x2c - .byte 5 @ effect type - .byte 10 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x2d - .byte 3 @ effect type - .byte 20 @ appeal - .byte 10 @ jam - .byte 0 @ padding - -@ 0x2e - .byte 5 @ effect type - .byte 10 @ appeal - .byte 0 @ jam - .byte 0 @ padding - -@ 0x2f - .byte 4 @ effect type - .byte 30 @ appeal - .byte 0 @ jam - .byte 0 @ padding diff --git a/data/contest_moves.inc b/data/contest_moves.inc deleted file mode 100644 index aecea3a8d..000000000 --- a/data/contest_moves.inc +++ /dev/null @@ -1,2486 +0,0 @@ - .align 2 -gContestMoves:: @ 858C2B4 -@ - - .byte 0x00 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Pound - .byte 0x00 @ effect ID - .byte CONTEST_TOUGH - .byte COMBO_STARTER_POUND @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Karate Chop - .byte 0x25 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_FOCUS_ENERGY, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Double Slap - .byte 0x11 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_POUND, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Comet Punch - .byte 0x23 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Mega Punch - .byte 0x00 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_MIND_READER, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Pay Day - .byte 0x2e @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Fire Punch - .byte 0x00 @ effect ID - .byte CONTEST_BEAUTY - .byte COMBO_STARTER_FIRE_PUNCH @ combo starter ID - .byte COMBO_STARTER_SUNNY_DAY, COMBO_STARTER_THUNDER_PUNCH, COMBO_STARTER_ICE_PUNCH, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Ice Punch - .byte 0x00 @ effect ID - .byte CONTEST_BEAUTY - .byte COMBO_STARTER_ICE_PUNCH @ combo starter ID - .byte COMBO_STARTER_THUNDER_PUNCH, COMBO_STARTER_FIRE_PUNCH, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Thunder Punch - .byte 0x00 @ effect ID - .byte CONTEST_COOL - .byte COMBO_STARTER_THUNDER_PUNCH @ combo starter ID - .byte COMBO_STARTER_CHARGE, COMBO_STARTER_FIRE_PUNCH, COMBO_STARTER_ICE_PUNCH, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Scratch - .byte 0x00 @ effect ID - .byte CONTEST_TOUGH - .byte COMBO_STARTER_SCRATCH @ combo starter ID - .byte COMBO_STARTER_LEER, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Vice Grip - .byte 0x00 @ effect ID - .byte CONTEST_TOUGH - .byte COMBO_STARTER_VICE_GRIP @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Guillotine - .byte 0x2d @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_VICE_GRIP, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Razor Wind - .byte 0x25 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Swords Dance - .byte 0x26 @ effect ID - .byte CONTEST_BEAUTY - .byte COMBO_STARTER_SWORDS_DANCE @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Cut - .byte 0x2d @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SWORDS_DANCE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Gust - .byte 0x2b @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Wing Attack - .byte 0x23 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Whirlwind - .byte 0x2b @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Fly - .byte 0x05 @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Bind - .byte 0x2f @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_VICE_GRIP, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Slam - .byte 0x13 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_POUND, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Vine Whip - .byte 0x00 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_GROWTH, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Stomp - .byte 0x0c @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte 0, COMBO_STARTER_LEER, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Double Kick - .byte 0x23 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Mega Kick - .byte 0x00 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_MIND_READER, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Jump Kick - .byte 0x01 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_MIND_READER, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Rolling Kick - .byte 0x0d @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Sand-Attack - .byte 0x11 @ effect ID - .byte CONTEST_CUTE - .byte COMBO_STARTER_SAND_ATTACK @ combo starter ID - .byte COMBO_STARTER_MUD_SLAP, COMBO_STARTER_SANDSTORM, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Headbutt - .byte 0x0a @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_FOCUS_ENERGY, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Horn Attack - .byte 0x00 @ effect ID - .byte CONTEST_COOL - .byte COMBO_STARTER_HORN_ATTACK @ combo starter ID - .byte COMBO_STARTER_LEER, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Fury Attack - .byte 0x11 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_HORN_ATTACK, COMBO_STARTER_PECK, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Horn Drill - .byte 0x2d @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_HORN_ATTACK, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Tackle - .byte 0x00 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_DEFENSE_CURL, COMBO_STARTER_LEER, COMBO_STARTER_HARDEN, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Body Slam - .byte 0x0c @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Wrap - .byte 0x2f @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Take Down - .byte 0x01 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_HARDEN, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Thrash - .byte 0x12 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_RAGE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Double-Edge - .byte 0x01 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_HARDEN, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Tail Whip - .byte 0x1e @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte COMBO_STARTER_CHARM, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Poison Sting - .byte 0x0a @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Twineedle - .byte 0x0a @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Pin Missile - .byte 0x11 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Leer - .byte 0x2f @ effect ID - .byte CONTEST_COOL - .byte COMBO_STARTER_LEER @ combo starter ID - .byte COMBO_STARTER_RAGE, COMBO_STARTER_SCARY_FACE, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Bite - .byte 0x0d @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_LEER, COMBO_STARTER_SCARY_FACE, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Growl - .byte 0x1e @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte COMBO_STARTER_CHARM, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Roar - .byte 0x2b @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Sing - .byte 0x1a @ effect ID - .byte CONTEST_CUTE - .byte COMBO_STARTER_SING @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Supersonic - .byte 0x2b @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Sonic Boom - .byte 0x23 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Disable - .byte 0x1a @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Acid - .byte 0x0c @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Ember - .byte 0x00 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SUNNY_DAY, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Flamethrower - .byte 0x00 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SUNNY_DAY, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Mist - .byte 0x05 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Water Gun - .byte 0x00 @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_WATER_SPORT, COMBO_STARTER_MUD_SPORT, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Hydro Pump - .byte 0x00 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_RAIN_DANCE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Surf - .byte 0x25 @ effect ID - .byte CONTEST_BEAUTY - .byte COMBO_STARTER_SURF @ combo starter ID - .byte COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_DIVE, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Ice Beam - .byte 0x13 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Blizzard - .byte 0x00 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_POWDER_SNOW, COMBO_STARTER_HAIL, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Psybeam - .byte 0x2b @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_CALM_MIND, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Bubble Beam - .byte 0x0d @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_RAIN_DANCE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Aurora Beam - .byte 0x13 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Hyper Beam - .byte 0x12 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Peck - .byte 0x00 @ effect ID - .byte CONTEST_COOL - .byte COMBO_STARTER_PECK @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Drill Peck - .byte 0x00 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_PECK, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Submission - .byte 0x01 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_MIND_READER, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Low Kick - .byte 0x0c @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Counter - .byte 0x04 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_TAUNT, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Seismic Toss - .byte 0x13 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_FAKE_OUT, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Strength - .byte 0x13 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Absorb - .byte 0x0a @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte COMBO_STARTER_GROWTH, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Mega Drain - .byte 0x0c @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte COMBO_STARTER_GROWTH, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Leech Seed - .byte 0x0b @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Growth - .byte 0x26 @ effect ID - .byte CONTEST_BEAUTY - .byte COMBO_STARTER_GROWTH @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Razor Leaf - .byte 0x25 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_GROWTH, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Solar Beam - .byte 0x00 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SUNNY_DAY, COMBO_STARTER_GROWTH, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Poison Powder - .byte 0x1b @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SWEET_SCENT, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Stun Spore - .byte 0x2d @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SWEET_SCENT, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Sleep Powder - .byte 0x0d @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SWEET_SCENT, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Petal Dance - .byte 0x12 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_GROWTH, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ String Shot - .byte 0x0a @ effect ID - .byte CONTEST_SMART - .byte COMBO_STARTER_STRING_SHOT @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Dragon Rage - .byte 0x21 @ effect ID - .byte CONTEST_COOL - .byte COMBO_STARTER_DRAGON_RAGE @ combo starter ID - .byte COMBO_STARTER_DRAGON_BREATH, COMBO_STARTER_DRAGON_DANCE, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Fire Spin - .byte 0x2f @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SUNNY_DAY, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Thunder Shock - .byte 0x00 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_CHARGE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Thunderbolt - .byte 0x00 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_CHARGE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Thunder Wave - .byte 0x2d @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_CHARGE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Thunder - .byte 0x0b @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_CHARGE, COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_LOCK_ON, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Rock Throw - .byte 0x23 @ effect ID - .byte CONTEST_TOUGH - .byte COMBO_STARTER_ROCK_THROW @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Earthquake - .byte 0x0d @ effect ID - .byte CONTEST_TOUGH - .byte COMBO_STARTER_EARTHQUAKE @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Fissure - .byte 0x2d @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_EARTHQUAKE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Dig - .byte 0x05 @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Toxic - .byte 0x1b @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Confusion - .byte 0x0a @ effect ID - .byte CONTEST_SMART - .byte COMBO_STARTER_CONFUSION @ combo starter ID - .byte COMBO_STARTER_PSYCHIC, COMBO_STARTER_KINESIS, COMBO_STARTER_CALM_MIND, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Psychic - .byte 0x0d @ effect ID - .byte CONTEST_SMART - .byte COMBO_STARTER_PSYCHIC @ combo starter ID - .byte COMBO_STARTER_KINESIS, COMBO_STARTER_CONFUSION, COMBO_STARTER_CALM_MIND, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Hypnosis - .byte 0x0d @ effect ID - .byte CONTEST_SMART - .byte COMBO_STARTER_HYPNOSIS @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Meditate - .byte 0x26 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_CALM_MIND, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Agility - .byte 0x28 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_DOUBLE_TEAM, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Quick Attack - .byte 0x28 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_DOUBLE_TEAM, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Rage - .byte 0x03 @ effect ID - .byte CONTEST_COOL - .byte COMBO_STARTER_RAGE @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Teleport - .byte 0x05 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_DOUBLE_TEAM, COMBO_STARTER_PSYCHIC, COMBO_STARTER_KINESIS, COMBO_STARTER_CONFUSION @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Night Shade - .byte 0x13 @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Mimic - .byte 0x20 @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Screech - .byte 0x0d @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Double Team - .byte 0x04 @ effect ID - .byte CONTEST_COOL - .byte COMBO_STARTER_DOUBLE_TEAM @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Recover - .byte 0x13 @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Harden - .byte 0x04 @ effect ID - .byte CONTEST_TOUGH - .byte COMBO_STARTER_HARDEN @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Minimize - .byte 0x04 @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Smokescreen - .byte 0x10 @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SMOG, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Confuse Ray - .byte 0x2b @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Withdraw - .byte 0x05 @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte COMBO_STARTER_RAIN_DANCE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Defense Curl - .byte 0x04 @ effect ID - .byte CONTEST_CUTE - .byte COMBO_STARTER_DEFENSE_CURL @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Barrier - .byte 0x05 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Light Screen - .byte 0x05 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_CALM_MIND, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Haze - .byte 0x1b @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Reflect - .byte 0x05 @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte COMBO_STARTER_CALM_MIND, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Focus Energy - .byte 0x0d @ effect ID - .byte CONTEST_COOL - .byte COMBO_STARTER_FOCUS_ENERGY @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Bide - .byte 0x05 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Metronome - .byte 0x03 @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Mirror Move - .byte 0x20 @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Self-Destruct - .byte 0x02 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Egg Bomb - .byte 0x00 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SOFT_BOILED, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Lick - .byte 0x0c @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Smog - .byte 0x0d @ effect ID - .byte CONTEST_TOUGH - .byte COMBO_STARTER_SMOG @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Sludge - .byte 0x0c @ effect ID - .byte CONTEST_TOUGH - .byte COMBO_STARTER_SLUDGE @ combo starter ID - .byte COMBO_STARTER_SLUDGE_BOMB, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Bone Club - .byte 0x11 @ effect ID - .byte CONTEST_TOUGH - .byte COMBO_STARTER_BONE_CLUB @ combo starter ID - .byte COMBO_STARTER_BONEMERANG, COMBO_STARTER_BONE_RUSH, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Fire Blast - .byte 0x00 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SUNNY_DAY, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Waterfall - .byte 0x1e @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_RAIN_DANCE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Clamp - .byte 0x2f @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_RAIN_DANCE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Swift - .byte 0x1d @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Skull Bash - .byte 0x0c @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Spike Cannon - .byte 0x11 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Constrict - .byte 0x0a @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Amnesia - .byte 0x26 @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Kinesis - .byte 0x2f @ effect ID - .byte CONTEST_SMART - .byte COMBO_STARTER_KINESIS @ combo starter ID - .byte COMBO_STARTER_PSYCHIC, COMBO_STARTER_CONFUSION, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Soft-Boiled - .byte 0x00 @ effect ID - .byte CONTEST_BEAUTY - .byte COMBO_STARTER_SOFT_BOILED @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Hi Jump Kick - .byte 0x01 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_MIND_READER, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Glare - .byte 0x0d @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_LEER, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Dream Eater - .byte 0x0b @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte COMBO_STARTER_HYPNOSIS, COMBO_STARTER_CALM_MIND, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Poison Gas - .byte 0x1b @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Barrage - .byte 0x23 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Leech Life - .byte 0x0a @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Lovely Kiss - .byte 0x0d @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Sky Attack - .byte 0x25 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Transform - .byte 0x03 @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Bubble - .byte 0x0b @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte COMBO_STARTER_RAIN_DANCE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Dizzy Punch - .byte 0x0c @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Spore - .byte 0x0d @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Flash - .byte 0x10 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Psywave - .byte 0x2d @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte COMBO_STARTER_CALM_MIND, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Splash - .byte 0x1e @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Acid Armor - .byte 0x26 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Crabhammer - .byte 0x25 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_SWORDS_DANCE, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Explosion - .byte 0x02 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Fury Swipes - .byte 0x11 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SCRATCH, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Bonemerang - .byte 0x00 @ effect ID - .byte CONTEST_TOUGH - .byte COMBO_STARTER_BONEMERANG @ combo starter ID - .byte COMBO_STARTER_BONE_CLUB, COMBO_STARTER_BONE_RUSH, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Rest - .byte 0x04 @ effect ID - .byte CONTEST_CUTE - .byte COMBO_STARTER_REST @ combo starter ID - .byte COMBO_STARTER_BELLY_DRUM, COMBO_STARTER_CHARM, COMBO_STARTER_YAWN, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Rock Slide - .byte 0x0d @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_ROCK_THROW, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Hyper Fang - .byte 0x0c @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Sharpen - .byte 0x26 @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Conversion - .byte 0x23 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Tri Attack - .byte 0x0b @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_LOCK_ON, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Super Fang - .byte 0x2d @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SCARY_FACE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Slash - .byte 0x25 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SWORDS_DANCE, COMBO_STARTER_SCRATCH, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Substitute - .byte 0x04 @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Struggle - .byte 0x00 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Sketch - .byte 0x20 @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Triple Kick - .byte 0x00 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_FOCUS_ENERGY, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Thief - .byte 0x1f @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Spider Web - .byte 0x1a @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte COMBO_STARTER_STRING_SHOT, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Mind Reader - .byte 0x2f @ effect ID - .byte CONTEST_SMART - .byte COMBO_STARTER_MIND_READER @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Nightmare - .byte 0x0d @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte COMBO_STARTER_HYPNOSIS, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Flame Wheel - .byte 0x00 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SUNNY_DAY, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Snore - .byte 0x00 @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte COMBO_STARTER_REST, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Curse - .byte 0x29 @ effect ID - .byte CONTEST_TOUGH - .byte COMBO_STARTER_CURSE @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Flail - .byte 0x21 @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte COMBO_STARTER_ENDURE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Conversion 2 - .byte 0x23 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Aeroblast - .byte 0x25 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Cotton Spore - .byte 0x11 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Reversal - .byte 0x1e @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_ENDURE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Spite - .byte 0x21 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_CURSE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Powder Snow - .byte 0x00 @ effect ID - .byte CONTEST_BEAUTY - .byte COMBO_STARTER_POWDER_SNOW @ combo starter ID - .byte COMBO_STARTER_HAIL, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Protect - .byte 0x05 @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte COMBO_STARTER_HARDEN, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Mach Punch - .byte 0x28 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Scary Face - .byte 0x11 @ effect ID - .byte CONTEST_TOUGH - .byte COMBO_STARTER_SCARY_FACE @ combo starter ID - .byte COMBO_STARTER_RAGE, COMBO_STARTER_LEER, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Faint Attack - .byte 0x1d @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte COMBO_STARTER_FAKE_OUT, COMBO_STARTER_LEER, COMBO_STARTER_POUND, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Sweet Kiss - .byte 0x1a @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte COMBO_STARTER_CHARM, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Belly Drum - .byte 0x26 @ effect ID - .byte CONTEST_CUTE - .byte COMBO_STARTER_BELLY_DRUM @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Sludge Bomb - .byte 0x11 @ effect ID - .byte CONTEST_TOUGH - .byte COMBO_STARTER_SLUDGE_BOMB @ combo starter ID - .byte COMBO_STARTER_SLUDGE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Mud-Slap - .byte 0x11 @ effect ID - .byte CONTEST_CUTE - .byte COMBO_STARTER_MUD_SLAP @ combo starter ID - .byte COMBO_STARTER_SAND_ATTACK, COMBO_STARTER_MUD_SPORT, COMBO_STARTER_SANDSTORM, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Octazooka - .byte 0x11 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_LOCK_ON, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Spikes - .byte 0x1a @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Zap Cannon - .byte 0x00 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_LOCK_ON, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Foresight - .byte 0x1b @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Destiny Bond - .byte 0x02 @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte COMBO_STARTER_MEAN_LOOK, COMBO_STARTER_CURSE, COMBO_STARTER_ENDURE, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Perish Song - .byte 0x2d @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_MEAN_LOOK, COMBO_STARTER_SING, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Icy Wind - .byte 0x0d @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Detect - .byte 0x04 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_TAUNT, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Bone Rush - .byte 0x00 @ effect ID - .byte CONTEST_TOUGH - .byte COMBO_STARTER_BONE_RUSH @ combo starter ID - .byte COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_BONE_CLUB, COMBO_STARTER_BONEMERANG, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Lock-On - .byte 0x2f @ effect ID - .byte CONTEST_SMART - .byte COMBO_STARTER_LOCK_ON @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Outrage - .byte 0x12 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Sandstorm - .byte 0x2b @ effect ID - .byte CONTEST_TOUGH - .byte COMBO_STARTER_SANDSTORM @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Giga Drain - .byte 0x11 @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte COMBO_STARTER_GROWTH, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Endure - .byte 0x04 @ effect ID - .byte CONTEST_TOUGH - .byte COMBO_STARTER_ENDURE @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Charm - .byte 0x13 @ effect ID - .byte CONTEST_CUTE - .byte COMBO_STARTER_CHARM @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Rollout - .byte 0x2f @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_DEFENSE_CURL, COMBO_STARTER_HARDEN, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ False Swipe - .byte 0x0d @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SWORDS_DANCE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Swagger - .byte 0x1d @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Milk Drink - .byte 0x23 @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Spark - .byte 0x0c @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_CHARGE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Fury Cutter - .byte 0x03 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SWORDS_DANCE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Steel Wing - .byte 0x23 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Mean Look - .byte 0x1a @ effect ID - .byte CONTEST_BEAUTY - .byte COMBO_STARTER_MEAN_LOOK @ combo starter ID - .byte COMBO_STARTER_CURSE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Attract - .byte 0x1a @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Sleep Talk - .byte 0x03 @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte COMBO_STARTER_REST, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Heal Bell - .byte 0x1e @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Return - .byte 0x2c @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Present - .byte 0x03 @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Frustration - .byte 0x2c @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Safeguard - .byte 0x05 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Pain Split - .byte 0x0c @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte COMBO_STARTER_ENDURE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Sacred Fire - .byte 0x00 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SUNNY_DAY, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Magnitude - .byte 0x2e @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Dynamic Punch - .byte 0x11 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_MIND_READER, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Megahorn - .byte 0x23 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Dragon Breath - .byte 0x0d @ effect ID - .byte CONTEST_COOL - .byte COMBO_STARTER_DRAGON_BREATH @ combo starter ID - .byte COMBO_STARTER_DRAGON_RAGE, COMBO_STARTER_DRAGON_DANCE, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Baton Pass - .byte 0x1a @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Encore - .byte 0x1a @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Pursuit - .byte 0x2d @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Rapid Spin - .byte 0x04 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Sweet Scent - .byte 0x0d @ effect ID - .byte CONTEST_CUTE - .byte COMBO_STARTER_SWEET_SCENT @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Iron Tail - .byte 0x0c @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Metal Claw - .byte 0x00 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_METAL_SOUND, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Vital Throw - .byte 0x29 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_FAKE_OUT, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Morning Sun - .byte 0x22 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SUNNY_DAY, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Synthesis - .byte 0x22 @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SUNNY_DAY, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Moonlight - .byte 0x22 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SUNNY_DAY, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Hidden Power - .byte 0x03 @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Cross Chop - .byte 0x25 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_FOCUS_ENERGY, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Twister - .byte 0x2b @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Rain Dance - .byte 0x2e @ effect ID - .byte CONTEST_TOUGH - .byte COMBO_STARTER_RAIN_DANCE @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Sunny Day - .byte 0x2e @ effect ID - .byte CONTEST_BEAUTY - .byte COMBO_STARTER_SUNNY_DAY @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Crunch - .byte 0x0c @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SCARY_FACE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Mirror Coat - .byte 0x04 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_TAUNT, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Psych Up - .byte 0x23 @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Extreme Speed - .byte 0x28 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Ancient Power - .byte 0x26 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Shadow Ball - .byte 0x10 @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Future Sight - .byte 0x2f @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte COMBO_STARTER_PSYCHIC, COMBO_STARTER_KINESIS, COMBO_STARTER_CONFUSION, COMBO_STARTER_CALM_MIND @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Rock Smash - .byte 0x27 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Whirlpool - .byte 0x2f @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_RAIN_DANCE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Beat Up - .byte 0x2d @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Fake Out - .byte 0x13 @ effect ID - .byte CONTEST_CUTE - .byte COMBO_STARTER_FAKE_OUT @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Uproar - .byte 0x2b @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Stockpile - .byte 0x04 @ effect ID - .byte CONTEST_TOUGH - .byte COMBO_STARTER_STOCKPILE @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Spit Up - .byte 0x00 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_STOCKPILE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Swallow - .byte 0x26 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_STOCKPILE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Heat Wave - .byte 0x00 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SUNNY_DAY, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Hail - .byte 0x0d @ effect ID - .byte CONTEST_BEAUTY - .byte COMBO_STARTER_HAIL @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Torment - .byte 0x1a @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Flatter - .byte 0x1a @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte COMBO_STARTER_CHARM, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Will-O-Wisp - .byte 0x0c @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SUNNY_DAY, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Memento - .byte 0x02 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Facade - .byte 0x1e @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Focus Punch - .byte 0x29 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_FOCUS_ENERGY, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Smelling Salt - .byte 0x0a @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Follow Me - .byte 0x2f @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Nature Power - .byte 0x2e @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Charge - .byte 0x23 @ effect ID - .byte CONTEST_SMART - .byte COMBO_STARTER_CHARGE @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Taunt - .byte 0x1a @ effect ID - .byte CONTEST_SMART - .byte COMBO_STARTER_TAUNT @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Helping Hand - .byte 0x1a @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Trick - .byte 0x23 @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Role Play - .byte 0x1f @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Wish - .byte 0x2f @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Assist - .byte 0x22 @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Ingrain - .byte 0x05 @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Superpower - .byte 0x01 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_LOCK_ON, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Magic Coat - .byte 0x05 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Recycle - .byte 0x03 @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Revenge - .byte 0x29 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Brick Break - .byte 0x0c @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_FOCUS_ENERGY, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Yawn - .byte 0x1a @ effect ID - .byte CONTEST_CUTE - .byte COMBO_STARTER_YAWN @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Knock Off - .byte 0x0c @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte COMBO_STARTER_FAKE_OUT, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Endeavor - .byte 0x1e @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_ENDURE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Eruption - .byte 0x21 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_ENDURE, COMBO_STARTER_EARTHQUAKE, COMBO_STARTER_SUNNY_DAY, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Skill Swap - .byte 0x1f @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Imprison - .byte 0x1b @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Refresh - .byte 0x26 @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte COMBO_STARTER_WATER_SPORT, COMBO_STARTER_SING, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Grudge - .byte 0x21 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_CURSE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Snatch - .byte 0x2d @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Secret Power - .byte 0x27 @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Dive - .byte 0x04 @ effect ID - .byte CONTEST_BEAUTY - .byte COMBO_STARTER_DIVE @ combo starter ID - .byte COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_SURF, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Arm Thrust - .byte 0x11 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_FAKE_OUT, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Camouflage - .byte 0x25 @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Tail Glow - .byte 0x26 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Luster Purge - .byte 0x0a @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte COMBO_STARTER_CALM_MIND, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Mist Ball - .byte 0x0c @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte COMBO_STARTER_CALM_MIND, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Feather Dance - .byte 0x1e @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Teeter Dance - .byte 0x12 @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Blaze Kick - .byte 0x00 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SUNNY_DAY, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Mud Sport - .byte 0x00 @ effect ID - .byte CONTEST_CUTE - .byte COMBO_STARTER_MUD_SPORT @ combo starter ID - .byte COMBO_STARTER_MUD_SLAP, COMBO_STARTER_WATER_SPORT, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Ice Ball - .byte 0x2f @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Needle Arm - .byte 0x0c @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Slack Off - .byte 0x21 @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte COMBO_STARTER_YAWN, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Hyper Voice - .byte 0x0d @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Poison Fang - .byte 0x1b @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Crush Claw - .byte 0x0c @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SWORDS_DANCE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Blast Burn - .byte 0x12 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SUNNY_DAY, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Hydro Cannon - .byte 0x12 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_RAIN_DANCE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Meteor Mash - .byte 0x23 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Astonish - .byte 0x0a @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Weather Ball - .byte 0x00 @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_SUNNY_DAY, COMBO_STARTER_HAIL, COMBO_STARTER_SANDSTORM @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Aromatherapy - .byte 0x1e @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Fake Tears - .byte 0x1e @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Air Cutter - .byte 0x13 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Overheat - .byte 0x01 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SUNNY_DAY, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Odor Sleuth - .byte 0x1b @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Rock Tomb - .byte 0x2f @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte COMBO_STARTER_ROCK_THROW, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Silver Wind - .byte 0x26 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Metal Sound - .byte 0x0d @ effect ID - .byte CONTEST_SMART - .byte COMBO_STARTER_METAL_SOUND @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Grass Whistle - .byte 0x0d @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Tickle - .byte 0x1b @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Cosmic Power - .byte 0x26 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Water Spout - .byte 0x21 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_RAIN_DANCE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Signal Beam - .byte 0x2b @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Shadow Punch - .byte 0x1d @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Extrasensory - .byte 0x0c @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Sky Uppercut - .byte 0x13 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_FOCUS_ENERGY, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Sand Tomb - .byte 0x2f @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte COMBO_STARTER_SANDSTORM, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Sheer Cold - .byte 0x2d @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Muddy Water - .byte 0x11 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte COMBO_STARTER_RAIN_DANCE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Bullet Seed - .byte 0x2d @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_GROWTH, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Aerial Ace - .byte 0x1d @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Icicle Spear - .byte 0x13 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Iron Defense - .byte 0x05 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Block - .byte 0x1a @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Howl - .byte 0x26 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Dragon Claw - .byte 0x13 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_DRAGON_BREATH, COMBO_STARTER_DRAGON_RAGE, COMBO_STARTER_DRAGON_DANCE, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Frenzy Plant - .byte 0x12 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_GROWTH, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Bulk Up - .byte 0x26 @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Bounce - .byte 0x05 @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Mud Shot - .byte 0x0d @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Poison Tail - .byte 0x1b @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Covet - .byte 0x1f @ effect ID - .byte CONTEST_CUTE - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Volt Tackle - .byte 0x01 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_CHARGE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Magical Leaf - .byte 0x1d @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_GROWTH, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Water Sport - .byte 0x00 @ effect ID - .byte CONTEST_CUTE - .byte COMBO_STARTER_WATER_SPORT @ combo starter ID - .byte COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_MUD_SPORT, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Calm Mind - .byte 0x04 @ effect ID - .byte CONTEST_SMART - .byte COMBO_STARTER_CALM_MIND @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Leaf Blade - .byte 0x25 @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Dragon Dance - .byte 0x26 @ effect ID - .byte CONTEST_COOL - .byte COMBO_STARTER_DRAGON_DANCE @ combo starter ID - .byte COMBO_STARTER_DRAGON_RAGE, COMBO_STARTER_DRAGON_BREATH, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Rock Blast - .byte 0x23 @ effect ID - .byte CONTEST_TOUGH - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Shock Wave - .byte 0x1d @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte COMBO_STARTER_CHARGE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Water Pulse - .byte 0x2b @ effect ID - .byte CONTEST_BEAUTY - .byte 0 @ combo starter ID - .byte COMBO_STARTER_RAIN_DANCE, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Doom Desire - .byte 0x2f @ effect ID - .byte CONTEST_COOL - .byte 0 @ combo starter ID - .byte 0, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding - -@ Psycho Boost - .byte 0x01 @ effect ID - .byte CONTEST_SMART - .byte 0 @ combo starter ID - .byte COMBO_STARTER_CALM_MIND, 0, 0, 0 @ moves this move can follow to make a combo - .byte 0 @ padding diff --git a/include/contest.h b/include/contest.h index 18f9ad21f..33080225b 100644 --- a/include/contest.h +++ b/include/contest.h @@ -415,6 +415,7 @@ extern struct ContestResources *gContestResources; #define shared18000 (*(struct Shared18000 *)(gHeap + 0x1a000)) extern u32 gContestRngValue; +extern u8 gUnknown_02039F26[4]; bool8 IsSpeciesNotUnown(u16 species); void LoadContestBgAfterMoveAnim(void); diff --git a/ld_script.txt b/ld_script.txt index 19a08c7c5..62074be92 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -143,7 +143,7 @@ SECTIONS { asm/script_menu.o(.text); src/naming_screen.o(.text); src/money.o(.text); - asm/contest_effect.o(.text); + src/contest_effect.o(.text); src/record_mixing.o(.text); src/secret_base.o(.text); src/tv.o(.text); @@ -445,7 +445,7 @@ SECTIONS { data/script_menu.o(.rodata); src/naming_screen.o(.rodata); src/money.o(.rodata); - data/contest_effect.o(.rodata); + src/contest_effect.o(.rodata); src/record_mixing.o(.rodata); src/secret_base.o(.rodata); src/tv.o(.rodata); diff --git a/src/contest_effect.c b/src/contest_effect.c new file mode 100644 index 000000000..760d74d69 --- /dev/null +++ b/src/contest_effect.c @@ -0,0 +1,1080 @@ +#include "global.h" +#include "random.h" +#include "constants/moves.h" +#include "contest.h" +#include "contest_effect.h" + +static void ContestEffect_HighlyAppealing(void); +static void ContestEffect_UserMoreEasilyStartled(void); +static void ContestEffect_GreatAppealButNoMoreMoves(void); +static void ContestEffect_RepetitionNotBoring(void); +static void ContestEffect_AvoidStartleOnce(void); +static void ContestEffect_AvoidStartle(void); +static void ContestEffect_AvoidStartleSlightly(void); +static void ContestEffect_UserLessEasilyStartled(void); +static void ContestEffect_StartleFrontMon(void); +static void ContestEffect_StartlePrevMons(void); +static void ContestEffect_StartlePrevMon2(void); +static void ContestEffect_StartlePrevMons2(void); +static void ContestEffect_ShiftJudgeAttention(void); +static void ContestEffect_StartleMonWithJudgesAttention(void); +static void ContestEffect_JamsOthersButMissOneTurn(void); +static void ContestEffect_StartleMonsSameTypeAppeal(void); +static void ContestEffect_StartleMonsCoolAppeal(void); +static void ContestEffect_StartleMonsBeautyAppeal(void); +static void ContestEffect_StartleMonsCuteAppeal(void); +static void ContestEffect_StartleMonsSmartAppeal(void); +static void ContestEffect_StartleMonsToughAppeal(void); +static void ContestEffect_MakeFollowingMonNervous(void); +static void ContestEffect_MakeFollowingMonsNervous(void); +static void ContestEffect_WorsenConditionOfPrevMons(void); +static void ContestEffect_BadlyStartlesMonsInGoodCondition(void); +static void ContestEffect_BetterIfFirst(void); +static void ContestEffect_BetterIfLast(void); +static void ContestEffect_AppealAsGoodAsPrevOnes(void); +static void ContestEffect_AppealAsGoodAsPrevOne(void); +static void ContestEffect_BetterWhenLater(void); +static void ContestEffect_QualityDependsOnTiming(void); +static void ContestEffect_BetterIfSameType(void); +static void ContestEffect_BetterIfDiffType(void); +static void ContestEffect_AffectedByPrevAppeal(void); +static void ContestEffect_ImproveConditionPreventNervousness(void); +static void ContestEffect_BetterWithGoodCondition(void); +static void ContestEffect_NextAppealEarlier(void); +static void ContestEffect_NextAppealLater(void); +static void ContestEffect_MakeScramblingTurnOrderEasier(void); +static void ContestEffect_ScrambleNextTurnOrder(void); +static void ContestEffect_ExciteAudienceInAnyContest(void); +static void ContestEffect_BadlyStartleMonsWithGoodAppeals(void); +static void ContestEffect_BetterWhenAudienceExcited(void); +static void ContestEffect_DontExciteAudience(void); +static void JamByMoveCategory(u8); +static bool8 CanUnnerveContestant(u8); +static u8 WasAtLeastOneOpponentJammed(void); +static void JamContestant(u8, u8); +static s16 RoundTowardsZero(s16); +static s16 RoundUp(s16); + +#include "data/contest_moves.h" + +bool8 AreMovesContestCombo(u16 lastMove, u16 nextMove) +{ + u8 nextMoveComboMoves[4]; + u8 lastMoveComboStarterId = gContestMoves[lastMove].comboStarterId; + nextMoveComboMoves[0] = gContestMoves[nextMove].comboMoves[0]; + nextMoveComboMoves[1] = gContestMoves[nextMove].comboMoves[1]; + nextMoveComboMoves[2] = gContestMoves[nextMove].comboMoves[2]; + nextMoveComboMoves[3] = gContestMoves[nextMove].comboMoves[3]; + + if (lastMoveComboStarterId == 0) + return FALSE; + else if (lastMoveComboStarterId == nextMoveComboMoves[0] || lastMoveComboStarterId == nextMoveComboMoves[1] || lastMoveComboStarterId == nextMoveComboMoves[2] || lastMoveComboStarterId == nextMoveComboMoves[3]) + return gComboStarterLookupTable[lastMoveComboStarterId]; + else + return FALSE; +} + +// A highly appealing move. +static void ContestEffect_HighlyAppealing(void) +{ +} + +// After this move, the user is more easily startled. +static void ContestEffect_UserMoreEasilyStartled(void) +{ + sContestantStatus[shared192D0.contestant].moreEasilyStartled = TRUE; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_MORE_CONSCIOUS); +} + +// Makes a great appeal, but allows no more to the end. +static void ContestEffect_GreatAppealButNoMoreMoves(void) +{ + sContestantStatus[shared192D0.contestant].exploded = TRUE; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_NO_APPEAL); +} + +// Can be used repeatedly without boring the JUDGE. +static void ContestEffect_RepetitionNotBoring(void) +{ + sContestantStatus[shared192D0.contestant].usedRepeatableMove = TRUE; + sContestantStatus[shared192D0.contestant].disappointedRepeat = FALSE; + sContestantStatus[shared192D0.contestant].moveRepeatCount = 0; +} + +// Can avoid being startled by others once. +static void ContestEffect_AvoidStartleOnce(void) +{ + sContestantStatus[shared192D0.contestant].jamSafetyCount = 1; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_SETTLE_DOWN); +} + +// Can avoid being startled by others. +static void ContestEffect_AvoidStartle(void) +{ + sContestantStatus[shared192D0.contestant].immune = TRUE; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_OBLIVIOUS_TO_OTHERS); +} + +// Can avoid being startled by others a little. +static void ContestEffect_AvoidStartleSlightly(void) +{ + sContestantStatus[shared192D0.contestant].jamReduction = 20; + SetContestantEffectStringID(shared192D0.contestant,CONTEST_STRING_LESS_AWARE); +} + +// After this move, the user is less likely to be startled. +static void ContestEffect_UserLessEasilyStartled(void) +{ + sContestantStatus[shared192D0.contestant].resistant = TRUE; + SetContestantEffectStringID(shared192D0.contestant,CONTEST_STRING_STOPPED_CARING); +} + +// Slightly startles the POKéMON in front. +static void ContestEffect_StartleFrontMon(void) +{ + u8 idx = 0; + u8 a = shared192D0.contestant; + + if (shared192D0.turnOrder[a] != 0) { + int i; + + for (i = 0; i < 4; i++) + { + if (shared192D0.turnOrder[a] - 1 == shared192D0.turnOrder[i]) + break; + } + shared192D0.jamQueue[0] = i; + shared192D0.jamQueue[1] = 0xFF; + idx = WasAtLeastOneOpponentJammed(); + } + if (idx == 0) + SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2); + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE); +} + +// Slightly startles those that have made appeals. +static void ContestEffect_StartlePrevMons(void) +{ + u8 idx = 0; + u8 a = shared192D0.contestant; + + if (shared192D0.turnOrder[a] != 0) + { + int i, j; + + for (i = 0, j = 0; i < 4; i++) + { + if (shared192D0.turnOrder[a] > shared192D0.turnOrder[i]) + shared192D0.jamQueue[j++] = i; + } + + shared192D0.jamQueue[j] = 0xFF; + idx = WasAtLeastOneOpponentJammed(); + } + if (idx == 0) + SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2); + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE); +} + +// Startles the POKéMON that appealed before the user. +static void ContestEffect_StartlePrevMon2(void) +{ + u8 rval = Random() % 10; + int jam; + + if (rval < 2) + jam = 20; + else if (rval < 8) + jam = 40; + else + jam = 60; + + shared192D0.jam = jam; + ContestEffect_StartleFrontMon(); +} + +// Startles all POKéMON that appealed before the user. +static void ContestEffect_StartlePrevMons2(void) +{ + u8 numStartled = 0; + u8 contestant = shared192D0.contestant; + u8 turnOrder = shared192D0.turnOrder[contestant]; + + if (turnOrder != 0) + { + int i; + + for (i = 0; i < 4; i++) + { + if (shared192D0.turnOrder[contestant] > shared192D0.turnOrder[i]) + { + u8 rval, jam; + + shared192D0.jamQueue[0] = i; + shared192D0.jamQueue[1] = 0xFF; + rval = Random() % 10; + + if (rval == 0) + jam = 0; + else if (rval <= 2) + jam = 10; + else if (rval <= 4) + jam = 20; + else if (rval <= 6) + jam = 30; + else if (rval <= 8) + jam = 40; + else + jam = 60; + + shared192D0.jam = jam; + + if (WasAtLeastOneOpponentJammed()) + numStartled++; + } + } + } + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE); + if (numStartled == 0) + SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2); +} + +// Shifts the JUDGE’s attention from others. +static void ContestEffect_ShiftJudgeAttention(void) +{ + bool32 hitAny = FALSE; + u8 contestant = shared192D0.contestant; + + if (shared192D0.turnOrder[shared192D0.contestant] != 0) + { + int i; + + for (i = 0; i < 4; i++) + { + if (shared192D0.turnOrder[contestant] > shared192D0.turnOrder[i] && + sContestantStatus[i].hasJudgesAttention && + CanUnnerveContestant(i)) + { + sContestantStatus[i].hasJudgesAttention = FALSE; + sContestantStatus[i].judgesAttentionWasRemoved = TRUE; + SetContestantEffectStringID(i, CONTEST_STRING_JUDGE_LOOK_AWAY2); + hitAny = TRUE; + } + } + } + SetContestantEffectStringID(shared192D0.contestant,CONTEST_STRING_DAZZLE_ATTEMPT); + if (!hitAny) + { + SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2); + } +} + +// Startles the POKéMON that has the JUDGE’s attention. +static void ContestEffect_StartleMonWithJudgesAttention(void) +{ + u8 numStartled = 0; + u8 contestant = shared192D0.contestant; + + if (shared192D0.turnOrder[shared192D0.contestant] != 0) + { + int i; + + for (i = 0; i < 4; i++) + { + if (shared192D0.turnOrder[contestant] > shared192D0.turnOrder[i]) + { + if (sContestantStatus[i].hasJudgesAttention) + shared192D0.jam = 50; + else + shared192D0.jam = 10; + shared192D0.jamQueue[0] = i; + shared192D0.jamQueue[1] = 0xFF; + if (WasAtLeastOneOpponentJammed()) + numStartled++; + } + } + } + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE); + if (numStartled == 0) + SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2); +} + +// Jams the others, and misses one turn of appeals. +static void ContestEffect_JamsOthersButMissOneTurn(void) +{ + sContestantStatus[shared192D0.contestant].turnSkipped = TRUE; + ContestEffect_StartlePrevMons(); + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE); +} + +// Startles POKéMON that made a same-type appeal. +static void ContestEffect_StartleMonsSameTypeAppeal(void) +{ + u16 move = sContestantStatus[shared192D0.contestant].currMove; + JamByMoveCategory(gContestMoves[move].contestCategory); + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE); +} + +// Badly startles POKéMON that made COOL appeals. +static void ContestEffect_StartleMonsCoolAppeal(void) +{ + JamByMoveCategory(CONTEST_CATEGORY_COOL); + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE); +} + +// Badly startles POKéMON that made BEAUTY appeals. +static void ContestEffect_StartleMonsBeautyAppeal(void) +{ + JamByMoveCategory(CONTEST_CATEGORY_BEAUTY); + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE); +} + +// Badly startles POKéMON that made CUTE appeals. +static void ContestEffect_StartleMonsCuteAppeal(void) +{ + JamByMoveCategory(CONTEST_CATEGORY_CUTE); + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE); +} + +// Badly startles POKéMON that made SMART appeals. +static void ContestEffect_StartleMonsSmartAppeal(void) +{ + JamByMoveCategory(CONTEST_CATEGORY_SMART); + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE); +} + +// Badly startles POKéMON that made TOUGH appeals. +static void ContestEffect_StartleMonsToughAppeal(void) +{ + JamByMoveCategory(CONTEST_CATEGORY_TOUGH); + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE); +} + +// Makes one POKéMON after the user nervous. +static void ContestEffect_MakeFollowingMonNervous(void) +{ + bool32 hitAny = FALSE; + + if (shared192D0.turnOrder[shared192D0.contestant] != 3) + { + int i; + + for (i = 0; i < 4; i++) + { + if (shared192D0.turnOrder[shared192D0.contestant] + 1 == shared192D0.turnOrder[i]) + { + if (CanUnnerveContestant(i)) + { + MakeContestantNervous(i); + SetContestantEffectStringID(i, CONTEST_STRING_NERVOUS); + hitAny = TRUE; + } + else + { + SetContestantEffectStringID(i, CONTEST_STRING_UNAFFECTED); + hitAny = TRUE; + } + } + } + } + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_UNNERVE_ATTEMPT); + if (!hitAny) + SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2); +} + +// Makes all POKéMON after the user nervous. +static void ContestEffect_MakeFollowingMonsNervous(void) +{ + u8 numUnnerved = 0; + bool32 contestantUnnerved = FALSE; + u8 contestantIds[5]; + int i; + int numAfter; + s16 oddsMod[4]; + s16 odds[4]; + + memset(contestantIds, 0xFF, ARRAY_COUNT(contestantIds)); + for (i = 0, numAfter = 0; i < 4; i++) + { + if (shared192D0.turnOrder[shared192D0.contestant] < shared192D0.turnOrder[i] && + !sContestantStatus[i].nervous && !Contest_IsMonsTurnDisabled(i)) + contestantIds[numAfter++] = i; + } + + if (numAfter == 1) + { + odds[0] = 60; + } + else if (numAfter == 2) + { + odds[0] = 30; + odds[1] = 30; + } + else if (numAfter == 3) + { + odds[0] = 20; + odds[1] = 20; + odds[2] = 20; + } + else + { + for (i = 0; i < 4; i++) + odds[i] = 0; + } + for (i = 0; i < 4; i++) + { + if (sContestantStatus[i].hasJudgesAttention && sub_80DE1E8(i)) + oddsMod[i] = gComboStarterLookupTable[gContestMoves[sContestantStatus[i].prevMove].comboStarterId] * 10; + else + oddsMod[i] = 0; + oddsMod[i] -= (sContestantStatus[i].condition / 10) * 10; + } + if (odds[0] != 0) + { + for (i = 0; contestantIds[i] != 0xFF; i++) + { + if (Random() % 100 < odds[i] + oddsMod[contestantIds[i]]) + { + if (CanUnnerveContestant(contestantIds[i])) + { + MakeContestantNervous(contestantIds[i]); + SetContestantEffectStringID(contestantIds[i], CONTEST_STRING_NERVOUS); + numUnnerved++; + } + else + { + contestantUnnerved = TRUE; + } + } + else + { + contestantUnnerved = TRUE; + } + + if (contestantUnnerved) + { + contestantUnnerved = FALSE; + SetContestantEffectStringID(contestantIds[i], CONTEST_STRING_UNAFFECTED); + numUnnerved++; + } + shared192D0.unnervedPokes[contestantIds[i]] = 1; + } + } + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_UNNERVE_WAITING); + if (numUnnerved == 0) + SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2); +} + +// Worsens the condition of those that made appeals. +static void ContestEffect_WorsenConditionOfPrevMons(void) +{ + u8 numHit = 0; + int i; + + for (i = 0; i < 4; i++) + { + if (shared192D0.turnOrder[shared192D0.contestant] > shared192D0.turnOrder[i] && + sContestantStatus[i].condition > 0 && + CanUnnerveContestant(i)) + { + sContestantStatus[i].condition = 0; + sContestantStatus[i].conditionMod = 2; + SetContestantEffectStringID(i, CONTEST_STRING_REGAINED_FORM); + numHit++; + } + } + + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_TAUNT_WELL); + if (numHit == 0) + SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_IGNORED); +} + +// Badly startles POKéMON in good condition. +static void ContestEffect_BadlyStartlesMonsInGoodCondition(void) +{ + u8 numHit = 0; + int i; + + for (i = 0; i < 4; i++) + { + if (shared192D0.turnOrder[shared192D0.contestant] > shared192D0.turnOrder[i]) + { + if (sContestantStatus[i].condition > 0) + shared192D0.jam = 40; + else + shared192D0.jam = 10; + shared192D0.jamQueue[0] = i; + shared192D0.jamQueue[1] = 0xFF; + if (WasAtLeastOneOpponentJammed()) + numHit++; + } + } + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_JAM_WELL); + if (numHit == 0) + SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_IGNORED); +} + +// The appeal works great if performed first. +static void ContestEffect_BetterIfFirst(void) +{ + if (gUnknown_02039F26[shared192D0.contestant] == 0) + { + u16 move = sContestantStatus[shared192D0.contestant].currMove; + sContestantStatus[shared192D0.contestant].appeal2 += 2 * gContestEffects[gContestMoves[move].effect].appeal; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_HUSTLE_STANDOUT); + } +} + +// The appeal works great if performed last. +static void ContestEffect_BetterIfLast(void) +{ + if (gUnknown_02039F26[shared192D0.contestant] == 3) + { + u16 move = sContestantStatus[shared192D0.contestant].currMove; + sContestantStatus[shared192D0.contestant].appeal2 += 2 * gContestEffects[gContestMoves[move].effect].appeal; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_WORK_HARD_UNNOTICED); + } +} + +// Makes the appeal as good as those before it. +static void ContestEffect_AppealAsGoodAsPrevOnes(void) +{ + int i; + int appealSum; + + for (i = 0, appealSum = 0; i < 4; i++) + { + if (shared192D0.turnOrder[shared192D0.contestant] > shared192D0.turnOrder[i]) + appealSum += sContestantStatus[i].appeal2; + } + if (appealSum < 0) + appealSum = 0; + + if (shared192D0.turnOrder[shared192D0.contestant] == 0 || appealSum == 0) + { + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_NOT_WELL); + } + else + { + sContestantStatus[shared192D0.contestant].appeal2 += appealSum / 2; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_WORK_BEFORE); + } + sContestantStatus[shared192D0.contestant].appeal2 = RoundTowardsZero(sContestantStatus[shared192D0.contestant].appeal2); +} + +// Makes the appeal as good as the one before it. +static void ContestEffect_AppealAsGoodAsPrevOne(void) +{ + s16 appeal = 0; + + if (shared192D0.turnOrder[shared192D0.contestant] != 0) + { + int i; + for (i = 0; i < 4; i++) + { + if (shared192D0.turnOrder[shared192D0.contestant] - 1 == shared192D0.turnOrder[i]) + appeal = sContestantStatus[i].appeal2; + } + } + if (shared192D0.turnOrder[shared192D0.contestant] == 0 || appeal <= 0) + { + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_NOT_WELL2); + } + else + { + sContestantStatus[shared192D0.contestant].appeal2 += appeal; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_WORK_PRECEDING); + } +} + +// The appeal works better the later it is performed. +static void ContestEffect_BetterWhenLater(void) +{ + u8 whichTurn = shared192D0.turnOrder[shared192D0.contestant]; + if (whichTurn == 0) + sContestantStatus[shared192D0.contestant].appeal2 = 10; + else + sContestantStatus[shared192D0.contestant].appeal2 = 20 * whichTurn; + if (whichTurn == 0) + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_NOT_SHOWN_WELL); + else if (whichTurn == 1) + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_SLIGHTLY_WELL); + else if (whichTurn == 2) + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_PRETTY_WELL); + else + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_EXCELLENTLY); +} + +// The appeal’s quality varies depending on its timing. +static void ContestEffect_QualityDependsOnTiming(void) +{ + u8 rval = Random() % 10; + s16 appeal; + + if (rval < 3) + { + appeal = 10; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_NOT_VERY_WELL); + } else if (rval < 6) + { + appeal = 20; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_SLIGHTLY_WELL2); + } else if (rval < 8) + { + appeal = 40; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_PRETTY_WELL2); + } else if (rval < 9) + { + appeal = 60; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_VERY_WELL); + } + else + { + appeal = 80; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_EXCELLENTLY2); + } + sContestantStatus[shared192D0.contestant].appeal2 = appeal; +} + +static void ContestEffect_BetterIfSameType(void) +{ + s8 turnOrder = shared192D0.turnOrder[shared192D0.contestant]; + s8 i = turnOrder - 1, j; + u16 move; + + if (turnOrder == 0) + return; + + while (1) + { + for (j = 0; j < 4; j++) + { + if (shared192D0.turnOrder[j] == i) + break; + } + if (sContestantStatus[j].noMoreTurns || sContestantStatus[j].nervous || sContestantStatus[j].numTurnsSkipped) + { + if (--i < 0) + return; + } + else + { + break; + } + } + + move = sContestantStatus[shared192D0.contestant].currMove; + if (gContestMoves[move].contestCategory == gContestMoves[sContestantStatus[j].currMove].contestCategory) + { + sContestantStatus[shared192D0.contestant].appeal2 += gContestEffects[gContestMoves[move].effect].appeal * 2; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_SAME_TYPE_GOOD); + } +} + +// Works well if different in type than the one before. +static void ContestEffect_BetterIfDiffType(void) +{ + if (shared192D0.turnOrder[shared192D0.contestant] != 0) + { + u16 move = sContestantStatus[shared192D0.contestant].currMove; + int i; + + for (i = 0; i < 4; i++) + { + if (shared192D0.turnOrder[shared192D0.contestant] - 1 == shared192D0.turnOrder[i] && + gContestMoves[move].contestCategory != gContestMoves[sContestantStatus[i].currMove].contestCategory) + { + sContestantStatus[shared192D0.contestant].appeal2 += gContestEffects[gContestMoves[move].effect].appeal * 2; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_DIFF_TYPE_GOOD); + break; + } + } + } +} + +// Affected by how well the appeal in front goes. +static void ContestEffect_AffectedByPrevAppeal(void) +{ + if (shared192D0.turnOrder[shared192D0.contestant] != 0) + { + int i; + + for (i = 0; i < 4; i++) + { + if (shared192D0.turnOrder[shared192D0.contestant] - 1 == shared192D0.turnOrder[i]) + { + if (sContestantStatus[shared192D0.contestant].appeal2 > sContestantStatus[i].appeal2) + { + sContestantStatus[shared192D0.contestant].appeal2 *= 2; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_STOOD_OUT_AS_MUCH); + } + else if (sContestantStatus[shared192D0.contestant].appeal2 < sContestantStatus[i].appeal2) + { + sContestantStatus[shared192D0.contestant].appeal2 = 0; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_NOT_AS_WELL); + } + } + } + } +} + +// Ups the user’s condition. Helps prevent nervousness. +static void ContestEffect_ImproveConditionPreventNervousness(void) +{ + if (sContestantStatus[shared192D0.contestant].condition < 30) + { + sContestantStatus[shared192D0.contestant].condition += 10; + sContestantStatus[shared192D0.contestant].conditionMod = 1; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_CONDITION_ROSE); + } + else + { + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_NO_CONDITION_IMPROVE); + } +} + +// The appeal works well if the user’s condition is good. +static void ContestEffect_BetterWithGoodCondition(void) +{ + sContestantStatus[shared192D0.contestant].appealTripleCondition = TRUE; + if (sContestantStatus[shared192D0.contestant].condition != 0) + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_HOT_STATUS); + else + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_BAD_CONDITION_WEAK_APPEAL); +} + +// The next appeal can be made earlier next turn. +static void ContestEffect_NextAppealEarlier(void) +{ + s8 i; + s8 j; + u8 turnOrder[4]; + + if (sContest.turnNumber != 4) + { + for (i = 0; i < 4; i++) + turnOrder[i] = sContestantStatus[i].nextTurnOrder; + + turnOrder[shared192D0.contestant] = 0xFF; + + for (i = 0; i < 4; i++) + { + for (j = 0; j < 4; j++) + { + if (j != shared192D0.contestant && + i == turnOrder[j] && + turnOrder[j] == sContestantStatus[j].nextTurnOrder) + { + turnOrder[j]++; + break; + } + } + if (j == 4) + break; + } + + turnOrder[shared192D0.contestant] = 0; + sContestantStatus[shared192D0.contestant].turnOrderMod = 1; + + for (i = 0; i < 4; i++) + { + sContestantStatus[i].nextTurnOrder = turnOrder[i]; + } + sContestantStatus[shared192D0.contestant].turnOrderModAction = 1; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_MOVE_UP_LINE); + } +} + +// The next appeal can be made later next turn. +static void ContestEffect_NextAppealLater(void) +{ + s8 i; + s8 j; + u8 turnOrder[4]; + + if (sContest.turnNumber != 4) + { + for (i = 0; i < 4; i++) + turnOrder[i] = sContestantStatus[i].nextTurnOrder; + + turnOrder[shared192D0.contestant] = 0xFF; + + for (i = 3; i > -1; i--) + { + for (j = 0; j < 4; j++) + { + if (j != shared192D0.contestant && + i == turnOrder[j] && + turnOrder[j] == sContestantStatus[j].nextTurnOrder) + { + turnOrder[j]--; + break; + } + } + if (j == 4) + break; + } + + turnOrder[shared192D0.contestant] = 3; + sContestantStatus[shared192D0.contestant].turnOrderMod = 1; + + for (i = 0; i < 4; i++) + { + sContestantStatus[i].nextTurnOrder = turnOrder[i]; + } + sContestantStatus[shared192D0.contestant].turnOrderModAction = 2; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_MOVE_BACK_LINE); + } +} + +// Makes the next turn’s order more easily scrambled. +static void ContestEffect_MakeScramblingTurnOrderEasier(void) +{ + // dummied out? +} + +// Scrambles the order of appeals on the next turn. +static void ContestEffect_ScrambleNextTurnOrder(void) +{ + s8 i; + s8 j; + u8 turnOrder[4]; + u8 unselectedContestants[4]; + + if (sContest.turnNumber != 4) + { + for (i = 0; i < 4; i++) + { + turnOrder[i] = sContestantStatus[i].nextTurnOrder; + unselectedContestants[i] = i; + } + + for (i = 0; i < 4; i++) + { + u8 rval = Random() % (4 - i); + + for (j = 0; j < 4; j++) + { + if (unselectedContestants[j] != 0xFF) + { + if (rval == 0) + { + turnOrder[j] = i; + unselectedContestants[j] = 0xFF; + break; + } + else + rval--; + } + } + } + + for (i = 0; i < 4; i++) + { + sContestantStatus[i].nextTurnOrder = turnOrder[i]; + sContestantStatus[i].turnOrderMod = 2; + } + sContestantStatus[shared192D0.contestant].turnOrderModAction = 3; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_SCRAMBLE_ORDER); + } +} + +// An appeal that excites the audience in any CONTEST. +static void ContestEffect_ExciteAudienceInAnyContest(void) +{ + if (gContestMoves[sContestantStatus[shared192D0.contestant].currMove].contestCategory != gSpecialVar_ContestCategory) + { + sContestantStatus[shared192D0.contestant].overrideCategoryExcitementMod = TRUE; + } +} + +// Badly startles all POKéMON that made good appeals. +static void ContestEffect_BadlyStartleMonsWithGoodAppeals(void) +{ + int i; + u8 numJammed = 0; + + for (i = 0; i < 4; i++) + { + if (shared192D0.turnOrder[shared192D0.contestant] > shared192D0.turnOrder[i]) + { + if (sContestantStatus[i].appeal2 > 0) + { + shared192D0.jam = sContestantStatus[i].appeal2 / 2; + shared192D0.jam = RoundUp(shared192D0.jam); + } + else + shared192D0.jam = 10; + shared192D0.jamQueue[0] = i; + shared192D0.jamQueue[1] = 0xFF; + if (WasAtLeastOneOpponentJammed()) + numJammed++; + } + } + if (numJammed == 0) + SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2); + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE); +} + +// The appeal works best the more the crowd is excited. +static void ContestEffect_BetterWhenAudienceExcited(void) +{ + s16 appeal; + + if (sContest.applauseLevel == 0) + { + appeal = 10; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_NOT_VERY_WELL); + } + else if (sContest.applauseLevel == 1) + { + appeal = 20; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_SLIGHTLY_WELL2); + } + else if (sContest.applauseLevel == 2) + { + appeal = 30; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_PRETTY_WELL2); + } + else if (sContest.applauseLevel == 3) + { + appeal = 50; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_VERY_WELL); + } + else + { + appeal = 60; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_EXCELLENTLY2); + } + sContestantStatus[shared192D0.contestant].appeal2 = appeal; +} + +// Temporarily stops the crowd from growing excited. +static void ContestEffect_DontExciteAudience(void) +{ + if (!shared19328.excitementFrozen) + { + shared19328.excitementFrozen = TRUE; + shared19328.excitementFreezer = shared192D0.contestant; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTRACTED_ATTENTION); + } +} + +static void JamByMoveCategory(u8 category) +{ + int i; + int numJammed = 0; + + for (i = 0; i < 4; i++) + { + if (shared192D0.turnOrder[shared192D0.contestant] > shared192D0.turnOrder[i]) + { + if (category == gContestMoves[sContestantStatus[i].currMove].contestCategory) + shared192D0.jam = 40; + else + shared192D0.jam = 10; + shared192D0.jamQueue[0] = i; + shared192D0.jamQueue[1] = 0xFF; + if (WasAtLeastOneOpponentJammed()) + numJammed++; + } + } + + if (numJammed == 0) + SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2); +} + +static bool8 CanUnnerveContestant(u8 i) +{ + shared192D0.unnervedPokes[i] = 1; + if (sContestantStatus[i].immune) + { + SetContestantEffectStringID(i, CONTEST_STRING_AVOID_SEEING); + return FALSE; + } + else if (sContestantStatus[i].jamSafetyCount != 0) + { + sContestantStatus[i].jamSafetyCount--; + SetContestantEffectStringID(i, CONTEST_STRING_AVERT_GAZE); + return FALSE; + } + else if (!sContestantStatus[i].noMoreTurns && sContestantStatus[i].numTurnsSkipped == 0) + { + return TRUE; + } + else + { + return FALSE; + } +} + +static bool8 WasAtLeastOneOpponentJammed(void) +{ + s16 jamBuffer[4] = {0}; + int i; + + for (i = 0; shared192D0.jamQueue[i] != 0xFF; i++) + { + u8 contestant = shared192D0.jamQueue[i]; + if (CanUnnerveContestant(contestant)) + { + shared192D0.jam2 = shared192D0.jam; + if (sContestantStatus[contestant].moreEasilyStartled) + shared192D0.jam2 *= 2; + if (sContestantStatus[contestant].resistant) + { + shared192D0.jam2 = 10; + SetContestantEffectStringID(contestant, CONTEST_STRING_LITTLE_DISTRACTED); + } + else + { + shared192D0.jam2 -= sContestantStatus[contestant].jamReduction; + if (shared192D0.jam2 <= 0) + { + shared192D0.jam2 = 0; + SetContestantEffectStringID(contestant, CONTEST_STRING_NOT_FAZED); + } + else + { + JamContestant(contestant, shared192D0.jam2); + SetStartledString(contestant, shared192D0.jam2); + jamBuffer[contestant] = shared192D0.jam2; + } + } + } + } + + for (i = 0; i < 4; i++) + { + if (jamBuffer[i] != 0) + return TRUE; + } + return FALSE; +} + +static void JamContestant(u8 i, u8 jam) +{ + sContestantStatus[i].appeal2 -= jam; + sContestantStatus[i].jam += jam; +} + +static s16 RoundTowardsZero(s16 score) +{ + s16 absScore = abs(score) % 10; + if (score < 0) + { + if (absScore != 0) + score -= 10 - absScore; + } + else + score -= absScore; + return score; +} + +static s16 RoundUp(s16 score) +{ + s16 absScore = abs(score) % 10; + if (absScore != 0) + score += 10 - absScore; + return score; +} diff --git a/src/data/contest_moves.h b/src/data/contest_moves.h new file mode 100644 index 000000000..ae560c833 --- /dev/null +++ b/src/data/contest_moves.h @@ -0,0 +1,3008 @@ +const struct ContestMove gContestMoves[MOVES_COUNT] = +{ + [MOVE_NONE] = {0}, + + [MOVE_POUND] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_POUND, + .comboMoves = {0}, + }, + + [MOVE_KARATE_CHOP] = + { + .effect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY}, + }, + + [MOVE_DOUBLE_SLAP] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_POUND}, + }, + + [MOVE_COMET_PUNCH] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_MEGA_PUNCH] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_MIND_READER}, + }, + + [MOVE_PAY_DAY] = + { + .effect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_FIRE_PUNCH] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = COMBO_STARTER_FIRE_PUNCH, + .comboMoves = {COMBO_STARTER_SUNNY_DAY, COMBO_STARTER_THUNDER_PUNCH, COMBO_STARTER_ICE_PUNCH}, + }, + + [MOVE_ICE_PUNCH] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = COMBO_STARTER_ICE_PUNCH, + .comboMoves = {COMBO_STARTER_THUNDER_PUNCH, COMBO_STARTER_FIRE_PUNCH}, + }, + + [MOVE_THUNDER_PUNCH] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = COMBO_STARTER_THUNDER_PUNCH, + .comboMoves = {COMBO_STARTER_CHARGE, COMBO_STARTER_FIRE_PUNCH, COMBO_STARTER_ICE_PUNCH}, + }, + + [MOVE_SCRATCH] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_SCRATCH, + .comboMoves = {COMBO_STARTER_LEER}, + }, + + [MOVE_VICE_GRIP] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_VICE_GRIP, + .comboMoves = {0}, + }, + + [MOVE_GUILLOTINE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_VICE_GRIP}, + }, + + [MOVE_RAZOR_WIND] = + { + .effect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SWORDS_DANCE] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = COMBO_STARTER_SWORDS_DANCE, + .comboMoves = {0}, + }, + + [MOVE_CUT] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SWORDS_DANCE}, + }, + + [MOVE_GUST] = + { + .effect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_WING_ATTACK] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_WHIRLWIND] = + { + .effect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_FLY] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_BIND] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_VICE_GRIP}, + }, + + [MOVE_SLAM] = + { + .effect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_POUND}, + }, + + [MOVE_VINE_WHIP] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_GROWTH}, + }, + + [MOVE_STOMP] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0,{0, COMBO_STARTER_LEER}, + }, + + [MOVE_DOUBLE_KICK] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_MEGA_KICK] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_MIND_READER}, + }, + + [MOVE_JUMP_KICK] = + { + .effect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_MIND_READER}, + }, + + [MOVE_ROLLING_KICK] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SAND_ATTACK] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = COMBO_STARTER_SAND_ATTACK, + .comboMoves = {COMBO_STARTER_MUD_SLAP, COMBO_STARTER_SANDSTORM}, + }, + + [MOVE_HEADBUTT] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MON, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY}, + }, + + [MOVE_HORN_ATTACK] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = COMBO_STARTER_HORN_ATTACK, + .comboMoves = {COMBO_STARTER_LEER}, + }, + + [MOVE_FURY_ATTACK] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_HORN_ATTACK, COMBO_STARTER_PECK}, + }, + + [MOVE_HORN_DRILL] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_HORN_ATTACK}, + }, + + [MOVE_TACKLE] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_DEFENSE_CURL, COMBO_STARTER_LEER, COMBO_STARTER_HARDEN}, + }, + + [MOVE_BODY_SLAM] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_WRAP] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_TAKE_DOWN] = + { + .effect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_HARDEN}, + }, + + [MOVE_THRASH] = + { + .effect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAGE}, + }, + + [MOVE_DOUBLE_EDGE] = + { + .effect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_HARDEN}, + }, + + [MOVE_TAIL_WHIP] = + { + .effect = CONTEST_EFFECT_BETTER_IF_LAST, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CHARM}, + }, + + [MOVE_POISON_STING] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_TWINEEDLE] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MON, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_PIN_MISSILE] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_LEER] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = COMBO_STARTER_LEER, + .comboMoves = {COMBO_STARTER_RAGE, COMBO_STARTER_SCARY_FACE}, + }, + + [MOVE_BITE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_LEER, COMBO_STARTER_SCARY_FACE}, + }, + + [MOVE_GROWL] = + { + .effect = CONTEST_EFFECT_BETTER_IF_LAST, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CHARM}, + }, + + [MOVE_ROAR] = + { + .effect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SING] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = COMBO_STARTER_SING, + .comboMoves = {0}, + }, + + [MOVE_SUPERSONIC] = + { + .effect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SONIC_BOOM] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_DISABLE] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_ACID] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_EMBER] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_FLAMETHROWER] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_MIST] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_WATER_GUN] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_WATER_SPORT, COMBO_STARTER_MUD_SPORT}, + }, + + [MOVE_HYDRO_PUMP] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE}, + }, + + [MOVE_SURF] = + { + .effect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = COMBO_STARTER_SURF, + .comboMoves = {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_DIVE}, + }, + + [MOVE_ICE_BEAM] = + { + .effect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_BLIZZARD] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_POWDER_SNOW, COMBO_STARTER_HAIL}, + }, + + [MOVE_PSYBEAM] = + { + .effect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CALM_MIND}, + }, + + [MOVE_BUBBLE_BEAM] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE}, + }, + + [MOVE_AURORA_BEAM] = + { + .effect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_HYPER_BEAM] = + { + .effect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_PECK] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = COMBO_STARTER_PECK, + .comboMoves = {0}, + }, + + [MOVE_DRILL_PECK] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_PECK}, + }, + + [MOVE_SUBMISSION] = + { + .effect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_MIND_READER}, + }, + + [MOVE_LOW_KICK] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_COUNTER] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_TAUNT}, + }, + + [MOVE_SEISMIC_TOSS] = + { + .effect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FAKE_OUT}, + }, + + [MOVE_STRENGTH] = + { + .effect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_ABSORB] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_GROWTH}, + }, + + [MOVE_MEGA_DRAIN] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_GROWTH}, + }, + + [MOVE_LEECH_SEED] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_GROWTH] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = COMBO_STARTER_GROWTH, + .comboMoves = {0}, + }, + + [MOVE_RAZOR_LEAF] = + { + .effect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_GROWTH}, + }, + + [MOVE_SOLAR_BEAM] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY, COMBO_STARTER_GROWTH}, + }, + + [MOVE_POISON_POWDER] = + { + .effect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SWEET_SCENT}, + }, + + [MOVE_STUN_SPORE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SWEET_SCENT}, + }, + + [MOVE_SLEEP_POWDER] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SWEET_SCENT}, + }, + + [MOVE_PETAL_DANCE] = + { + .effect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_GROWTH}, + }, + + [MOVE_STRING_SHOT] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = COMBO_STARTER_STRING_SHOT, + .comboMoves = {0}, + }, + + [MOVE_DRAGON_RAGE] = + { + .effect = CONTEST_EFFECT_BETTER_WHEN_LATER, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = COMBO_STARTER_DRAGON_RAGE, + .comboMoves = {COMBO_STARTER_DRAGON_BREATH, COMBO_STARTER_DRAGON_DANCE}, + }, + + [MOVE_FIRE_SPIN] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_THUNDER_SHOCK] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CHARGE}, + }, + + [MOVE_THUNDERBOLT] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CHARGE}, + }, + + [MOVE_THUNDER_WAVE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CHARGE}, + }, + + [MOVE_THUNDER] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CHARGE, COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_LOCK_ON}, + }, + + [MOVE_ROCK_THROW] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_ROCK_THROW, + .comboMoves = {0}, + }, + + [MOVE_EARTHQUAKE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_EARTHQUAKE, + .comboMoves = {0}, + }, + + [MOVE_FISSURE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_EARTHQUAKE}, + }, + + [MOVE_DIG] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_TOXIC] = + { + .effect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_CONFUSION] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = COMBO_STARTER_CONFUSION, + .comboMoves = {COMBO_STARTER_PSYCHIC, COMBO_STARTER_KINESIS, COMBO_STARTER_CALM_MIND}, + }, + + [MOVE_PSYCHIC] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = COMBO_STARTER_PSYCHIC, + .comboMoves = {COMBO_STARTER_KINESIS, COMBO_STARTER_CONFUSION, COMBO_STARTER_CALM_MIND}, + }, + + [MOVE_HYPNOSIS] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = COMBO_STARTER_HYPNOSIS, + .comboMoves = {0}, + }, + + [MOVE_MEDITATE] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CALM_MIND}, + }, + + [MOVE_AGILITY] = + { + .effect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_DOUBLE_TEAM}, + }, + + [MOVE_QUICK_ATTACK] = + { + .effect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_DOUBLE_TEAM}, + }, + + [MOVE_RAGE] = + { + .effect = CONTEST_EFFECT_REPETITION_NOT_BORING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = COMBO_STARTER_RAGE, + .comboMoves = {0}, + }, + + [MOVE_TELEPORT] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_DOUBLE_TEAM, COMBO_STARTER_PSYCHIC, COMBO_STARTER_KINESIS, COMBO_STARTER_CONFUSION}, + }, + + [MOVE_NIGHT_SHADE] = + { + .effect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_MIMIC] = + { + .effect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SCREECH] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_DOUBLE_TEAM] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = COMBO_STARTER_DOUBLE_TEAM, + .comboMoves = {0}, + }, + + [MOVE_RECOVER] = + { + .effect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_HARDEN] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_HARDEN, + .comboMoves = {0}, + }, + + [MOVE_MINIMIZE] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SMOKESCREEN] = + { + .effect = CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SMOG}, + }, + + [MOVE_CONFUSE_RAY] = + { + .effect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_WITHDRAW] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE}, + }, + + [MOVE_DEFENSE_CURL] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = COMBO_STARTER_DEFENSE_CURL, + .comboMoves = {0}, + }, + + [MOVE_BARRIER] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_LIGHT_SCREEN] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CALM_MIND}, + }, + + [MOVE_HAZE] = + { + .effect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_REFLECT] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CALM_MIND}, + }, + + [MOVE_FOCUS_ENERGY] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = COMBO_STARTER_FOCUS_ENERGY, + .comboMoves = {0}, + }, + + [MOVE_BIDE] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_METRONOME] = + { + .effect = CONTEST_EFFECT_REPETITION_NOT_BORING, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_MIRROR_MOVE] = + { + .effect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SELF_DESTRUCT] = + { + .effect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_EGG_BOMB] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SOFT_BOILED}, + }, + + [MOVE_LICK] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SMOG] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_SMOG, + .comboMoves = {0}, + }, + + [MOVE_SLUDGE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_SLUDGE, + .comboMoves = {COMBO_STARTER_SLUDGE_BOMB}, + }, + + [MOVE_BONE_CLUB] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_BONE_CLUB, + .comboMoves = {COMBO_STARTER_BONEMERANG, COMBO_STARTER_BONE_RUSH}, + }, + + [MOVE_FIRE_BLAST] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_WATERFALL] = + { + .effect = CONTEST_EFFECT_BETTER_IF_LAST, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE}, + }, + + [MOVE_CLAMP] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE}, + }, + + [MOVE_SWIFT] = + { + .effect = CONTEST_EFFECT_BETTER_IF_FIRST, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SKULL_BASH] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SPIKE_CANNON] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_CONSTRICT] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MON, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_AMNESIA] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_KINESIS] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = COMBO_STARTER_KINESIS, + .comboMoves = {COMBO_STARTER_PSYCHIC, COMBO_STARTER_CONFUSION}, + }, + + [MOVE_SOFT_BOILED] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = COMBO_STARTER_SOFT_BOILED, + .comboMoves = {0}, + }, + + [MOVE_HI_JUMP_KICK] = + { + .effect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_MIND_READER}, + }, + + [MOVE_GLARE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_LEER}, + }, + + [MOVE_DREAM_EATER] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_HYPNOSIS, COMBO_STARTER_CALM_MIND}, + }, + + [MOVE_POISON_GAS] = + { + .effect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_BARRAGE] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_LEECH_LIFE] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_LOVELY_KISS] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SKY_ATTACK] = + { + .effect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_TRANSFORM] = + { + .effect = CONTEST_EFFECT_REPETITION_NOT_BORING, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_BUBBLE] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE}, + }, + + [MOVE_DIZZY_PUNCH] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SPORE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_FLASH] = + { + .effect = CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_PSYWAVE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CALM_MIND}, + }, + + [MOVE_SPLASH] = + { + .effect = CONTEST_EFFECT_BETTER_IF_LAST, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_ACID_ARMOR] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_CRABHAMMER] = + { + .effect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_SWORDS_DANCE}, + }, + + [MOVE_EXPLOSION] = + { + .effect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_FURY_SWIPES] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SCRATCH}, + }, + + [MOVE_BONEMERANG] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_BONEMERANG, + .comboMoves = {COMBO_STARTER_BONE_CLUB, COMBO_STARTER_BONE_RUSH}, + }, + + [MOVE_REST] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = COMBO_STARTER_REST, + .comboMoves = {COMBO_STARTER_BELLY_DRUM, COMBO_STARTER_CHARM, COMBO_STARTER_YAWN}, + }, + + [MOVE_ROCK_SLIDE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_ROCK_THROW}, + }, + + [MOVE_HYPER_FANG] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SHARPEN] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_CONVERSION] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_TRI_ATTACK] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_LOCK_ON}, + }, + + [MOVE_SUPER_FANG] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SCARY_FACE}, + }, + + [MOVE_SLASH] = + { + .effect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SWORDS_DANCE, COMBO_STARTER_SCRATCH}, + }, + + [MOVE_SUBSTITUTE] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_STRUGGLE] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SKETCH] = + { + .effect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_TRIPLE_KICK] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY}, + }, + + [MOVE_THIEF] = + { + .effect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SPIDER_WEB] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_STRING_SHOT}, + }, + + [MOVE_MIND_READER] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = COMBO_STARTER_MIND_READER, + .comboMoves = {0}, + }, + + [MOVE_NIGHTMARE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_HYPNOSIS}, + }, + + [MOVE_FLAME_WHEEL] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_SNORE] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_REST}, + }, + + [MOVE_CURSE] = + { + .effect = CONTEST_EFFECT_NEXT_APPEAL_LATER, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_CURSE, + .comboMoves = {0}, + }, + + [MOVE_FLAIL] = + { + .effect = CONTEST_EFFECT_BETTER_WHEN_LATER, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_ENDURE}, + }, + + [MOVE_CONVERSION_2] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_AEROBLAST] = + { + .effect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_COTTON_SPORE] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_REVERSAL] = + { + .effect = CONTEST_EFFECT_BETTER_IF_LAST, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_ENDURE}, + }, + + [MOVE_SPITE] = + { + .effect = CONTEST_EFFECT_BETTER_WHEN_LATER, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CURSE}, + }, + + [MOVE_POWDER_SNOW] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = COMBO_STARTER_POWDER_SNOW, + .comboMoves = {COMBO_STARTER_HAIL}, + }, + + [MOVE_PROTECT] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_HARDEN}, + }, + + [MOVE_MACH_PUNCH] = + { + .effect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SCARY_FACE] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_SCARY_FACE, + .comboMoves = {COMBO_STARTER_RAGE, COMBO_STARTER_LEER}, + }, + + [MOVE_FAINT_ATTACK] = + { + .effect = CONTEST_EFFECT_BETTER_IF_FIRST, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FAKE_OUT, COMBO_STARTER_LEER, COMBO_STARTER_POUND}, + }, + + [MOVE_SWEET_KISS] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CHARM}, + }, + + [MOVE_BELLY_DRUM] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = COMBO_STARTER_BELLY_DRUM, + .comboMoves = {0}, + }, + + [MOVE_SLUDGE_BOMB] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_SLUDGE_BOMB, + .comboMoves = {COMBO_STARTER_SLUDGE}, + }, + + [MOVE_MUD_SLAP] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = COMBO_STARTER_MUD_SLAP, + .comboMoves = {COMBO_STARTER_SAND_ATTACK, COMBO_STARTER_MUD_SPORT, COMBO_STARTER_SANDSTORM}, + }, + + [MOVE_OCTAZOOKA] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_LOCK_ON}, + }, + + [MOVE_SPIKES] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_ZAP_CANNON] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_LOCK_ON}, + }, + + [MOVE_FORESIGHT] = + { + .effect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_DESTINY_BOND] = + { + .effect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_MEAN_LOOK, COMBO_STARTER_CURSE, COMBO_STARTER_ENDURE}, + }, + + [MOVE_PERISH_SONG] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_MEAN_LOOK, COMBO_STARTER_SING}, + }, + + [MOVE_ICY_WIND] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_DETECT] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_TAUNT}, + }, + + [MOVE_BONE_RUSH] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_BONE_RUSH, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_BONE_CLUB, COMBO_STARTER_BONEMERANG}, + }, + + [MOVE_LOCK_ON] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = COMBO_STARTER_LOCK_ON, + .comboMoves = {0}, + }, + + [MOVE_OUTRAGE] = + { + .effect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SANDSTORM] = + { + .effect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_SANDSTORM, + .comboMoves = {0}, + }, + + [MOVE_GIGA_DRAIN] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_GROWTH}, + }, + + [MOVE_ENDURE] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_ENDURE, + .comboMoves = {0}, + }, + + [MOVE_CHARM] = + { + .effect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = COMBO_STARTER_CHARM, + .comboMoves = {0}, + }, + + [MOVE_ROLLOUT] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_DEFENSE_CURL, COMBO_STARTER_HARDEN}, + }, + + [MOVE_FALSE_SWIPE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SWORDS_DANCE}, + }, + + [MOVE_SWAGGER] = + { + .effect = CONTEST_EFFECT_BETTER_IF_FIRST, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_MILK_DRINK] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SPARK] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CHARGE}, + }, + + [MOVE_FURY_CUTTER] = + { + .effect = CONTEST_EFFECT_REPETITION_NOT_BORING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SWORDS_DANCE}, + }, + + [MOVE_STEEL_WING] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_MEAN_LOOK] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = COMBO_STARTER_MEAN_LOOK, + .comboMoves = {COMBO_STARTER_CURSE}, + }, + + [MOVE_ATTRACT] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SLEEP_TALK] = + { + .effect = CONTEST_EFFECT_REPETITION_NOT_BORING, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_REST}, + }, + + [MOVE_HEAL_BELL] = + { + .effect = CONTEST_EFFECT_BETTER_IF_LAST, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_RETURN] = + { + .effect = CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_PRESENT] = + { + .effect = CONTEST_EFFECT_REPETITION_NOT_BORING, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_FRUSTRATION] = + { + .effect = CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SAFEGUARD] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_PAIN_SPLIT] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_ENDURE}, + }, + + [MOVE_SACRED_FIRE] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_MAGNITUDE] = + { + .effect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_DYNAMIC_PUNCH] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_MIND_READER}, + }, + + [MOVE_MEGAHORN] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_DRAGON_BREATH] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = COMBO_STARTER_DRAGON_BREATH, + .comboMoves = {COMBO_STARTER_DRAGON_RAGE, COMBO_STARTER_DRAGON_DANCE}, + }, + + [MOVE_BATON_PASS] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_ENCORE] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_PURSUIT] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_RAPID_SPIN] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SWEET_SCENT] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = COMBO_STARTER_SWEET_SCENT, + .comboMoves = {0}, + }, + + [MOVE_IRON_TAIL] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_METAL_CLAW] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_METAL_SOUND}, + }, + + [MOVE_VITAL_THROW] = + { + .effect = CONTEST_EFFECT_NEXT_APPEAL_LATER, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FAKE_OUT}, + }, + + [MOVE_MORNING_SUN] = + { + .effect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_SYNTHESIS] = + { + .effect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_MOONLIGHT] = + { + .effect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_HIDDEN_POWER] = + { + .effect = CONTEST_EFFECT_REPETITION_NOT_BORING, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_CROSS_CHOP] = + { + .effect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY}, + }, + + [MOVE_TWISTER] = + { + .effect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_RAIN_DANCE] = + { + .effect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_RAIN_DANCE, + .comboMoves = {0}, + }, + + [MOVE_SUNNY_DAY] = + { + .effect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = COMBO_STARTER_SUNNY_DAY, + .comboMoves = {0}, + }, + + [MOVE_CRUNCH] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SCARY_FACE}, + }, + + [MOVE_MIRROR_COAT] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_TAUNT}, + }, + + [MOVE_PSYCH_UP] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_EXTREME_SPEED] = + { + .effect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_ANCIENT_POWER] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SHADOW_BALL] = + { + .effect = CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_FUTURE_SIGHT] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_PSYCHIC, COMBO_STARTER_KINESIS, COMBO_STARTER_CONFUSION, COMBO_STARTER_CALM_MIND}, + }, + + [MOVE_ROCK_SMASH] = + { + .effect = CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_WHIRLPOOL] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE}, + }, + + [MOVE_BEAT_UP] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_FAKE_OUT] = + { + .effect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = COMBO_STARTER_FAKE_OUT, + .comboMoves = {0}, + }, + + [MOVE_UPROAR] = + { + .effect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_STOCKPILE] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_STOCKPILE, + .comboMoves = {0}, + }, + + [MOVE_SPIT_UP] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_STOCKPILE}, + }, + + [MOVE_SWALLOW] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_STOCKPILE}, + }, + + [MOVE_HEAT_WAVE] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_HAIL] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = COMBO_STARTER_HAIL, + .comboMoves = {0}, + }, + + [MOVE_TORMENT] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_FLATTER] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CHARM}, + }, + + [MOVE_WILL_O_WISP] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_MEMENTO] = + { + .effect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_FACADE] = + { + .effect = CONTEST_EFFECT_BETTER_IF_LAST, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_FOCUS_PUNCH] = + { + .effect = CONTEST_EFFECT_NEXT_APPEAL_LATER, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY}, + }, + + [MOVE_SMELLING_SALT] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_FOLLOW_ME] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_NATURE_POWER] = + { + .effect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_CHARGE] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = COMBO_STARTER_CHARGE, + .comboMoves = {0}, + }, + + [MOVE_TAUNT] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = COMBO_STARTER_TAUNT, + .comboMoves = {0}, + }, + + [MOVE_HELPING_HAND] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_TRICK] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_ROLE_PLAY] = + { + .effect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_WISH] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_ASSIST] = + { + .effect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_INGRAIN] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SUPERPOWER] = + { + .effect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_LOCK_ON}, + }, + + [MOVE_MAGIC_COAT] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_RECYCLE] = + { + .effect = CONTEST_EFFECT_REPETITION_NOT_BORING, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_REVENGE] = + { + .effect = CONTEST_EFFECT_NEXT_APPEAL_LATER, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_BRICK_BREAK] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY}, + }, + + [MOVE_YAWN] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = COMBO_STARTER_YAWN, + .comboMoves = {0}, + }, + + [MOVE_KNOCK_OFF] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FAKE_OUT}, + }, + + [MOVE_ENDEAVOR] = + { + .effect = CONTEST_EFFECT_BETTER_IF_LAST, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_ENDURE}, + }, + + [MOVE_ERUPTION] = + { + .effect = CONTEST_EFFECT_BETTER_WHEN_LATER, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_ENDURE, COMBO_STARTER_EARTHQUAKE, COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_SKILL_SWAP] = + { + .effect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_IMPRISON] = + { + .effect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_REFRESH] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_WATER_SPORT, COMBO_STARTER_SING}, + }, + + [MOVE_GRUDGE] = + { + .effect = CONTEST_EFFECT_BETTER_WHEN_LATER, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CURSE}, + }, + + [MOVE_SNATCH] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SECRET_POWER] = + { + .effect = CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_DIVE] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = COMBO_STARTER_DIVE, + .comboMoves = {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_SURF}, + }, + + [MOVE_ARM_THRUST] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_FAKE_OUT}, + }, + + [MOVE_CAMOUFLAGE] = + { + .effect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_TAIL_GLOW] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_LUSTER_PURGE] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CALM_MIND}, + }, + + [MOVE_MIST_BALL] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CALM_MIND}, + }, + + [MOVE_FEATHER_DANCE] = + { + .effect = CONTEST_EFFECT_BETTER_IF_LAST, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_TEETER_DANCE] = + { + .effect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_BLAZE_KICK] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_MUD_SPORT] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = COMBO_STARTER_MUD_SPORT, + .comboMoves = {COMBO_STARTER_MUD_SLAP, COMBO_STARTER_WATER_SPORT}, + }, + + [MOVE_ICE_BALL] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_NEEDLE_ARM] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SLACK_OFF] = + { + .effect = CONTEST_EFFECT_BETTER_WHEN_LATER, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_YAWN}, + }, + + [MOVE_HYPER_VOICE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_POISON_FANG] = + { + .effect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_CRUSH_CLAW] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SWORDS_DANCE}, + }, + + [MOVE_BLAST_BURN] = + { + .effect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_HYDRO_CANNON] = + { + .effect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE}, + }, + + [MOVE_METEOR_MASH] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_ASTONISH] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_WEATHER_BALL] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_SUNNY_DAY, COMBO_STARTER_HAIL, COMBO_STARTER_SANDSTORM}, + }, + + [MOVE_AROMATHERAPY] = + { + .effect = CONTEST_EFFECT_BETTER_IF_LAST, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_FAKE_TEARS] = + { + .effect = CONTEST_EFFECT_BETTER_IF_LAST, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_AIR_CUTTER] = + { + .effect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_OVERHEAT] = + { + .effect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_ODOR_SLEUTH] = + { + .effect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_ROCK_TOMB] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_ROCK_THROW}, + }, + + [MOVE_SILVER_WIND] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_METAL_SOUND] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = COMBO_STARTER_METAL_SOUND, + .comboMoves = {0}, + }, + + [MOVE_GRASS_WHISTLE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_TICKLE] = + { + .effect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_COSMIC_POWER] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_WATER_SPOUT] = + { + .effect = CONTEST_EFFECT_BETTER_WHEN_LATER, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE}, + }, + + [MOVE_SIGNAL_BEAM] = + { + .effect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SHADOW_PUNCH] = + { + .effect = CONTEST_EFFECT_BETTER_IF_FIRST, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_EXTRASENSORY] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SKY_UPPERCUT] = + { + .effect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY}, + }, + + [MOVE_SAND_TOMB] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SANDSTORM}, + }, + + [MOVE_SHEER_COLD] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_MUDDY_WATER] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE}, + }, + + [MOVE_BULLET_SEED] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_GROWTH}, + }, + + [MOVE_AERIAL_ACE] = + { + .effect = CONTEST_EFFECT_BETTER_IF_FIRST, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_ICICLE_SPEAR] = + { + .effect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_IRON_DEFENSE] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_BLOCK] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_HOWL] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_DRAGON_CLAW] = + { + .effect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_DRAGON_BREATH, COMBO_STARTER_DRAGON_RAGE, COMBO_STARTER_DRAGON_DANCE}, + }, + + [MOVE_FRENZY_PLANT] = + { + .effect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_GROWTH}, + }, + + [MOVE_BULK_UP] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_BOUNCE] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_MUD_SHOT] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_POISON_TAIL] = + { + .effect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_COVET] = + { + .effect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_VOLT_TACKLE] = + { + .effect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CHARGE}, + }, + + [MOVE_MAGICAL_LEAF] = + { + .effect = CONTEST_EFFECT_BETTER_IF_FIRST, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_GROWTH}, + }, + + [MOVE_WATER_SPORT] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = COMBO_STARTER_WATER_SPORT, + .comboMoves = {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_MUD_SPORT}, + }, + + [MOVE_CALM_MIND] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = COMBO_STARTER_CALM_MIND, + .comboMoves = {0}, + }, + + [MOVE_LEAF_BLADE] = + { + .effect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_DRAGON_DANCE] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = COMBO_STARTER_DRAGON_DANCE, + .comboMoves = {COMBO_STARTER_DRAGON_RAGE, COMBO_STARTER_DRAGON_BREATH}, + }, + + [MOVE_ROCK_BLAST] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SHOCK_WAVE] = + { + .effect = CONTEST_EFFECT_BETTER_IF_FIRST, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CHARGE}, + }, + + [MOVE_WATER_PULSE] = + { + .effect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE}, + }, + + [MOVE_DOOM_DESIRE] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_PSYCHO_BOOST] = + { + .effect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CALM_MIND}, + }, +}; + +const struct ContestEffect gContestEffects[] = +{ + {0, 40, 0}, // CONTEST_EFFECT_HIGHLY_APPEALING + {0, 60, 0}, // CONTEST_EFFECT_USER_MORE_EASILY_STARTLED + {0, 80, 0}, // CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES + {0, 30, 0}, // CONTEST_EFFECT_REPETITION_NOT_BORING + {1, 20, 0}, // CONTEST_EFFECT_AVOID_STARTLE_ONCE + {1, 10, 0}, // CONTEST_EFFECT_AVOID_STARTLE + {1, 30, 0}, // CONTEST_EFFECT_AVOID_STARTLE_SLIGHTLY + {1, 30, 0}, // CONTEST_EFFECT_USER_LESS_EASILY_STARTLED + {2, 30, 20}, // CONTEST_EFFECT_STARTLE_FRONT_MON + {3, 30, 10}, // CONTEST_EFFECT_SLIGHTLY_STARTLE_PREV_MONS + {2, 20, 30}, // CONTEST_EFFECT_STARTLE_PREV_MON + {3, 20, 20}, // CONTEST_EFFECT_STARTLE_PREV_MONS + {2, 10, 40}, // CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON + {3, 10, 30}, // CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS + {2, 30, 20}, // CONTEST_EFFECT_STARTLE_PREV_MON_2 + {3, 30, 10}, // CONTEST_EFFECT_STARTLE_PREV_MONS_2 + {4, 30, 0}, // CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION + {3, 20, 10}, // CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION + {3, 40, 40}, // CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN + {3, 20, 10}, // CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL + {3, 20, 10}, // CONTEST_EFFECT_STARTLE_MONS_COOL_APPEAL + {3, 20, 10}, // CONTEST_EFFECT_STARTLE_MONS_BEAUTY_APPEAL + {3, 20, 10}, // CONTEST_EFFECT_STARTLE_MONS_CUTE_APPEAL + {3, 20, 10}, // CONTEST_EFFECT_STARTLE_MONS_SMART_APPEAL + {3, 20, 10}, // CONTEST_EFFECT_STARTLE_MONS_TOUGH_APPEAL + {4, 20, 0}, // CONTEST_EFFECT_MAKE_FOLLOWING_MON_NERVOUS + {4, 20, 0}, // CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS + {4, 30, 0}, // CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS + {3, 30, 10}, // CONTEST_EFFECT_BADLY_STARTLES_MONS_IN_GOOD_CONDITION + {5, 20, 0}, // CONTEST_EFFECT_BETTER_IF_FIRST + {5, 20, 0}, // CONTEST_EFFECT_BETTER_IF_LAST + {5, 10, 0}, // CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES + {5, 10, 0}, // CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE + {5, 10, 0}, // CONTEST_EFFECT_BETTER_WHEN_LATER + {5, 10, 0}, // CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING + {5, 20, 0}, // CONTEST_EFFECT_BETTER_IF_SAME_TYPE + {5, 20, 0}, // CONTEST_EFFECT_BETTER_IF_DIFF_TYPE + {5, 30, 0}, // CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL + {5, 10, 0}, // CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS + {5, 10, 0}, // CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION + {6, 30, 0}, // CONTEST_EFFECT_NEXT_APPEAL_EARLIER + {6, 30, 0}, // CONTEST_EFFECT_NEXT_APPEAL_LATER + {6, 30, 0}, // CONTEST_EFFECT_MAKE_SCRAMBLING_TURN_ORDER_EASIER + {6, 30, 0}, // CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER + {5, 10, 0}, // CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST + {3, 20, 10}, // CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS + {5, 10, 0}, // CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED + {4, 30, 0} // CONTEST_EFFECT_DONT_EXCITE_AUDIENCE +}; + +// A lookup table with TRUE for each combo starter ID and FALSE for ID 0, +// which means "not a combo starter move". +const bool8 gComboStarterLookupTable[] = +{ + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE +}; + +void (*const gContestEffectFuncs[])(void) = +{ + ContestEffect_HighlyAppealing, + ContestEffect_UserMoreEasilyStartled, + ContestEffect_GreatAppealButNoMoreMoves, + ContestEffect_RepetitionNotBoring, + ContestEffect_AvoidStartleOnce, + ContestEffect_AvoidStartle, + ContestEffect_AvoidStartleSlightly, + ContestEffect_UserLessEasilyStartled, + ContestEffect_StartleFrontMon, + ContestEffect_StartlePrevMons, + ContestEffect_StartleFrontMon, + ContestEffect_StartlePrevMons, + ContestEffect_StartleFrontMon, + ContestEffect_StartlePrevMons, + ContestEffect_StartlePrevMon2, + ContestEffect_StartlePrevMons2, + ContestEffect_ShiftJudgeAttention, + ContestEffect_StartleMonWithJudgesAttention, + ContestEffect_JamsOthersButMissOneTurn, + ContestEffect_StartleMonsSameTypeAppeal, + ContestEffect_StartleMonsCoolAppeal, + ContestEffect_StartleMonsBeautyAppeal, + ContestEffect_StartleMonsCuteAppeal, + ContestEffect_StartleMonsSmartAppeal, + ContestEffect_StartleMonsToughAppeal, + ContestEffect_MakeFollowingMonNervous, + ContestEffect_MakeFollowingMonsNervous, + ContestEffect_WorsenConditionOfPrevMons, + ContestEffect_BadlyStartlesMonsInGoodCondition, + ContestEffect_BetterIfFirst, + ContestEffect_BetterIfLast, + ContestEffect_AppealAsGoodAsPrevOnes, + ContestEffect_AppealAsGoodAsPrevOne, + ContestEffect_BetterWhenLater, + ContestEffect_QualityDependsOnTiming, + ContestEffect_BetterIfSameType, + ContestEffect_BetterIfDiffType, + ContestEffect_AffectedByPrevAppeal, + ContestEffect_ImproveConditionPreventNervousness, + ContestEffect_BetterWithGoodCondition, + ContestEffect_NextAppealEarlier, + ContestEffect_NextAppealLater, + ContestEffect_MakeScramblingTurnOrderEasier, + ContestEffect_ScrambleNextTurnOrder, + ContestEffect_ExciteAudienceInAnyContest, + ContestEffect_BadlyStartleMonsWithGoodAppeals, + ContestEffect_BetterWhenAudienceExcited, + ContestEffect_DontExciteAudience, +}; diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index c47ddb14c..1afbaab7a 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -253,7 +253,7 @@ static void sub_81C4D18(u8 a); #include "data/text/move_descriptions.h" #include "data/text/nature_names.h" -static const struct BgTemplate gUnknown_0861CBB4[] = +static const struct BgTemplate gUnknown_0861CBB4[] = { { .bg = 0, @@ -526,13 +526,13 @@ static const union AnimCmd *const gSpriteAnimTable_861CF60[] = { gSpriteAnim_861CF50, gSpriteAnim_861CF58, }; -static const struct CompressedSpriteSheet gUnknown_0861CFBC = +static const struct CompressedSpriteSheet gUnknown_0861CFBC = { .data = gMoveTypes_Gfx, .size = 0x1700, .tag = 30002 }; -static const struct SpriteTemplate gUnknown_0861CFC4 = +static const struct SpriteTemplate gUnknown_0861CFC4 = { .tileTag = 30002, .paletteTag = 30002, @@ -622,7 +622,7 @@ static const struct CompressedSpritePalette gUnknown_0861D07C = .data = gUnknown_08D97CF4, .tag = 30000 }; -static const struct SpriteTemplate gUnknown_0861D084 = +static const struct SpriteTemplate gUnknown_0861D084 = { .tileTag = 30000, .paletteTag = 30000, @@ -696,7 +696,7 @@ static const struct CompressedSpritePalette gUnknown_0861D100 = .data = gStatusPal_Icons, .tag = 30001 }; -static const struct SpriteTemplate gUnknown_0861D108 = +static const struct SpriteTemplate gUnknown_0861D108 = { .tileTag = 30001, .paletteTag = 30001, @@ -722,7 +722,7 @@ void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, pssData->isBoxMon = TRUE; else pssData->isBoxMon = FALSE; - + switch (mode) { case PSS_MODE_NORMAL: @@ -747,7 +747,7 @@ void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, if (gMonSpritesGfxPtr == 0) sub_806F2AC(0, 0); - + SetMainCallback2(SummaryScreen_LoadingCB2); } @@ -1029,7 +1029,7 @@ static bool8 ExtractMonDataToSummaryStruct(struct Pokemon *a) sum->isEgg = TRUE; else sum->isEgg = GetMonData(a, MON_DATA_IS_EGG); - + break; case 1: for (i = 0; i < 4; i++) @@ -1384,7 +1384,7 @@ static void sub_81C0A8C(u8 taskId, s8 b) return; else if (b == 1 && pssData->currPageIndex == pssData->maxPageIndex) return; - + PlaySE(SE_SELECT); sub_81C2C38(pssData->currPageIndex); pssData->currPageIndex += b; @@ -1751,7 +1751,7 @@ static void SwapMonMoves(struct Pokemon *mon, u8 moveIndex1, u8 moveIndex2) SetMonData(mon, MON_DATA_PP1 + moveIndex1, &move2pp); SetMonData(mon, MON_DATA_PP1 + moveIndex2, &move1pp); SetMonData(mon, MON_DATA_PP_BONUSES, &ppBonuses); - + summary->moves[moveIndex1] = move2; summary->moves[moveIndex2] = move1; @@ -1786,7 +1786,7 @@ static void SwapBoxMonMoves(struct BoxPokemon *mon, u8 moveIndex1, u8 moveIndex2 SetBoxMonData(mon, MON_DATA_PP1 + moveIndex1, &move2pp); SetBoxMonData(mon, MON_DATA_PP1 + moveIndex2, &move1pp); SetBoxMonData(mon, MON_DATA_PP_BONUSES, &ppBonuses); - + summary->moves[moveIndex1] = move2; summary->moves[moveIndex2] = move1; @@ -2289,10 +2289,10 @@ static void sub_81C240C(u16 move) if (move != MOVE_NONE) { effectValue = gContestEffects[gContestMoves[move].effect].appeal; - + if (effectValue != 0xFF) effectValue /= 10; - + for (i = 0; i < 8; i++) { if (effectValue != 0xFF && i < effectValue) @@ -2309,7 +2309,7 @@ static void sub_81C240C(u16 move) if (effectValue != 0xFF) effectValue /= 10; - + for (i = 0; i < 8; i++) { if (effectValue != 0xFF && i < effectValue) @@ -2458,21 +2458,21 @@ static void PrintPageNamesAndStatsPageToWindows(void) iconXPos = 0; PrintAOrBButtonIcon(4, FALSE, iconXPos); SummaryScreen_PrintTextOnWindow(4, gText_Cancel2, stringXPos, 1, 0, 0); - + stringXPos = GetStringRightAlignXOffset(1, gText_Info, 0x3E); iconXPos = stringXPos - 16; if (iconXPos < 0) iconXPos = 0; PrintAOrBButtonIcon(5, FALSE, iconXPos); SummaryScreen_PrintTextOnWindow(5, gText_Info, stringXPos, 1, 0, 0); - + stringXPos = GetStringRightAlignXOffset(1, gText_Switch, 0x3E); iconXPos = stringXPos - 16; if (iconXPos < 0) iconXPos = 0; PrintAOrBButtonIcon(6, FALSE, iconXPos); SummaryScreen_PrintTextOnWindow(6, gText_Switch, stringXPos, 1, 0, 0); - + SummaryScreen_PrintTextOnWindow(8, gText_RentalPkmn, 0, 1, 0, 1); SummaryScreen_PrintTextOnWindow(9, gText_TypeSlash, 0, 1, 0, 0); statsXPos = 6 + GetStringCenterAlignXOffset(1, gText_HP4, 42); @@ -2733,7 +2733,7 @@ static void BufferMonTrainerMemo(void) { struct PokeSummary *sum = &pssData->summary; const u8 *text; - + DynamicPlaceholderTextUtil_Reset(); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gUnknown_0861CE74); DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gUnknown_0861CE7B); @@ -2886,7 +2886,7 @@ static void PrintEggState(void) text = gText_EggWillTakeSomeTime; else text = gText_EggWillTakeALongTime; - + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 2), text, 0, 1, 0, 0); } @@ -3013,14 +3013,14 @@ static void BufferLeftColumnStats(void) ConvertIntToDecimalStringN(maxHPString, pssData->summary.maxHP, 1, 3); ConvertIntToDecimalStringN(attackString, pssData->summary.atk, 1, 7); ConvertIntToDecimalStringN(defenseString, pssData->summary.def, 1, 7); - + DynamicPlaceholderTextUtil_Reset(); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, currentHPString); DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, maxHPString); DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, attackString); DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, defenseString); DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_0861CE82); - + Free(currentHPString); Free(maxHPString); Free(attackString); @@ -3037,7 +3037,7 @@ static void BufferRightColumnStats(void) ConvertIntToDecimalStringN(gStringVar1, pssData->summary.spatk, 1, 3); ConvertIntToDecimalStringN(gStringVar2, pssData->summary.spdef, 1, 3); ConvertIntToDecimalStringN(gStringVar3, pssData->summary.speed, 1, 3); - + DynamicPlaceholderTextUtil_Reset(); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1); DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gStringVar2); @@ -3065,7 +3065,7 @@ static void PrintExpPointsNextLevel(void) expToNextLevel = gExperienceTables[gBaseStats[sum->species].growthRate][sum->level + 1] - sum->exp; else expToNextLevel = 0; - + ConvertIntToDecimalStringN(gStringVar1, expToNextLevel, 1, 6); offset = GetStringRightAlignXOffset(1, gStringVar1, 42) + 2; SummaryScreen_PrintTextOnWindow(windowId, gStringVar1, offset, 17, 0, 0); @@ -3660,7 +3660,7 @@ static void sub_81C48F0(void) sub_806EE98(); paletteIndex = (gSprites[pssData->spriteIds[0]].oam.paletteNum * 16) | 0x100; - + for (i = 0; i < 16; i++) { gPlttBufferUnfaded[(u16)(i + paletteIndex)] = gPlttBufferFaded[(u16)(i + paletteIndex)]; |