summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/contest.s46
-rw-r--r--asm/contest_ai.s2
-rw-r--r--asm/contest_effect.s3175
-rw-r--r--data/contest_effect.s18
-rw-r--r--data/contest_effect_function_table.inc50
-rw-r--r--data/contest_effects.inc289
-rw-r--r--data/contest_moves.inc2486
-rw-r--r--include/contest.h7
-rw-r--r--include/contest_effect.h2
-rw-r--r--ld_script.txt2
-rw-r--r--src/contest.c10
-rw-r--r--src/contest_effect.c1174
-rw-r--r--src/data/contest_moves.h536
13 files changed, 1750 insertions, 6047 deletions
diff --git a/asm/contest.s b/asm/contest.s
index 6504e7bf1..aec0becbb 100644
--- a/asm/contest.s
+++ b/asm/contest.s
@@ -43,7 +43,7 @@ sub_80DB8B8: @ 80DB8B8
lsrs r4, r0, 24
adds r5, r4, 0
adds r0, r4, 0
- bl sub_80DBCA8
+ bl Contest_IsMonsTurnDisabled
lsls r0, 24
cmp r0, 0
beq _080DB8D0
@@ -568,8 +568,8 @@ _080DBC3C:
.pool
thumb_func_end sub_80DBAA0
- thumb_func_start sub_80DBCA8
-sub_80DBCA8: @ 80DBCA8
+ thumb_func_start Contest_IsMonsTurnDisabled
+Contest_IsMonsTurnDisabled: @ 80DBCA8
push {lr}
lsls r0, 24
lsrs r0, 24
@@ -599,7 +599,7 @@ _080DBCD8:
_080DBCDA:
pop {r1}
bx r1
- thumb_func_end sub_80DBCA8
+ thumb_func_end Contest_IsMonsTurnDisabled
thumb_func_start sub_80DBCE0
sub_80DBCE0: @ 80DBCE0
@@ -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
@@ -5136,7 +5136,7 @@ _080DE146:
beq _080DE1CA
lsls r0, r7, 24
lsrs r0, 24
- bl sub_80DBCA8
+ bl Contest_IsMonsTurnDisabled
lsls r0, 24
cmp r0, 0
bne _080DE1CA
diff --git a/asm/contest_ai.s b/asm/contest_ai.s
index ff48661f0..0ccc5e9ec 100644
--- a/asm/contest_ai.s
+++ b/asm/contest_ai.s
@@ -3329,7 +3329,7 @@ sub_8157C48: @ 8157C48
bl sub_81564AC
lsls r0, 24
lsrs r0, 24
- bl sub_80DBCA8
+ bl Contest_IsMonsTurnDisabled
lsls r0, 24
cmp r0, 0
beq _08157C74
diff --git a/asm/contest_effect.s b/asm/contest_effect.s
index 65a720a65..e69de29bb 100644
--- a/asm/contest_effect.s
+++ b/asm/contest_effect.s
@@ -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 sub_80DBCA8
- 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
index 31b294836..6c8edba3a 100644
--- a/data/contest_effect.s
+++ b/data/contest_effect.s
@@ -3,20 +3,4 @@
.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"
+ .align 2 \ No newline at end of file
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 b7324e26b..79c362908 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -414,8 +414,15 @@ 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);
+void SetContestantEffectStringID(u8 a, u8 b);
+void SetContestantEffectStringID2(u8 a, u8 b);
+void MakeContestantNervous(u8 p);
+bool8 Contest_IsMonsTurnDisabled(u8 a);
+bool8 sub_80DE1E8(u8 a);
+void SetStartledString(u8 a, u8 b);
#endif //GUARD_CONTEST_H
diff --git a/include/contest_effect.h b/include/contest_effect.h
index 3484ca5df..1f147aa09 100644
--- a/include/contest_effect.h
+++ b/include/contest_effect.h
@@ -17,6 +17,6 @@ struct ContestEffect
};
extern const struct ContestMove gContestMoves[];
-extern struct ContestEffect gContestEffects[];
+extern const struct ContestEffect gContestEffects[];
#endif //GUARD_CONTEST_EFFECT_H
diff --git a/ld_script.txt b/ld_script.txt
index 7e0a351db..78dd9334f 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -143,6 +143,7 @@ SECTIONS {
asm/script_menu.o(.text);
src/naming_screen.o(.text);
src/money.o(.text);
+ src/contest_effect.o(.text);
asm/contest_effect.o(.text);
src/record_mixing.o(.text);
src/secret_base.o(.text);
@@ -443,6 +444,7 @@ SECTIONS {
data/script_menu.o(.rodata);
src/naming_screen.o(.rodata);
src/money.o(.rodata);
+ src/contest_effect.o(.rodata);
data/contest_effect.o(.rodata);
src/record_mixing.o(.rodata);
src/secret_base.o(.rodata);
diff --git a/src/contest.c b/src/contest.c
index 8513fc4a9..910637387 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -107,7 +107,7 @@ u16 sub_80DE84C(u16);
void sub_80DB89C(void);
u16 sub_80DB8B8(u8);
void sub_80DB918(void);
-bool8 sub_80DBCA8(u8);
+bool8 Contest_IsMonsTurnDisabled(u8);
void sub_80DBF68(void);
void sub_80DBF90(void);
void sub_80DC2BC(void);
@@ -721,7 +721,7 @@ void sub_80D833C(u8 taskId)
sub_80DCD48();
DmaCopy32Defvars(3, gPlttBufferUnfaded, shared18000.unk18204, 0x400);
ConvertIntToDecimalStringN(gStringVar1, gContestResources->field_0->turnNumber + 1, STR_CONV_MODE_LEFT_ALIGN, 1);
- if (!sub_80DBCA8(gContestPlayerMonIndex))
+ if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex))
StringCopy(gDisplayedStringBattle, gText_0827D507);
else
StringCopy(gDisplayedStringBattle, gText_0827D531);
@@ -745,7 +745,7 @@ void sub_80D8424(u8 taskId)
if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys == B_BUTTON))
{
PlaySE(SE_SELECT);
- if (!sub_80DBCA8(gContestPlayerMonIndex))
+ if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex))
{
sub_80DC490(TRUE);
gTasks[taskId].func = sub_80D8490;
@@ -819,7 +819,7 @@ void sub_80D8610(u8 taskId)
PlaySE(SE_SELECT);
sub_80DC490(FALSE);
ConvertIntToDecimalStringN(gStringVar1, gContestResources->field_0->turnNumber + 1, STR_CONV_MODE_LEFT_ALIGN, 1);
- if (!sub_80DBCA8(gContestPlayerMonIndex))
+ if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex))
StringCopy(gDisplayedStringBattle, gText_0827D507);
else
StringCopy(gDisplayedStringBattle, gText_0827D531);
@@ -2636,7 +2636,7 @@ void sub_80DB4E0(u16 move, u8 b)
{
u8 r7 = gUnknown_02039F26[b] * 5 + 2;
- if (!sub_80DBCA8(b) && move != MOVE_NONE)
+ if (!Contest_IsMonsTurnDisabled(b) && move != MOVE_NONE)
{
u16 tile = sub_80DB2EC(move, b);
diff --git a/src/contest_effect.c b/src/contest_effect.c
new file mode 100644
index 000000000..40774641d
--- /dev/null
+++ b/src/contest_effect.c
@@ -0,0 +1,1174 @@
+#include "global.h"
+#include "random.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 0;
+
+ if (lastMoveComboStarterId == nextMoveComboMoves[0] || lastMoveComboStarterId == nextMoveComboMoves[1] || lastMoveComboStarterId == nextMoveComboMoves[2] || lastMoveComboStarterId == nextMoveComboMoves[3])
+ return gComboStarterLookupTable[lastMoveComboStarterId];
+
+ return 0;
+}
+
+// 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;
+ int j = 0;
+
+ for (i = 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;
+
+ if (shared192D0.turnOrder[contestant] != 0)
+ {
+ int i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (shared192D0.turnOrder[contestant] > shared192D0.turnOrder[i])
+ {
+ shared192D0.jamQueue[0] = i;
+ shared192D0.jamQueue[1] = 0xFF;
+ {
+ u8 rval = Random() % 10;
+ int jam;
+
+ 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;
+}
+
+#ifdef NONMATCHING
+// Not even close, send help
+// Works well if it’s the same type as the one before.
+static void ContestEffect_BetterIfSameType(void)
+{
+ s8 r4;
+ s8 r2;
+
+ for (r4 = shared192D0.turnOrder[shared192D0.contestant]; r4 > 0; r4--)
+ {
+ for (r2 = 0; r2 < 4; r2++)
+ {
+ if (shared192D0.turnOrder[r2] == r4 - 1)
+ break;
+ }
+ if (!(sContestantStatus[r2].noMoreTurns || sContestantStatus[r2].nervous || sContestantStatus[r2].numTurnsSkipped))
+ {
+ u16 move = sContestantStatus[shared192D0.contestant].currMove;
+
+ if (gContestMoves[move].contestCategory == gContestMoves[sContestantStatus[r2].currMove].contestCategory)
+ {
+ sContestantStatus[shared192D0.contestant].appeal2 += gContestEffects[gContestMoves[move].effect].appeal * 2;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_SAME_TYPE_GOOD);
+ }
+ break;
+ }
+ }
+}
+#else
+NAKED void ContestEffect_BetterIfSameType(void)
+{
+ asm_unified("\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ ldr r2, =gContestResources\n\
+ ldr r0, [r2]\n\
+ ldr r3, [r0, 0x8]\n\
+ ldrb r0, [r3, 0x11]\n\
+ adds r0, r3, r0\n\
+ movs r1, 0\n\
+ ldrsb r1, [r0, r1]\n\
+ subs r0, r1, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ mov r8, r2\n\
+ cmp r1, 0\n\
+ beq _080E61F8\n\
+ mov r7, r8\n\
+ ldrb r6, [r3]\n\
+_080E6140:\n\
+ movs r2, 0\n\
+ lsls r0, r4, 24\n\
+ asrs r1, r0, 24\n\
+ adds r5, r0, 0\n\
+ cmp r6, r1\n\
+ beq _080E616A\n\
+ ldr r4, =gContestResources\n\
+_080E614E:\n\
+ lsls r0, r2, 24\n\
+ movs r2, 0x80\n\
+ lsls r2, 17\n\
+ adds r0, r2\n\
+ lsrs r2, r0, 24\n\
+ asrs r3, r0, 24\n\
+ cmp r3, 0x3\n\
+ bgt _080E616A\n\
+ ldr r0, [r4]\n\
+ ldr r0, [r0, 0x8]\n\
+ adds r0, r3\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r1\n\
+ bne _080E614E\n\
+_080E616A:\n\
+ ldr r0, [r7]\n\
+ lsls r3, r2, 24\n\
+ asrs r1, r3, 24\n\
+ ldr r2, [r0, 0x4]\n\
+ lsls r0, r1, 3\n\
+ subs r0, r1\n\
+ lsls r0, 2\n\
+ adds r2, r0, r2\n\
+ ldrb r1, [r2, 0xB]\n\
+ movs r0, 0x80\n\
+ ands r0, r1\n\
+ mov r12, r3\n\
+ cmp r0, 0\n\
+ bne _080E6190\n\
+ ldrb r1, [r2, 0xC]\n\
+ movs r0, 0x7\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080E61A4\n\
+_080E6190:\n\
+ movs r1, 0xFF\n\
+ lsls r1, 24\n\
+ adds r0, r5, r1\n\
+ lsrs r4, r0, 24\n\
+ cmp r0, 0\n\
+ blt _080E61F8\n\
+ b _080E6140\n\
+ .pool\n\
+_080E61A4:\n\
+ mov r2, r8\n\
+ ldr r6, [r2]\n\
+ ldr r0, [r6, 0x8]\n\
+ ldrb r1, [r0, 0x11]\n\
+ ldr r4, [r6, 0x4]\n\
+ lsls r0, r1, 3\n\
+ subs r0, r1\n\
+ lsls r0, 2\n\
+ adds r5, r0, r4\n\
+ ldrh r0, [r5, 0x6]\n\
+ ldr r3, =gContestMoves\n\
+ lsls r0, 3\n\
+ adds r7, r0, r3\n\
+ ldrb r2, [r7, 0x1]\n\
+ lsls r2, 29\n\
+ mov r0, r12\n\
+ asrs r1, r0, 24\n\
+ lsls r0, r1, 3\n\
+ subs r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r4\n\
+ ldrh r0, [r0, 0x6]\n\
+ lsls r0, 3\n\
+ adds r0, r3\n\
+ ldrb r0, [r0, 0x1]\n\
+ lsls r0, 29\n\
+ cmp r2, r0\n\
+ bne _080E61F8\n\
+ ldr r1, =gContestEffects\n\
+ ldrb r0, [r7]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x1]\n\
+ lsls r0, 1\n\
+ ldrh r1, [r5, 0x2]\n\
+ adds r0, r1\n\
+ strh r0, [r5, 0x2]\n\
+ ldr r0, [r6, 0x8]\n\
+ ldrb r0, [r0, 0x11]\n\
+ movs r1, 0x1F\n\
+ bl SetContestantEffectStringID\n\
+_080E61F8:\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\
+ ");
+}
+#endif
+
+// 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;
+ }
+
+ 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 if ((shared192D0.jam2 -= sContestantStatus[contestant].jamReduction) <= 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..fd0bc5564
--- /dev/null
+++ b/src/data/contest_moves.h
@@ -0,0 +1,536 @@
+#ifndef POKEEMERALD_CONTEST_MOVES_H
+#define POKEEMERALD_CONTEST_MOVES_H
+
+const struct ContestMove gContestMoves[] =
+{
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // NONE
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_POUND, {0, 0, 0, 0}}, // POUND
+ {CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_FOCUS_ENERGY, 0, 0, 0}}, // KARATE_CHOP
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_POUND, 0, 0, 0}}, // DOUBLE_SLAP
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // COMET_PUNCH
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_MIND_READER, 0, 0}}, // MEGA_PUNCH
+ {CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // PAY_DAY
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_BEAUTY, COMBO_STARTER_FIRE_PUNCH, {COMBO_STARTER_SUNNY_DAY, COMBO_STARTER_THUNDER_PUNCH, COMBO_STARTER_ICE_PUNCH, 0}}, // FIRE_PUNCH
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_BEAUTY, COMBO_STARTER_ICE_PUNCH, {COMBO_STARTER_THUNDER_PUNCH, COMBO_STARTER_FIRE_PUNCH, 0, 0}}, // ICE_PUNCH
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, COMBO_STARTER_THUNDER_PUNCH, {COMBO_STARTER_CHARGE, COMBO_STARTER_FIRE_PUNCH, COMBO_STARTER_ICE_PUNCH, 0}}, // THUNDER_PUNCH
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_SCRATCH, {COMBO_STARTER_LEER, 0, 0, 0}}, // SCRATCH
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_VICE_GRIP, {0, 0, 0, 0}}, // VICE_GRIP
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_VICE_GRIP, 0, 0, 0}}, // GUILLOTINE
+ {CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // RAZOR_WIND
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_BEAUTY, COMBO_STARTER_SWORDS_DANCE, {0, 0, 0, 0}}, // SWORDS_DANCE
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_SWORDS_DANCE, 0, 0, 0}}, // CUT
+ {CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // GUST
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // WING_ATTACK
+ {CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // WHIRLWIND
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // FLY
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_VICE_GRIP, 0, 0, 0}}, // BIND
+ {CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_POUND, 0, 0, 0}}, // SLAM
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_GROWTH, 0, 0, 0}}, // VINE_WHIP
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_TOUGH, 0, {0, COMBO_STARTER_LEER, 0, 0}}, // STOMP
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // DOUBLE_KICK
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_MIND_READER, 0, 0}}, // MEGA_KICK
+ {CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_MIND_READER, 0, 0, 0}}, // JUMP_KICK
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // ROLLING_KICK
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_CUTE, COMBO_STARTER_SAND_ATTACK, {COMBO_STARTER_MUD_SLAP, COMBO_STARTER_SANDSTORM, 0, 0}}, // SAND_ATTACK
+ {CONTEST_EFFECT_STARTLE_PREV_MON, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_FOCUS_ENERGY, 0, 0, 0}}, // HEADBUTT
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, COMBO_STARTER_HORN_ATTACK, {COMBO_STARTER_LEER, 0, 0, 0}}, // HORN_ATTACK
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_HORN_ATTACK, COMBO_STARTER_PECK, 0, 0}}, // FURY_ATTACK
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_HORN_ATTACK, 0, 0, 0}}, // HORN_DRILL
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_DEFENSE_CURL, COMBO_STARTER_LEER, COMBO_STARTER_HARDEN, 0}}, // TACKLE
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // BODY_SLAM
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // WRAP
+ {CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_HARDEN, 0, 0}}, // TAKE_DOWN
+ {CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_RAGE, 0, 0, 0}}, // THRASH
+ {CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_HARDEN, 0, 0}}, // DOUBLE_EDGE
+ {CONTEST_EFFECT_BETTER_IF_LAST, CONTEST_CATEGORY_CUTE, 0, {COMBO_STARTER_CHARM, 0, 0, 0}}, // TAIL_WHIP
+ {CONTEST_EFFECT_STARTLE_PREV_MON, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // POISON_STING
+ {CONTEST_EFFECT_STARTLE_PREV_MON, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // TWINEEDLE
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // PIN_MISSILE
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_COOL, COMBO_STARTER_LEER, {COMBO_STARTER_RAGE, COMBO_STARTER_SCARY_FACE, 0, 0}}, // LEER
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_LEER, COMBO_STARTER_SCARY_FACE, 0, 0}}, // BITE
+ {CONTEST_EFFECT_BETTER_IF_LAST, CONTEST_CATEGORY_CUTE, 0, {COMBO_STARTER_CHARM, 0, 0, 0}}, // GROWL
+ {CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // ROAR
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_CUTE, COMBO_STARTER_SING, {0, 0, 0, 0}}, // SING
+ {CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // SUPERSONIC
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // SONIC_BOOM
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // DISABLE
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // ACID
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // EMBER
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // FLAMETHROWER
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // MIST
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_CUTE, 0, {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_WATER_SPORT, COMBO_STARTER_MUD_SPORT, 0}}, // WATER_GUN
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_RAIN_DANCE, 0, 0, 0}}, // HYDRO_PUMP
+ {CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, CONTEST_CATEGORY_BEAUTY, COMBO_STARTER_SURF, {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_DIVE, 0, 0}}, // SURF
+ {CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // ICE_BEAM
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_POWDER_SNOW, COMBO_STARTER_HAIL, 0, 0}}, // BLIZZARD
+ {CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_CALM_MIND, 0, 0, 0}}, // PSYBEAM
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_RAIN_DANCE, 0, 0, 0}}, // BUBBLE_BEAM
+ {CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // AURORA_BEAM
+ {CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // HYPER_BEAM
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, COMBO_STARTER_PECK, {0, 0, 0, 0}}, // PECK
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_PECK, 0, 0, 0}}, // DRILL_PECK
+ {CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_MIND_READER, 0, 0, 0}}, // SUBMISSION
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // LOW_KICK
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_TAUNT, 0, 0, 0}}, // COUNTER
+ {CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_FAKE_OUT, 0, 0, 0}}, // SEISMIC_TOSS
+ {CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // STRENGTH
+ {CONTEST_EFFECT_STARTLE_PREV_MON, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_GROWTH, 0, 0, 0}}, // ABSORB
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_GROWTH, 0, 0, 0}}, // MEGA_DRAIN
+ {CONTEST_EFFECT_STARTLE_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // LEECH_SEED
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_BEAUTY, COMBO_STARTER_GROWTH, {0, 0, 0, 0}}, // GROWTH
+ {CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_GROWTH, 0, 0, 0}}, // RAZOR_LEAF
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_SUNNY_DAY, COMBO_STARTER_GROWTH, 0, 0}}, // SOLAR_BEAM
+ {CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_SWEET_SCENT, 0, 0, 0}}, // POISON_POWDER
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_SWEET_SCENT, 0, 0, 0}}, // STUN_SPORE
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_SWEET_SCENT, 0, 0, 0}}, // SLEEP_POWDER
+ {CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_GROWTH, 0, 0, 0}}, // PETAL_DANCE
+ {CONTEST_EFFECT_STARTLE_PREV_MON, CONTEST_CATEGORY_SMART, COMBO_STARTER_STRING_SHOT, {0, 0, 0, 0}}, // STRING_SHOT
+ {CONTEST_EFFECT_BETTER_WHEN_LATER, CONTEST_CATEGORY_COOL, COMBO_STARTER_DRAGON_RAGE, {COMBO_STARTER_DRAGON_BREATH, COMBO_STARTER_DRAGON_DANCE, 0, 0}}, // DRAGON_RAGE
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // FIRE_SPIN
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_CHARGE, 0, 0, 0}}, // THUNDER_SHOCK
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_CHARGE, 0, 0, 0}}, // THUNDERBOLT
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_CHARGE, 0, 0, 0}}, // THUNDER_WAVE
+ {CONTEST_EFFECT_STARTLE_PREV_MONS, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_CHARGE, COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_LOCK_ON, 0}}, // THUNDER
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_ROCK_THROW, {0, 0, 0, 0}}, // ROCK_THROW
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_EARTHQUAKE, {0, 0, 0, 0}}, // EARTHQUAKE
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_EARTHQUAKE, 0, 0, 0}}, // FISSURE
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // DIG
+ {CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // TOXIC
+ {CONTEST_EFFECT_STARTLE_PREV_MON, CONTEST_CATEGORY_SMART, COMBO_STARTER_CONFUSION, {COMBO_STARTER_PSYCHIC, COMBO_STARTER_KINESIS, COMBO_STARTER_CALM_MIND, 0}}, // CONFUSION
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_SMART, COMBO_STARTER_PSYCHIC, {COMBO_STARTER_KINESIS, COMBO_STARTER_CONFUSION, COMBO_STARTER_CALM_MIND, 0}}, // PSYCHIC
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_SMART, COMBO_STARTER_HYPNOSIS, {0, 0, 0, 0}}, // HYPNOSIS
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_CALM_MIND, 0, 0, 0}}, // MEDITATE
+ {CONTEST_EFFECT_NEXT_APPEAL_EARLIER, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_DOUBLE_TEAM, 0, 0, 0}}, // AGILITY
+ {CONTEST_EFFECT_NEXT_APPEAL_EARLIER, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_DOUBLE_TEAM, 0, 0, 0}}, // QUICK_ATTACK
+ {CONTEST_EFFECT_REPETITION_NOT_BORING, CONTEST_CATEGORY_COOL, COMBO_STARTER_RAGE, {0, 0, 0, 0}}, // RAGE
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_DOUBLE_TEAM, COMBO_STARTER_PSYCHIC, COMBO_STARTER_KINESIS, COMBO_STARTER_CONFUSION}}, // TELEPORT
+ {CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // NIGHT_SHADE
+ {CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // MIMIC
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // SCREECH
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_COOL, COMBO_STARTER_DOUBLE_TEAM, {0, 0, 0, 0}}, // DOUBLE_TEAM
+ {CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // RECOVER
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_HARDEN, {0, 0, 0, 0}}, // HARDEN
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // MINIMIZE
+ {CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_SMOG, 0, 0, 0}}, // SMOKESCREEN
+ {CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // CONFUSE_RAY
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_CUTE, 0, {COMBO_STARTER_RAIN_DANCE, 0, 0, 0}}, // WITHDRAW
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_CUTE, COMBO_STARTER_DEFENSE_CURL, {0, 0, 0, 0}}, // DEFENSE_CURL
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // BARRIER
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_CALM_MIND, 0, 0, 0}}, // LIGHT_SCREEN
+ {CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // HAZE
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_CALM_MIND, 0, 0, 0}}, // REFLECT
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_COOL, COMBO_STARTER_FOCUS_ENERGY, {0, 0, 0, 0}}, // FOCUS_ENERGY
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // BIDE
+ {CONTEST_EFFECT_REPETITION_NOT_BORING, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // METRONOME
+ {CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // MIRROR_MOVE
+ {CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // SELF_DESTRUCT
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_SOFT_BOILED, 0, 0, 0}}, // EGG_BOMB
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // LICK
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_SMOG, {0, 0, 0, 0}}, // SMOG
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_SLUDGE, {COMBO_STARTER_SLUDGE_BOMB, 0, 0, 0}}, // SLUDGE
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_BONE_CLUB, {COMBO_STARTER_BONEMERANG, COMBO_STARTER_BONE_RUSH, 0, 0}}, // BONE_CLUB
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // FIRE_BLAST
+ {CONTEST_EFFECT_BETTER_IF_LAST, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_RAIN_DANCE, 0, 0, 0}}, // WATERFALL
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_RAIN_DANCE, 0, 0, 0}}, // CLAMP
+ {CONTEST_EFFECT_BETTER_IF_FIRST, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // SWIFT
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // SKULL_BASH
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // SPIKE_CANNON
+ {CONTEST_EFFECT_STARTLE_PREV_MON, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // CONSTRICT
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // AMNESIA
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_SMART, COMBO_STARTER_KINESIS, {COMBO_STARTER_PSYCHIC, COMBO_STARTER_CONFUSION, 0, 0}}, // KINESIS
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_BEAUTY, COMBO_STARTER_SOFT_BOILED, {0, 0, 0, 0}}, // SOFT_BOILED
+ {CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_MIND_READER, 0, 0, 0}}, // HI_JUMP_KICK
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_LEER, 0, 0, 0}}, // GLARE
+ {CONTEST_EFFECT_STARTLE_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_HYPNOSIS, COMBO_STARTER_CALM_MIND, 0, 0}}, // DREAM_EATER
+ {CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // POISON_GAS
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // BARRAGE
+ {CONTEST_EFFECT_STARTLE_PREV_MON, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // LEECH_LIFE
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // LOVELY_KISS
+ {CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // SKY_ATTACK
+ {CONTEST_EFFECT_REPETITION_NOT_BORING, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // TRANSFORM
+ {CONTEST_EFFECT_STARTLE_PREV_MONS, CONTEST_CATEGORY_CUTE, 0, {COMBO_STARTER_RAIN_DANCE, 0, 0, 0}}, // BUBBLE
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // DIZZY_PUNCH
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // SPORE
+ {CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // FLASH
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_CALM_MIND, 0, 0, 0}}, // PSYWAVE
+ {CONTEST_EFFECT_BETTER_IF_LAST, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // SPLASH
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // ACID_ARMOR
+ {CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_SWORDS_DANCE, 0, 0}}, // CRABHAMMER
+ {CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // EXPLOSION
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_SCRATCH, 0, 0, 0}}, // FURY_SWIPES
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_BONEMERANG, {COMBO_STARTER_BONE_CLUB, COMBO_STARTER_BONE_RUSH, 0, 0}}, // BONEMERANG
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_CUTE, COMBO_STARTER_REST, {COMBO_STARTER_BELLY_DRUM, COMBO_STARTER_CHARM, COMBO_STARTER_YAWN, 0}}, // REST
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_ROCK_THROW, 0, 0, 0}}, // ROCK_SLIDE
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // HYPER_FANG
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // SHARPEN
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // CONVERSION
+ {CONTEST_EFFECT_STARTLE_PREV_MONS, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_LOCK_ON, 0, 0, 0}}, // TRI_ATTACK
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_SCARY_FACE, 0, 0, 0}}, // SUPER_FANG
+ {CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_SWORDS_DANCE, COMBO_STARTER_SCRATCH, 0, 0}}, // SLASH
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // SUBSTITUTE
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // STRUGGLE
+ {CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // SKETCH
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_FOCUS_ENERGY, 0, 0, 0}}, // TRIPLE_KICK
+ {CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // THIEF
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_STRING_SHOT, 0, 0, 0}}, // SPIDER_WEB
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_SMART, COMBO_STARTER_MIND_READER, {0, 0, 0, 0}}, // MIND_READER
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_HYPNOSIS, 0, 0, 0}}, // NIGHTMARE
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // FLAME_WHEEL
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_CUTE, 0, {COMBO_STARTER_REST, 0, 0, 0}}, // SNORE
+ {CONTEST_EFFECT_NEXT_APPEAL_LATER, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_CURSE, {0, 0, 0, 0}}, // CURSE
+ {CONTEST_EFFECT_BETTER_WHEN_LATER, CONTEST_CATEGORY_CUTE, 0, {COMBO_STARTER_ENDURE, 0, 0, 0}}, // FLAIL
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // CONVERSION_2
+ {CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // AEROBLAST
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // COTTON_SPORE
+ {CONTEST_EFFECT_BETTER_IF_LAST, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_ENDURE, 0, 0, 0}}, // REVERSAL
+ {CONTEST_EFFECT_BETTER_WHEN_LATER, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_CURSE, 0, 0, 0}}, // SPITE
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_BEAUTY, COMBO_STARTER_POWDER_SNOW, {COMBO_STARTER_HAIL, 0, 0, 0}}, // POWDER_SNOW
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_CUTE, 0, {COMBO_STARTER_HARDEN, 0, 0, 0}}, // PROTECT
+ {CONTEST_EFFECT_NEXT_APPEAL_EARLIER, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // MACH_PUNCH
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_SCARY_FACE, {COMBO_STARTER_RAGE, COMBO_STARTER_LEER, 0, 0}}, // SCARY_FACE
+ {CONTEST_EFFECT_BETTER_IF_FIRST, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_FAKE_OUT, COMBO_STARTER_LEER, COMBO_STARTER_POUND, 0}}, // FAINT_ATTACK
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_CUTE, 0, {COMBO_STARTER_CHARM, 0, 0, 0}}, // SWEET_KISS
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_CUTE, COMBO_STARTER_BELLY_DRUM, {0, 0, 0, 0}}, // BELLY_DRUM
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_SLUDGE_BOMB, {COMBO_STARTER_SLUDGE, 0, 0, 0}}, // SLUDGE_BOMB
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_CUTE, COMBO_STARTER_MUD_SLAP, {COMBO_STARTER_SAND_ATTACK, COMBO_STARTER_MUD_SPORT, COMBO_STARTER_SANDSTORM, 0}}, // MUD_SLAP
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_LOCK_ON, 0, 0}}, // OCTAZOOKA
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // SPIKES
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_LOCK_ON, 0, 0, 0}}, // ZAP_CANNON
+ {CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // FORESIGHT
+ {CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_MEAN_LOOK, COMBO_STARTER_CURSE, COMBO_STARTER_ENDURE, 0}}, // DESTINY_BOND
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_MEAN_LOOK, COMBO_STARTER_SING, 0, 0}}, // PERISH_SONG
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // ICY_WIND
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_TAUNT, 0, 0, 0}}, // DETECT
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_BONE_RUSH, {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_BONE_CLUB, COMBO_STARTER_BONEMERANG, 0}}, // BONE_RUSH
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_SMART, COMBO_STARTER_LOCK_ON, {0, 0, 0, 0}}, // LOCK_ON
+ {CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // OUTRAGE
+ {CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_SANDSTORM, {0, 0, 0, 0}}, // SANDSTORM
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_GROWTH, 0, 0, 0}}, // GIGA_DRAIN
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_ENDURE, {0, 0, 0, 0}}, // ENDURE
+ {CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, CONTEST_CATEGORY_CUTE, COMBO_STARTER_CHARM, {0, 0, 0, 0}}, // CHARM
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_DEFENSE_CURL, COMBO_STARTER_HARDEN, 0, 0}}, // ROLLOUT
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_SWORDS_DANCE, 0, 0, 0}}, // FALSE_SWIPE
+ {CONTEST_EFFECT_BETTER_IF_FIRST, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // SWAGGER
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // MILK_DRINK
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_CHARGE, 0, 0, 0}}, // SPARK
+ {CONTEST_EFFECT_REPETITION_NOT_BORING, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_SWORDS_DANCE, 0, 0, 0}}, // FURY_CUTTER
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // STEEL_WING
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_BEAUTY, COMBO_STARTER_MEAN_LOOK, {COMBO_STARTER_CURSE, 0, 0, 0}}, // MEAN_LOOK
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // ATTRACT
+ {CONTEST_EFFECT_REPETITION_NOT_BORING, CONTEST_CATEGORY_CUTE, 0, {COMBO_STARTER_REST, 0, 0, 0}}, // SLEEP_TALK
+ {CONTEST_EFFECT_BETTER_IF_LAST, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // HEAL_BELL
+ {CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // RETURN
+ {CONTEST_EFFECT_REPETITION_NOT_BORING, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // PRESENT
+ {CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // FRUSTRATION
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // SAFEGUARD
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_ENDURE, 0, 0, 0}}, // PAIN_SPLIT
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // SACRED_FIRE
+ {CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // MAGNITUDE
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_MIND_READER, 0, 0}}, // DYNAMIC_PUNCH
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // MEGAHORN
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_COOL, COMBO_STARTER_DRAGON_BREATH, {COMBO_STARTER_DRAGON_RAGE, COMBO_STARTER_DRAGON_DANCE, 0, 0}}, // DRAGON_BREATH
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // BATON_PASS
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // ENCORE
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // PURSUIT
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // RAPID_SPIN
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_CUTE, COMBO_STARTER_SWEET_SCENT, {0, 0, 0, 0}}, // SWEET_SCENT
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // IRON_TAIL
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_METAL_SOUND, 0, 0, 0}}, // METAL_CLAW
+ {CONTEST_EFFECT_NEXT_APPEAL_LATER, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_FAKE_OUT, 0, 0, 0}}, // VITAL_THROW
+ {CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // MORNING_SUN
+ {CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // SYNTHESIS
+ {CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // MOONLIGHT
+ {CONTEST_EFFECT_REPETITION_NOT_BORING, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // HIDDEN_POWER
+ {CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_FOCUS_ENERGY, 0, 0, 0}}, // CROSS_CHOP
+ {CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // TWISTER
+ {CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_RAIN_DANCE, {0, 0, 0, 0}}, // RAIN_DANCE
+ {CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, CONTEST_CATEGORY_BEAUTY, COMBO_STARTER_SUNNY_DAY, {0, 0, 0, 0}}, // SUNNY_DAY
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_SCARY_FACE, 0, 0, 0}}, // CRUNCH
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_TAUNT, 0, 0, 0}}, // MIRROR_COAT
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // PSYCH_UP
+ {CONTEST_EFFECT_NEXT_APPEAL_EARLIER, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // EXTREME_SPEED
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // ANCIENT_POWER
+ {CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // SHADOW_BALL
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_PSYCHIC, COMBO_STARTER_KINESIS, COMBO_STARTER_CONFUSION, COMBO_STARTER_CALM_MIND}}, // FUTURE_SIGHT
+ {CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // ROCK_SMASH
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_RAIN_DANCE, 0, 0, 0}}, // WHIRLPOOL
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // BEAT_UP
+ {CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, CONTEST_CATEGORY_CUTE, COMBO_STARTER_FAKE_OUT, {0, 0, 0, 0}}, // FAKE_OUT
+ {CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // UPROAR
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_TOUGH, COMBO_STARTER_STOCKPILE, {0, 0, 0, 0}}, // STOCKPILE
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_STOCKPILE, 0, 0, 0}}, // SPIT_UP
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_STOCKPILE, 0, 0, 0}}, // SWALLOW
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // HEAT_WAVE
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_BEAUTY, COMBO_STARTER_HAIL, {0, 0, 0, 0}}, // HAIL
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // TORMENT
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_CHARM, 0, 0, 0}}, // FLATTER
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // WILL_O_WISP
+ {CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // MEMENTO
+ {CONTEST_EFFECT_BETTER_IF_LAST, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // FACADE
+ {CONTEST_EFFECT_NEXT_APPEAL_LATER, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_FOCUS_ENERGY, 0, 0, 0}}, // FOCUS_PUNCH
+ {CONTEST_EFFECT_STARTLE_PREV_MON, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // SMELLING_SALT
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // FOLLOW_ME
+ {CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // NATURE_POWER
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_SMART, COMBO_STARTER_CHARGE, {0, 0, 0, 0}}, // CHARGE
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_SMART, COMBO_STARTER_TAUNT, {0, 0, 0, 0}}, // TAUNT
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // HELPING_HAND
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // TRICK
+ {CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // ROLE_PLAY
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // WISH
+ {CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // ASSIST
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // INGRAIN
+ {CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_LOCK_ON, 0, 0, 0}}, // SUPERPOWER
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // MAGIC_COAT
+ {CONTEST_EFFECT_REPETITION_NOT_BORING, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // RECYCLE
+ {CONTEST_EFFECT_NEXT_APPEAL_LATER, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // REVENGE
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_FOCUS_ENERGY, 0, 0, 0}}, // BRICK_BREAK
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_CUTE, COMBO_STARTER_YAWN, {0, 0, 0, 0}}, // YAWN
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_FAKE_OUT, 0, 0, 0}}, // KNOCK_OFF
+ {CONTEST_EFFECT_BETTER_IF_LAST, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_ENDURE, 0, 0, 0}}, // ENDEAVOR
+ {CONTEST_EFFECT_BETTER_WHEN_LATER, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_ENDURE, COMBO_STARTER_EARTHQUAKE, COMBO_STARTER_SUNNY_DAY, 0}}, // ERUPTION
+ {CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // SKILL_SWAP
+ {CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // IMPRISON
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_CUTE, 0, {COMBO_STARTER_WATER_SPORT, COMBO_STARTER_SING, 0, 0}}, // REFRESH
+ {CONTEST_EFFECT_BETTER_WHEN_LATER, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_CURSE, 0, 0, 0}}, // GRUDGE
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // SNATCH
+ {CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // SECRET_POWER
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_BEAUTY, COMBO_STARTER_DIVE, {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_SURF, 0, 0}}, // DIVE
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_FAKE_OUT, 0, 0}}, // ARM_THRUST
+ {CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // CAMOUFLAGE
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // TAIL_GLOW
+ {CONTEST_EFFECT_STARTLE_PREV_MON, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_CALM_MIND, 0, 0, 0}}, // LUSTER_PURGE
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_CALM_MIND, 0, 0, 0}}, // MIST_BALL
+ {CONTEST_EFFECT_BETTER_IF_LAST, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // FEATHER_DANCE
+ {CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // TEETER_DANCE
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // BLAZE_KICK
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_CUTE, COMBO_STARTER_MUD_SPORT, {COMBO_STARTER_MUD_SLAP, COMBO_STARTER_WATER_SPORT, 0, 0}}, // MUD_SPORT
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // ICE_BALL
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // NEEDLE_ARM
+ {CONTEST_EFFECT_BETTER_WHEN_LATER, CONTEST_CATEGORY_CUTE, 0, {COMBO_STARTER_YAWN, 0, 0, 0}}, // SLACK_OFF
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // HYPER_VOICE
+ {CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // POISON_FANG
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_SWORDS_DANCE, 0, 0, 0}}, // CRUSH_CLAW
+ {CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // BLAST_BURN
+ {CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_RAIN_DANCE, 0, 0, 0}}, // HYDRO_CANNON
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // METEOR_MASH
+ {CONTEST_EFFECT_STARTLE_PREV_MON, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // ASTONISH
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_SUNNY_DAY, COMBO_STARTER_HAIL, COMBO_STARTER_SANDSTORM}}, // WEATHER_BALL
+ {CONTEST_EFFECT_BETTER_IF_LAST, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // AROMATHERAPY
+ {CONTEST_EFFECT_BETTER_IF_LAST, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // FAKE_TEARS
+ {CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // AIR_CUTTER
+ {CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_SUNNY_DAY, 0, 0, 0}}, // OVERHEAT
+ {CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // ODOR_SLEUTH
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_ROCK_THROW, 0, 0, 0}}, // ROCK_TOMB
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // SILVER_WIND
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_SMART, COMBO_STARTER_METAL_SOUND, {0, 0, 0, 0}}, // METAL_SOUND
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // GRASS_WHISTLE
+ {CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // TICKLE
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // COSMIC_POWER
+ {CONTEST_EFFECT_BETTER_WHEN_LATER, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_RAIN_DANCE, 0, 0, 0}}, // WATER_SPOUT
+ {CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // SIGNAL_BEAM
+ {CONTEST_EFFECT_BETTER_IF_FIRST, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // SHADOW_PUNCH
+ {CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // EXTRASENSORY
+ {CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_FOCUS_ENERGY, 0, 0, 0}}, // SKY_UPPERCUT
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_SANDSTORM, 0, 0, 0}}, // SAND_TOMB
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // SHEER_COLD
+ {CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, CONTEST_CATEGORY_TOUGH, 0, {COMBO_STARTER_RAIN_DANCE, 0, 0, 0}}, // MUDDY_WATER
+ {CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_GROWTH, 0, 0, 0}}, // BULLET_SEED
+ {CONTEST_EFFECT_BETTER_IF_FIRST, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // AERIAL_ACE
+ {CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // ICICLE_SPEAR
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // IRON_DEFENSE
+ {CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // BLOCK
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // HOWL
+ {CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_DRAGON_BREATH, COMBO_STARTER_DRAGON_RAGE, COMBO_STARTER_DRAGON_DANCE, 0}}, // DRAGON_CLAW
+ {CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_GROWTH, 0, 0, 0}}, // FRENZY_PLANT
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_BEAUTY, 0, {0, 0, 0, 0}}, // BULK_UP
+ {CONTEST_EFFECT_AVOID_STARTLE, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // BOUNCE
+ {CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // MUD_SHOT
+ {CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, CONTEST_CATEGORY_SMART, 0, {0, 0, 0, 0}}, // POISON_TAIL
+ {CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, CONTEST_CATEGORY_CUTE, 0, {0, 0, 0, 0}}, // COVET
+ {CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_CHARGE, 0, 0, 0}}, // VOLT_TACKLE
+ {CONTEST_EFFECT_BETTER_IF_FIRST, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_GROWTH, 0, 0, 0}}, // MAGICAL_LEAF
+ {CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_CATEGORY_CUTE, COMBO_STARTER_WATER_SPORT, {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_MUD_SPORT, 0, 0}}, // WATER_SPORT
+ {CONTEST_EFFECT_AVOID_STARTLE_ONCE, CONTEST_CATEGORY_SMART, COMBO_STARTER_CALM_MIND, {0, 0, 0, 0}}, // CALM_MIND
+ {CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // LEAF_BLADE
+ {CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, CONTEST_CATEGORY_COOL, COMBO_STARTER_DRAGON_DANCE, {COMBO_STARTER_DRAGON_RAGE, COMBO_STARTER_DRAGON_BREATH, 0, 0}}, // DRAGON_DANCE
+ {CONTEST_EFFECT_BETTER_IF_SAME_TYPE, CONTEST_CATEGORY_TOUGH, 0, {0, 0, 0, 0}}, // ROCK_BLAST
+ {CONTEST_EFFECT_BETTER_IF_FIRST, CONTEST_CATEGORY_COOL, 0, {COMBO_STARTER_CHARGE, 0, 0, 0}}, // SHOCK_WAVE
+ {CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, CONTEST_CATEGORY_BEAUTY, 0, {COMBO_STARTER_RAIN_DANCE, 0, 0, 0}}, // WATER_PULSE
+ {CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, CONTEST_CATEGORY_COOL, 0, {0, 0, 0, 0}}, // DOOM_DESIRE
+ {CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, CONTEST_CATEGORY_SMART, 0, {COMBO_STARTER_CALM_MIND, 0, 0, 0}}, // PSYCHO_BOOST
+};
+
+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,
+};
+
+#endif // POKEEMERALD_CONTEST_MOVES_H