summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/contest.s2
-rw-r--r--data/contest_2.s2
-rw-r--r--data/contest_opponents.inc663
-rw-r--r--include/constants/contest.h44
-rw-r--r--ld_script.txt3
-rw-r--r--src/contest_2.c3
-rw-r--r--src/data/contest_opponents.h1424
7 files changed, 1472 insertions, 669 deletions
diff --git a/data/contest.s b/data/contest.s
index d12044af9..d1855e947 100644
--- a/data/contest.s
+++ b/data/contest.s
@@ -6,7 +6,7 @@
.section .rodata
@ 83C9408
- .include "data/contest_opponents.inc"
+ @ .include "data/contest_opponents.inc"
gUnknown_083CA308:: @ 83CA308
.byte 19, 0
diff --git a/data/contest_2.s b/data/contest_2.s
deleted file mode 100644
index e807a1587..000000000
--- a/data/contest_2.s
+++ /dev/null
@@ -1,2 +0,0 @@
- .section .rodata
- .align 2, 0
diff --git a/data/contest_opponents.inc b/data/contest_opponents.inc
deleted file mode 100644
index 8c9c76f1b..000000000
--- a/data/contest_opponents.inc
+++ /dev/null
@@ -1,663 +0,0 @@
- .align 2
-gContestOpponents:: @ 83C9408
- .2byte 286 @ SPECIES_ID
- .string "POOCHY$", 11 @ POKE_NICKNAME
- .string "JIMMY$", 8 @ TRAINER_NAME
- .byte 7 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x0c000fff @ FLAGS
- .2byte 68 @ RANK
- .2byte MOVE_ROAR, MOVE_BITE, MOVE_TAKE_DOWN, MOVE_HOWL
- .byte 10, 4, 10, 3, 4, 50 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 288 @ SPECIES_ID
- .string "ZIGOON$", 11 @ POKE_NICKNAME
- .string "EDITH$", 8 @ TRAINER_NAME
- .byte 8 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x82000fff @ FLAGS
- .2byte 16 @ RANK
- .2byte MOVE_REST, MOVE_TAIL_WHIP, MOVE_TACKLE, MOVE_COVET
- .byte 10, 10, 6, 1, 2, 60 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 294 @ SPECIES_ID
- .string "DUSTER$", 11 @ POKE_NICKNAME
- .string "EVAN$", 8 @ TRAINER_NAME
- .byte 11 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x21000fff @ FLAGS
- .2byte 8 @ RANK
- .2byte MOVE_SILVER_WIND, MOVE_MOONLIGHT, MOVE_LIGHT_SCREEN, MOVE_GUST
- .byte 2, 10, 10, 12, 4, 70 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 298 @ SPECIES_ID
- .string "DOTS$", 11 @ POKE_NICKNAME
- .string "KELSEY$", 8 @ TRAINER_NAME
- .byte 16 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x20800fff @ FLAGS
- .2byte 96 @ RANK
- .2byte MOVE_BIDE, MOVE_SYNTHESIS, MOVE_BULLET_SEED, MOVE_GROWTH
- .byte 3, 3, 5, 2, 7, 80 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 304 @ SPECIES_ID
- .string "TATAY$", 11 @ POKE_NICKNAME
- .string "MADISON$", 8 @ TRAINER_NAME
- .byte 18 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80400fff @ FLAGS
- .2byte 4 @ RANK
- .2byte MOVE_WING_ATTACK, MOVE_AGILITY, MOVE_AERIAL_ACE, MOVE_GROWL
- .byte 1, 3, 3, 5, 4, 90 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 301 @ SPECIES_ID
- .string "NINDA$", 11 @ POKE_NICKNAME
- .string "RAYMOND$", 8 @ TRAINER_NAME
- .byte 44 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x10200fff @ FLAGS
- .2byte 32 @ RANK
- .2byte MOVE_LEECH_LIFE, MOVE_FALSE_SWIPE, MOVE_FURY_SWIPES, MOVE_MIND_READER
- .byte 5, 2, 10, 7, 8, 100 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 306 @ SPECIES_ID
- .string "SMISH$", 11 @ POKE_NICKNAME
- .string "GRANT$", 8 @ TRAINER_NAME
- .byte 35 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x20100fff @ FLAGS
- .2byte 32 @ RANK
- .2byte MOVE_STUN_SPORE, MOVE_LEECH_SEED, MOVE_MEGA_DRAIN, MOVE_ATTRACT
- .byte 3, 3, 10, 2, 2, 50 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 309 @ SPECIES_ID
- .string "GULWEE$", 11 @ POKE_NICKNAME
- .string "PAIGE$", 8 @ TRAINER_NAME
- .byte 26 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x08080fff @ FLAGS
- .2byte 24 @ RANK
- .2byte MOVE_MIST, MOVE_WATER_GUN, MOVE_GROWL, MOVE_PURSUIT
- .byte 3, 5, 1, 10, 10, 60 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 364 @ SPECIES_ID
- .string "SLOKTH$", 11 @ POKE_NICKNAME
- .string "ALEC$", 8 @ TRAINER_NAME
- .byte 31 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x40040fff @ FLAGS
- .2byte 88 @ RANK
- .2byte MOVE_STRENGTH, MOVE_COUNTER, MOVE_YAWN, MOVE_ENCORE
- .byte 10, 4, 4, 5, 18, 70 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 370 @ SPECIES_ID
- .string "WHIRIS$", 11 @ POKE_NICKNAME
- .string "SYDNEY$", 8 @ TRAINER_NAME
- .byte 47 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80020fff @ FLAGS
- .2byte 36 @ RANK
- .2byte MOVE_ASTONISH, MOVE_SCREECH, MOVE_UPROAR, MOVE_HYPER_VOICE
- .byte 2, 2, 7, 2, 7, 80 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 335 @ SPECIES_ID
- .string "MAHITA$", 11 @ POKE_NICKNAME
- .string "MORRIS$", 8 @ TRAINER_NAME
- .byte 38 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x08010fff @ FLAGS
- .2byte 68 @ RANK
- .2byte MOVE_SEISMIC_TOSS, MOVE_VITAL_THROW, MOVE_TACKLE, MOVE_REVERSAL
- .byte 9, 1, 1, 8, 1, 90 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 382 @ SPECIES_ID
- .string "RONAR$", 11 @ POKE_NICKNAME
- .string "MARIAH$", 8 @ TRAINER_NAME
- .byte 10 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x08008fff @ FLAGS
- .2byte 68 @ RANK
- .2byte MOVE_METAL_CLAW, MOVE_IRON_DEFENSE, MOVE_HEADBUTT, MOVE_TAKE_DOWN
- .byte 5, 10, 2, 10, 2, 100 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 41 @ SPECIES_ID
- .string "ZUTZU$", 11 @ POKE_NICKNAME
- .string "RUSSELL$", 8 @ TRAINER_NAME
- .byte 33 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x90004fff @ FLAGS
- .2byte 56 @ RANK
- .2byte MOVE_HAZE, MOVE_MEAN_LOOK, MOVE_CONFUSE_RAY, MOVE_LEECH_LIFE
- .byte 4, 2, 2, 2, 10, 50 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 367 @ SPECIES_ID
- .string "GULIN$", 11 @ POKE_NICKNAME
- .string "MELANIE$", 8 @ TRAINER_NAME
- .byte 6 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x40002fff @ FLAGS
- .2byte 16 @ RANK
- .2byte MOVE_SLUDGE, MOVE_AMNESIA, MOVE_TOXIC, MOVE_YAWN
- .byte 1, 10, 1, 10, 5, 60 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 337 @ SPECIES_ID
- .string "RIKELEC$", 11 @ POKE_NICKNAME
- .string "CHANCE$", 8 @ TRAINER_NAME
- .byte 15 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80001fff @ FLAGS
- .2byte 12 @ RANK
- .2byte MOVE_SPARK, MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_ROAR
- .byte 20, 10, 1, 1, 1, 70 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 363 @ SPECIES_ID
- .string "RELIA$", 11 @ POKE_NICKNAME
- .string "KARINA$", 8 @ TRAINER_NAME
- .byte 32 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x24000fff @ FLAGS
- .2byte 41 @ RANK
- .2byte MOVE_PETAL_DANCE, MOVE_MAGICAL_LEAF, MOVE_GRASS_WHISTLE, MOVE_INGRAIN
- .byte 50, 15, 75, 10, 20, 100 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 84 @ SPECIES_ID
- .string "DUODO$", 11 @ POKE_NICKNAME
- .string "BOBBY$", 8 @ TRAINER_NAME
- .byte 51 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x82000fff @ FLAGS
- .2byte 125 @ RANK
- .2byte MOVE_PECK, MOVE_FURY_ATTACK, MOVE_RETURN, MOVE_GROWL
- .byte 15, 21, 15, 85, 35, 110 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 332 @ SPECIES_ID
- .string "PINCHIN$", 11 @ POKE_NICKNAME
- .string "CLAIRE$", 8 @ TRAINER_NAME
- .byte 8 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x81000fff @ FLAGS
- .2byte 113 @ RANK
- .2byte MOVE_BITE, MOVE_SAND_ATTACK, MOVE_DIG, MOVE_FAINT_ATTACK
- .byte 75, 25, 25, 10, 25, 120 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 344 @ SPECIES_ID
- .string "NACAC$", 11 @ POKE_NICKNAME
- .string "WILLIE$", 8 @ TRAINER_NAME
- .byte 11 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80800fff @ FLAGS
- .2byte 37 @ RANK
- .2byte MOVE_SPIKES, MOVE_LEER, MOVE_POISON_STING, MOVE_SAND_ATTACK
- .byte 10, 30, 25, 65, 25, 130 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 27 @ SPECIES_ID
- .string "SHRAND$", 11 @ POKE_NICKNAME
- .string "CASSIDY$", 8 @ TRAINER_NAME
- .byte 18 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x10400fff @ FLAGS
- .2byte 69 @ RANK
- .2byte MOVE_SLASH, MOVE_DEFENSE_CURL, MOVE_SWIFT, MOVE_FURY_SWIPES
- .byte 30, 90, 30, 10, 100, 140 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 318 @ SPECIES_ID
- .string "TOYBAL$", 11 @ POKE_NICKNAME
- .string "MORGAN$", 8 @ TRAINER_NAME
- .byte 44 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x08200fff @ FLAGS
- .2byte 41 @ RANK
- .2byte MOVE_SELF_DESTRUCT, MOVE_ROCK_TOMB, MOVE_PSYBEAM, MOVE_CONFUSION
- .byte 50, 40, 10, 35, 35, 150 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 339 @ SPECIES_ID
- .string "LENUM$", 11 @ POKE_NICKNAME
- .string "SUMMER$", 8 @ TRAINER_NAME
- .byte 26 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x10100fff @ FLAGS
- .2byte 77 @ RANK
- .2byte MOVE_MAGNITUDE, MOVE_EARTHQUAKE, MOVE_SUNNY_DAY, MOVE_FLAMETHROWER
- .byte 40, 5, 40, 40, 40, 100 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 308 @ SPECIES_ID
- .string "SPININ$", 11 @ POKE_NICKNAME
- .string "MILES$", 8 @ TRAINER_NAME
- .byte 31 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80080fff @ FLAGS
- .2byte 49 @ RANK
- .2byte MOVE_TEETER_DANCE, MOVE_PSYCH_UP, MOVE_HYPNOSIS, MOVE_UPROAR
- .byte 25, 75, 25, 10, 25, 110 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 358 @ SPECIES_ID
- .string "SWABY$", 11 @ POKE_NICKNAME
- .string "AUDREY$", 8 @ TRAINER_NAME
- .byte 47 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0xa0040fff @ FLAGS
- .2byte 41 @ RANK
- .2byte MOVE_MIRROR_MOVE, MOVE_PERISH_SONG, MOVE_SAFEGUARD, MOVE_MIST
- .byte 30, 30, 40, 30, 25, 120 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 289 @ SPECIES_ID
- .string "NOONE$", 11 @ POKE_NICKNAME
- .string "AVERY$", 8 @ TRAINER_NAME
- .byte 38 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80020fff @ FLAGS
- .2byte 25 @ RANK
- .2byte MOVE_GROWL, MOVE_COVET, MOVE_SAND_ATTACK, MOVE_REST
- .byte 40, 40, 30, 10, 30, 130 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 317 @ SPECIES_ID
- .string "KECON$", 11 @ POKE_NICKNAME
- .string "ARIANA$", 8 @ TRAINER_NAME
- .byte 10 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80010fff @ FLAGS
- .2byte 97 @ RANK
- .2byte MOVE_THIEF, MOVE_SCREECH, MOVE_ANCIENT_POWER, MOVE_BIND
- .byte 10, 10, 40, 75, 35, 140 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 118 @ SPECIES_ID
- .string "GOLDEN$", 11 @ POKE_NICKNAME
- .string "ASHTON$", 8 @ TRAINER_NAME
- .byte 33 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80008fff @ FLAGS
- .2byte 13 @ RANK
- .2byte MOVE_HORN_ATTACK, MOVE_FURY_ATTACK, MOVE_HORN_DRILL, MOVE_TAIL_WHIP
- .byte 70, 30, 5, 30, 25, 150 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 323 @ SPECIES_ID
- .string "BOBOACH$", 11 @ POKE_NICKNAME
- .string "SANDRA$", 8 @ TRAINER_NAME
- .byte 6 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80004fff @ FLAGS
- .2byte 113 @ RANK
- .2byte MOVE_MUD_SPORT, MOVE_WATER_SPORT, MOVE_EARTHQUAKE, MOVE_FUTURE_SIGHT
- .byte 45, 45, 60, 25, 15, 100 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 227 @ SPECIES_ID
- .string "CORPY$", 11 @ POKE_NICKNAME
- .string "CARSON$", 8 @ TRAINER_NAME
- .byte 35 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x08002fff @ FLAGS
- .2byte 77 @ RANK
- .2byte MOVE_SWIFT, MOVE_DOUBLE_TEAM, MOVE_AGILITY, MOVE_CUT
- .byte 40, 30, 25, 60, 20, 110 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 295 @ SPECIES_ID
- .string "TADO$", 11 @ POKE_NICKNAME
- .string "KATRINA$", 8 @ TRAINER_NAME
- .byte 16 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x08001fff @ FLAGS
- .2byte 57 @ RANK
- .2byte MOVE_ASTONISH, MOVE_GROWL, MOVE_RAIN_DANCE, MOVE_WATER_PULSE
- .byte 15, 15, 30, 15, 75, 120 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 383 @ SPECIES_ID
- .string "LAIRN$", 11 @ POKE_NICKNAME
- .string "RONNIE$", 8 @ TRAINER_NAME
- .byte 55 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x84000fff @ FLAGS
- .2byte 98 @ RANK
- .2byte MOVE_METAL_SOUND, MOVE_METAL_CLAW, MOVE_HARDEN, MOVE_TAKE_DOWN
- .byte 30, 50, 35, 100, 90, 200 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 299 @ SPECIES_ID
- .string "NUZLE$", 11 @ POKE_NICKNAME
- .string "CLAUDIA$", 8 @ TRAINER_NAME
- .byte 8 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x82000fff @ FLAGS
- .2byte 14 @ RANK
- .2byte MOVE_GROWTH, MOVE_RAZOR_WIND, MOVE_EXPLOSION, MOVE_EXTRASENSORY
- .byte 75, 75, 65, 35, 70, 210 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 302 @ SPECIES_ID
- .string "NINAS$", 11 @ POKE_NICKNAME
- .string "ELIAS$", 8 @ TRAINER_NAME
- .byte 11 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x81000fff @ FLAGS
- .2byte 114 @ RANK
- .2byte MOVE_SCREECH, MOVE_FURY_SWIPES, MOVE_SAND_ATTACK, MOVE_BATON_PASS
- .byte 30, 50, 95, 70, 70, 220 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 305 @ SPECIES_ID
- .string "WELOW$", 11 @ POKE_NICKNAME
- .string "JADE$", 8 @ TRAINER_NAME
- .byte 18 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80800fff @ FLAGS
- .2byte 14 @ RANK
- .2byte MOVE_AGILITY, MOVE_AERIAL_ACE, MOVE_WING_ATTACK, MOVE_FLY
- .byte 65, 85, 35, 75, 40, 230 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 287 @ SPECIES_ID
- .string "YENA$", 11 @ POKE_NICKNAME
- .string "FRANCIS$", 8 @ TRAINER_NAME
- .byte 44 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80400fff @ FLAGS
- .2byte 98 @ RANK
- .2byte MOVE_TAUNT, MOVE_THIEF, MOVE_ODOR_SLEUTH, MOVE_TAKE_DOWN
- .byte 40, 80, 35, 70, 70, 240 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 292 @ SPECIES_ID
- .string "TIFLY$", 11 @ POKE_NICKNAME
- .string "ALISHA$", 8 @ TRAINER_NAME
- .byte 26 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80200fff @ FLAGS
- .2byte 42 @ RANK
- .2byte MOVE_MORNING_SUN, MOVE_SILVER_WIND, MOVE_STUN_SPORE, MOVE_SECRET_POWER
- .byte 40, 70, 25, 80, 100, 250 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 119 @ SPECIES_ID
- .string "KINGSEA$", 11 @ POKE_NICKNAME
- .string "SAUL$", 8 @ TRAINER_NAME
- .byte 31 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80100fff @ FLAGS
- .2byte 118 @ RANK
- .2byte MOVE_FLAIL, MOVE_SUPERSONIC, MOVE_HORN_ATTACK, MOVE_FURY_ATTACK
- .byte 80, 60, 30, 70, 90, 200 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 340 @ SPECIES_ID
- .string "ERUPAM$", 11 @ POKE_NICKNAME
- .string "FELICIA$", 8 @ TRAINER_NAME
- .byte 47 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80080fff @ FLAGS
- .2byte 78 @ RANK
- .2byte MOVE_EARTHQUAKE, MOVE_FISSURE, MOVE_OVERHEAT, MOVE_HYPER_BEAM
- .byte 100, 80, 20, 50, 65, 210 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 66 @ SPECIES_ID
- .string "CHOPAM$", 11 @ POKE_NICKNAME
- .string "EMILIO$", 8 @ TRAINER_NAME
- .byte 38 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80040fff @ FLAGS
- .2byte 66 @ RANK
- .2byte MOVE_SEISMIC_TOSS, MOVE_FOCUS_ENERGY, MOVE_KARATE_CHOP, MOVE_SCARY_FACE
- .byte 70, 85, 25, 60, 50, 220 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 296 @ SPECIES_ID
- .string "LOMBE$", 11 @ POKE_NICKNAME
- .string "KARLA$", 8 @ TRAINER_NAME
- .byte 10 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80020fff @ FLAGS
- .2byte 58 @ RANK
- .2byte MOVE_ATTRACT, MOVE_FLASH, MOVE_UPROAR, MOVE_GROWL
- .byte 40, 60, 90, 45, 70, 230 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 379 @ SPECIES_ID
- .string "VIPES$", 11 @ POKE_NICKNAME
- .string "DARRYL$", 8 @ TRAINER_NAME
- .byte 33 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80010fff @ FLAGS
- .2byte 98 @ RANK
- .2byte MOVE_POISON_FANG, MOVE_GLARE, MOVE_WRAP, MOVE_SCREECH
- .byte 35, 50, 90, 40, 100, 240 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 313 @ SPECIES_ID
- .string "MERAIL$", 11 @ POKE_NICKNAME
- .string "SELENA$", 8 @ TRAINER_NAME
- .byte 22 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80008fff @ FLAGS
- .2byte 26 @ RANK
- .2byte MOVE_WATER_PULSE, MOVE_REST, MOVE_WATER_SPOUT, MOVE_SPLASH
- .byte 30, 100, 100, 50, 30, 250 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 129 @ SPECIES_ID
- .string "KARPAG$", 11 @ POKE_NICKNAME
- .string "NOEL$", 8 @ TRAINER_NAME
- .byte 35 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80004fff @ FLAGS
- .2byte 82 @ RANK
- .2byte MOVE_TACKLE, MOVE_SPLASH, MOVE_FLAIL, MOVE_TACKLE
- .byte 30, 30, 160, 50, 160, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 348 @ SPECIES_ID
- .string "LUNONE$", 11 @ POKE_NICKNAME
- .string "LACEY$", 8 @ TRAINER_NAME
- .byte 16 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80002fff @ FLAGS
- .2byte 42 @ RANK
- .2byte MOVE_EXPLOSION, MOVE_FUTURE_SIGHT, MOVE_PSYCHIC, MOVE_CONFUSION
- .byte 50, 70, 60, 70, 50, 210 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 310 @ SPECIES_ID
- .string "PELIPE$", 11 @ POKE_NICKNAME
- .string "CORBIN$", 8 @ TRAINER_NAME
- .byte 39 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80001fff @ FLAGS
- .2byte 14 @ RANK
- .2byte MOVE_MIST, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_WING_ATTACK
- .byte 95, 80, 85, 35, 35, 220 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 130 @ SPECIES_ID
- .string "RADOS$", 11 @ POKE_NICKNAME
- .string "JUSTINA$", 8 @ TRAINER_NAME
- .byte 32 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x84000fff @ FLAGS
- .2byte 79 @ RANK
- .2byte MOVE_HYPER_BEAM, MOVE_HYDRO_PUMP, MOVE_RAIN_DANCE, MOVE_BITE
- .byte 160, 200, 20, 40, 160, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 371 @ SPECIES_ID
- .string "LOUDERD$", 11 @ POKE_NICKNAME
- .string "RALPH$", 8 @ TRAINER_NAME
- .byte 21 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x82000fff @ FLAGS
- .2byte 71 @ RANK
- .2byte MOVE_HYPER_VOICE, MOVE_STOMP, MOVE_ROAR, MOVE_HOWL
- .byte 170, 50, 55, 150, 160, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 316 @ SPECIES_ID
- .string "CATTED$", 11 @ POKE_NICKNAME
- .string "ROSA$", 8 @ TRAINER_NAME
- .byte 8 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x81000fff @ FLAGS
- .2byte 59 @ RANK
- .2byte MOVE_ATTRACT, MOVE_ASSIST, MOVE_FAINT_ATTACK, MOVE_TAIL_WHIP
- .byte 40, 200, 150, 185, 60, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 366 @ SPECIES_ID
- .string "SLING$", 11 @ POKE_NICKNAME
- .string "KEATON$", 8 @ TRAINER_NAME
- .byte 11 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80800fff @ FLAGS
- .2byte 115 @ RANK
- .2byte MOVE_COVET, MOVE_COUNTER, MOVE_ENCORE, MOVE_SLACK_OFF
- .byte 85, 85, 170, 110, 150, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 359 @ SPECIES_ID
- .string "TARIA$", 11 @ POKE_NICKNAME
- .string "MAYRA$", 8 @ TRAINER_NAME
- .byte 18 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80400fff @ FLAGS
- .2byte 15 @ RANK
- .2byte MOVE_DRAGON_DANCE, MOVE_HYPER_BEAM, MOVE_PERISH_SONG, MOVE_SAFEGUARD
- .byte 170, 150, 30, 30, 90, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 393 @ SPECIES_ID
- .string "SHEDJA$", 11 @ POKE_NICKNAME
- .string "LAMAR$", 8 @ TRAINER_NAME
- .byte 15 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80200fff @ FLAGS
- .2byte 39 @ RANK
- .2byte MOVE_SHOCK_WAVE, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, MOVE_RETURN
- .byte 230, 60, 60, 230, 80, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 45 @ SPECIES_ID
- .string "PLUMILE$", 11 @ POKE_NICKNAME
- .string "AUBREY$", 8 @ TRAINER_NAME
- .byte 26 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80100fff @ FLAGS
- .2byte 59 @ RANK
- .2byte MOVE_PETAL_DANCE, MOVE_SWEET_SCENT, MOVE_STUN_SPORE, MOVE_FLASH
- .byte 35, 200, 150, 130, 40, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 361 @ SPECIES_ID
- .string "KULLUSK$", 11 @ POKE_NICKNAME
- .string "NIGEL$", 8 @ TRAINER_NAME
- .byte 31 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80080fff @ FLAGS
- .2byte 115 @ RANK
- .2byte MOVE_DISABLE, MOVE_FUTURE_SIGHT, MOVE_NIGHT_SHADE, MOVE_PURSUIT
- .byte 25, 35, 230, 150, 160, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 178 @ SPECIES_ID
- .string "UTAN$", 11 @ POKE_NICKNAME
- .string "CAMILLE$", 8 @ TRAINER_NAME
- .byte 47 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80040fff @ FLAGS
- .2byte 115 @ RANK
- .2byte MOVE_NIGHT_SHADE, MOVE_FUTURE_SIGHT, MOVE_CONFUSE_RAY, MOVE_PSYCHIC
- .byte 35, 35, 150, 130, 170, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 331 @ SPECIES_ID
- .string "PEDOS$", 11 @ POKE_NICKNAME
- .string "DEON$", 8 @ TRAINER_NAME
- .byte 38 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80020fff @ FLAGS
- .2byte 87 @ RANK
- .2byte MOVE_AGILITY, MOVE_SWAGGER, MOVE_TAUNT, MOVE_TAKE_DOWN
- .byte 140, 70, 140, 75, 100, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 325 @ SPECIES_ID
- .string "LUVIS$", 11 @ POKE_NICKNAME
- .string "JANELLE$", 8 @ TRAINER_NAME
- .byte 10 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80010fff @ FLAGS
- .2byte 83 @ RANK
- .2byte MOVE_SWEET_KISS, MOVE_ATTRACT, MOVE_TAKE_DOWN, MOVE_CHARM
- .byte 50, 100, 220, 40, 190, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 214 @ SPECIES_ID
- .string "HEROSS$", 11 @ POKE_NICKNAME
- .string "HEATH$", 8 @ TRAINER_NAME
- .byte 33 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80008fff @ FLAGS
- .2byte 71 @ RANK
- .2byte MOVE_STRENGTH, MOVE_ENDURE, MOVE_REVERSAL, MOVE_ROCK_TOMB
- .byte 170, 70, 110, 240, 140, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 101 @ SPECIES_ID
- .string "RODLECT$", 11 @ POKE_NICKNAME
- .string "SASHA$", 8 @ TRAINER_NAME
- .byte 6 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80004fff @ FLAGS
- .2byte 15 @ RANK
- .2byte MOVE_EXPLOSION, MOVE_LIGHT_SCREEN, MOVE_SWIFT, MOVE_FLASH
- .byte 200, 200, 30, 35, 50, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 172 @ SPECIES_ID
- .string "CHUPY$", 11 @ POKE_NICKNAME
- .string "FRANKIE$", 8 @ TRAINER_NAME
- .byte 35 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80002fff @ FLAGS
- .2byte 59 @ RANK
- .2byte MOVE_SWEET_KISS, MOVE_ATTRACT, MOVE_REST, MOVE_TAIL_WHIP
- .byte 25, 150, 180, 115, 120, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 202 @ SPECIES_ID
- .string "WOBET$", 11 @ POKE_NICKNAME
- .string "HELEN$", 8 @ TRAINER_NAME
- .byte 16 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80001fff @ FLAGS
- .2byte 111 @ RANK
- .2byte MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_SAFEGUARD, MOVE_DESTINY_BOND
- .byte 60, 230, 50, 220, 210, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
-@ credit to Valkyrie for helping me properly dump these structs
diff --git a/include/constants/contest.h b/include/constants/contest.h
new file mode 100644
index 000000000..e960809cc
--- /dev/null
+++ b/include/constants/contest.h
@@ -0,0 +1,44 @@
+#ifndef POKERUBY_CONSTANTS_CONTEST_H
+#define POKERUBY_CONSTANTS_CONTEST_H
+
+
+#define CONTEST_AI_CHECK_BAD_MOVE (1 << 0)
+#define CONTEST_AI_CHECK_COMBO (1 << 1)
+#define CONTEST_AI_CHECK_BORING (1 << 2)
+#define CONTEST_AI_CHECK_EXCITEMENT (1 << 3)
+#define CONTEST_AI_CHECK_ORDER (1 << 4)
+#define CONTEST_AI_CHECK_GOOD_MOVE (1 << 5)
+#define CONTEST_AI_ERRATIC (1 << 6)
+#define CONTEST_AI_DUMMY_1 (1 << 7)
+#define CONTEST_AI_DUMMY_2 (1 << 8)
+#define CONTEST_AI_DUMMY_3 (1 << 9)
+#define CONTEST_AI_DUMMY_4 (1 << 10)
+#define CONTEST_AI_DUMMY_5 (1 << 11)
+#define CONTEST_AI_DUMMY_6 (1 << 12)
+#define CONTEST_AI_DUMMY_7 (1 << 13)
+#define CONTEST_AI_DUMMY_8 (1 << 14)
+#define CONTEST_AI_DUMMY_9 (1 << 15)
+#define CONTEST_AI_DUMMY_10 (1 << 16)
+#define CONTEST_AI_DUMMY_11 (1 << 17)
+#define CONTEST_AI_DUMMY_12 (1 << 18)
+#define CONTEST_AI_DUMMY_13 (1 << 19)
+#define CONTEST_AI_DUMMY_14 (1 << 20)
+#define CONTEST_AI_DUMMY_15 (1 << 21)
+#define CONTEST_AI_DUMMY_16 (1 << 22)
+#define CONTEST_AI_DUMMY_17 (1 << 23)
+#define CONTEST_AI_DUMMY_18 (1 << 24)
+#define CONTEST_AI_DUMMY_19 (1 << 25)
+#define CONTEST_AI_DUMMY_20 (1 << 26)
+#define CONTEST_AI_DUMMY_21 (1 << 27)
+#define CONTEST_AI_DUMMY_22 (1 << 28)
+#define CONTEST_AI_DUMMY_23 (1 << 29)
+#define CONTEST_AI_DUMMY_24 (1 << 30)
+#define CONTEST_AI_DUMMY_25 (1 << 31)
+
+// The below scripts are used by every AI contest opponent
+// It includes every non-dummy script
+#define CONTEST_AI_COMMON (CONTEST_AI_CHECK_BAD_MOVE | CONTEST_AI_CHECK_COMBO | CONTEST_AI_CHECK_BORING | \
+ CONTEST_AI_CHECK_EXCITEMENT | CONTEST_AI_CHECK_ORDER | CONTEST_AI_CHECK_GOOD_MOVE | CONTEST_AI_ERRATIC | \
+ CONTEST_AI_DUMMY_1 | CONTEST_AI_DUMMY_2 | CONTEST_AI_DUMMY_3 | CONTEST_AI_DUMMY_4 | CONTEST_AI_DUMMY_5)
+
+#endif //POKERUBY_CONSTANTS_CONTEST_H
diff --git a/ld_script.txt b/ld_script.txt
index a8e74560e..1eb8131a1 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -575,9 +575,8 @@ SECTIONS {
src/item.o(.rodata);
src/debug/matsuda_debug_menu.o(.rodata);
src/contest.o(.rodata);
- data/contest.o(.rodata);
src/contest_2.o(.rodata);
- data/contest_2.o(.rodata);
+ data/contest.o(.rodata);
src/shop.o(.rodata);
src/fldeff_escalator.o(.rodata);
src/berry.o(.rodata);
diff --git a/src/contest_2.c b/src/contest_2.c
index 3e617773b..edfff74d0 100644
--- a/src/contest_2.c
+++ b/src/contest_2.c
@@ -40,7 +40,6 @@ extern u8 gBattlerSpriteIds[];
extern struct Window gWindowTemplate_Contest_MoveDescription;
extern struct SpriteTemplate gUnknown_02024E8C;
-extern const struct ContestPokemon gContestOpponents[60];
extern const u8 gUnknown_083CA308[][2];
extern const u8 gUnknown_083CA310[][2];
extern const u8 gUnknown_083CA318[][2];
@@ -80,6 +79,8 @@ extern const u8 gUnknownText_LinkStandbyAndWinner[];
extern void (*const gContestEffectFuncs[])(void);
extern const s8 gContestExcitementTable[][5];
+#include "data/contest_opponents.h"
+
void TryPutPlayerLast(void)
{
if (!(gIsLinkContest & 1))
diff --git a/src/data/contest_opponents.h b/src/data/contest_opponents.h
new file mode 100644
index 000000000..0385c0b64
--- /dev/null
+++ b/src/data/contest_opponents.h
@@ -0,0 +1,1424 @@
+#include "constants/species.h"
+#include "constants/moves.h"
+#include "constants/contest.h"
+
+#define CONTEST_OPPONENT_JIMMY 0
+#define CONTEST_OPPONENT_EDITH 1
+#define CONTEST_OPPONENT_EVAN 2
+#define CONTEST_OPPONENT_KELSEY 3
+#define CONTEST_OPPONENT_MADISON 4
+#define CONTEST_OPPONENT_RAYMOND 5
+#define CONTEST_OPPONENT_GRANT 6
+#define CONTEST_OPPONENT_PAIGE 7
+#define CONTEST_OPPONENT_ALEC 8
+#define CONTEST_OPPONENT_SYDNEY 9
+#define CONTEST_OPPONENT_MORRIS 10
+#define CONTEST_OPPONENT_MARIAH 11
+#define CONTEST_OPPONENT_RUSSELL 12
+#define CONTEST_OPPONENT_MELANIE 13
+#define CONTEST_OPPONENT_CHANCE 14
+#define CONTEST_OPPONENT_KARINA 15
+#define CONTEST_OPPONENT_BOBBY 16
+#define CONTEST_OPPONENT_CLAIRE 17
+#define CONTEST_OPPONENT_WILLIE 18
+#define CONTEST_OPPONENT_CASSIDY 19
+#define CONTEST_OPPONENT_MORGAN 20
+#define CONTEST_OPPONENT_SUMMER 21
+#define CONTEST_OPPONENT_MILES 22
+#define CONTEST_OPPONENT_AUDREY 23
+#define CONTEST_OPPONENT_AVERY 24
+#define CONTEST_OPPONENT_ARIANA 25
+#define CONTEST_OPPONENT_ASHTON 26
+#define CONTEST_OPPONENT_SANDRA 27
+#define CONTEST_OPPONENT_CARSON 28
+#define CONTEST_OPPONENT_KATRINA 29
+#define CONTEST_OPPONENT_RONNIE 30
+#define CONTEST_OPPONENT_CLAUDIA 31
+#define CONTEST_OPPONENT_ELIAS 32
+#define CONTEST_OPPONENT_JADE 33
+#define CONTEST_OPPONENT_FRANCIS 34
+#define CONTEST_OPPONENT_ALISHA 35
+#define CONTEST_OPPONENT_SAUL 36
+#define CONTEST_OPPONENT_FELICIA 37
+#define CONTEST_OPPONENT_EMILIO 38
+#define CONTEST_OPPONENT_KARLA 39
+#define CONTEST_OPPONENT_DARRYL 40
+#define CONTEST_OPPONENT_SELENA 41
+#define CONTEST_OPPONENT_NOEL 42
+#define CONTEST_OPPONENT_LACEY 43
+#define CONTEST_OPPONENT_CORBIN 44
+#define CONTEST_OPPONENT_JUSTINA 45
+#define CONTEST_OPPONENT_RALPH 46
+#define CONTEST_OPPONENT_ROSA 47
+#define CONTEST_OPPONENT_KEATON 48
+#define CONTEST_OPPONENT_MAYRA 49
+#define CONTEST_OPPONENT_LAMAR 50
+#define CONTEST_OPPONENT_AUBREY 51
+#define CONTEST_OPPONENT_NIGEL 52
+#define CONTEST_OPPONENT_CAMILLE 53
+#define CONTEST_OPPONENT_DEON 54
+#define CONTEST_OPPONENT_JANELLE 55
+#define CONTEST_OPPONENT_HEATH 56
+#define CONTEST_OPPONENT_SASHA 57
+#define CONTEST_OPPONENT_FRANKIE 58
+#define CONTEST_OPPONENT_HELEN 59
+
+// All contest opponents have a common set of AI flags (which contains all of the actually
+// useful AI scripts, as well as some dummys) and a random combination of 2-3 dummy flags.
+// Seems that like the battle AI they had more plans for this than what ended up in the final game
+#define CONTEST_AI_SET_1 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_20 | CONTEST_AI_DUMMY_21)
+#define CONTEST_AI_SET_2 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_19 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_3 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_18 | CONTEST_AI_DUMMY_23)
+#define CONTEST_AI_SET_4 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_17 | CONTEST_AI_DUMMY_23)
+#define CONTEST_AI_SET_5 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_16 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_6 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_15 | CONTEST_AI_DUMMY_22)
+#define CONTEST_AI_SET_7 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_14 | CONTEST_AI_DUMMY_23)
+#define CONTEST_AI_SET_8 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_13 | CONTEST_AI_DUMMY_21)
+#define CONTEST_AI_SET_9 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_12 | CONTEST_AI_DUMMY_24)
+#define CONTEST_AI_SET_A (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_11 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_B (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_10 | CONTEST_AI_DUMMY_21)
+#define CONTEST_AI_SET_C (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_9 | CONTEST_AI_DUMMY_21)
+#define CONTEST_AI_SET_D (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_8 | CONTEST_AI_DUMMY_22 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_E (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_7 | CONTEST_AI_DUMMY_24)
+#define CONTEST_AI_SET_F (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_6 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_10 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_20 | CONTEST_AI_DUMMY_23)
+#define CONTEST_AI_SET_11 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_18 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_12 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_17 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_13 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_16 | CONTEST_AI_DUMMY_22)
+#define CONTEST_AI_SET_14 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_15 | CONTEST_AI_DUMMY_21)
+#define CONTEST_AI_SET_15 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_14 | CONTEST_AI_DUMMY_22)
+#define CONTEST_AI_SET_16 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_13 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_17 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_12 | CONTEST_AI_DUMMY_23 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_18 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_10 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_19 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_9 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_1A (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_8 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_1B (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_7 | CONTEST_AI_DUMMY_21)
+#define CONTEST_AI_SET_1C (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_6 | CONTEST_AI_DUMMY_21)
+#define CONTEST_AI_SET_1D (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_20 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_1E (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_15 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_1F (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_14 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_20 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_12 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_21 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_7 | CONTEST_AI_DUMMY_25)
+
+const struct ContestPokemon gContestOpponents[] = {
+ [CONTEST_OPPONENT_JIMMY] = {
+ .species = SPECIES_POOCHYENA,
+ .nickname = _("POOCHY"),
+ .trainerName = _("JIMMY"),
+ .trainerGfxId = OBJ_EVENT_GFX_BOY_1,
+ .flags = CONTEST_AI_SET_1,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_ROAR, MOVE_BITE, MOVE_TAKE_DOWN, MOVE_HOWL },
+ .cool = 10,
+ .beauty = 4,
+ .cute = 10,
+ .smart = 3,
+ .tough = 4,
+ .sheen = 50,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_EDITH] = {
+ .species = SPECIES_ZIGZAGOON,
+ .nickname = _("ZIGOON"),
+ .trainerName = _("EDITH"),
+ .trainerGfxId = OBJ_EVENT_GFX_GIRL_1,
+ .flags = CONTEST_AI_SET_2,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_REST, MOVE_TAIL_WHIP, MOVE_TACKLE, MOVE_COVET },
+ .cool = 10,
+ .beauty = 10,
+ .cute = 6,
+ .smart = 1,
+ .tough = 2,
+ .sheen = 60,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_EVAN] = {
+ .species = SPECIES_DUSTOX,
+ .nickname = _("DUSTER"),
+ .trainerName = _("EVAN"),
+ .trainerGfxId = OBJ_EVENT_GFX_LITTLE_BOY_2,
+ .flags = CONTEST_AI_SET_3,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_SILVER_WIND, MOVE_MOONLIGHT, MOVE_LIGHT_SCREEN, MOVE_GUST },
+ .cool = 2,
+ .beauty = 10,
+ .cute = 10,
+ .smart = 12,
+ .tough = 4,
+ .sheen = 70,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_KELSEY] = {
+ .species = SPECIES_SEEDOT,
+ .nickname = _("DOTS"),
+ .trainerName = _("KELSEY"),
+ .trainerGfxId = OBJ_EVENT_GFX_WOMAN_1,
+ .flags = CONTEST_AI_SET_4,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_BIDE, MOVE_SYNTHESIS, MOVE_BULLET_SEED, MOVE_GROWTH },
+ .cool = 3,
+ .beauty = 3,
+ .cute = 5,
+ .smart = 2,
+ .tough = 7,
+ .sheen = 80,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_MADISON] = {
+ .species = SPECIES_TAILLOW,
+ .nickname = _("TATAY"),
+ .trainerName = _("MADISON"),
+ .trainerGfxId = OBJ_EVENT_GFX_WOMAN_2,
+ .flags = CONTEST_AI_SET_5,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_WING_ATTACK, MOVE_AGILITY, MOVE_AERIAL_ACE, MOVE_GROWL },
+ .cool = 1,
+ .beauty = 3,
+ .cute = 3,
+ .smart = 5,
+ .tough = 4,
+ .sheen = 90,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_RAYMOND] = {
+ .species = SPECIES_NINCADA,
+ .nickname = _("NINDA"),
+ .trainerName = _("RAYMOND"),
+ .trainerGfxId = OBJ_EVENT_GFX_BLACK_BELT,
+ .flags = CONTEST_AI_SET_6,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_LEECH_LIFE, MOVE_FALSE_SWIPE, MOVE_FURY_SWIPES, MOVE_MIND_READER },
+ .cool = 5,
+ .beauty = 2,
+ .cute = 10,
+ .smart = 7,
+ .tough = 8,
+ .sheen = 100,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_GRANT] = {
+ .species = SPECIES_SHROOMISH,
+ .nickname = _("SMISH"),
+ .trainerName = _("GRANT"),
+ .trainerGfxId = OBJ_EVENT_GFX_YOUNGSTER,
+ .flags = CONTEST_AI_SET_7,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_STUN_SPORE, MOVE_LEECH_SEED, MOVE_MEGA_DRAIN, MOVE_ATTRACT },
+ .cool = 3,
+ .beauty = 3,
+ .cute = 10,
+ .smart = 2,
+ .tough = 2,
+ .sheen = 50,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_PAIGE] = {
+ .species = SPECIES_WINGULL,
+ .nickname = _("GULWEE"),
+ .trainerName = _("PAIGE"),
+ .trainerGfxId = OBJ_EVENT_GFX_WOMAN_5,
+ .flags = CONTEST_AI_SET_8,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_MIST, MOVE_WATER_GUN, MOVE_GROWL, MOVE_PURSUIT },
+ .cool = 3,
+ .beauty = 5,
+ .cute = 1,
+ .smart = 10,
+ .tough = 10,
+ .sheen = 60,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_ALEC] = {
+ .species = SPECIES_SLAKOTH,
+ .nickname = _("SLOKTH"),
+ .trainerName = _("ALEC"),
+ .trainerGfxId = OBJ_EVENT_GFX_CAMPER,
+ .flags = CONTEST_AI_SET_9,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_STRENGTH, MOVE_COUNTER, MOVE_YAWN, MOVE_ENCORE },
+ .cool = 10,
+ .beauty = 4,
+ .cute = 4,
+ .smart = 5,
+ .tough = 18,
+ .sheen = 70,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_SYDNEY] = {
+ .species = SPECIES_WHISMUR,
+ .nickname = _("WHIRIS"),
+ .trainerName = _("SYDNEY"),
+ .trainerGfxId = OBJ_EVENT_GFX_LASS,
+ .flags = CONTEST_AI_SET_A,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_ASTONISH, MOVE_SCREECH, MOVE_UPROAR, MOVE_HYPER_VOICE },
+ .cool = 2,
+ .beauty = 2,
+ .cute = 7,
+ .smart = 2,
+ .tough = 7,
+ .sheen = 80,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_MORRIS] = {
+ .species = SPECIES_MAKUHITA,
+ .nickname = _("MAHITA"),
+ .trainerName = _("MORRIS"),
+ .trainerGfxId = OBJ_EVENT_GFX_SCHOOL_KID_M,
+ .flags = CONTEST_AI_SET_B,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_SEISMIC_TOSS, MOVE_VITAL_THROW, MOVE_TACKLE, MOVE_REVERSAL },
+ .cool = 9,
+ .beauty = 1,
+ .cute = 1,
+ .smart = 8,
+ .tough = 1,
+ .sheen = 90,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_MARIAH] = {
+ .species = SPECIES_ARON,
+ .nickname = _("RONAR"),
+ .trainerName = _("MARIAH"),
+ .trainerGfxId = OBJ_EVENT_GFX_GIRL_2,
+ .flags = CONTEST_AI_SET_C,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_METAL_CLAW, MOVE_IRON_DEFENSE, MOVE_HEADBUTT, MOVE_TAKE_DOWN },
+ .cool = 5,
+ .beauty = 10,
+ .cute = 2,
+ .smart = 10,
+ .tough = 2,
+ .sheen = 100,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_RUSSELL] = {
+ .species = SPECIES_ZUBAT,
+ .nickname = _("ZUTZU"),
+ .trainerName = _("RUSSELL"),
+ .trainerGfxId = OBJ_EVENT_GFX_MAN_4,
+ .flags = CONTEST_AI_SET_D,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_HAZE, MOVE_MEAN_LOOK, MOVE_CONFUSE_RAY, MOVE_LEECH_LIFE },
+ .cool = 4,
+ .beauty = 2,
+ .cute = 2,
+ .smart = 2,
+ .tough = 10,
+ .sheen = 50,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_MELANIE] = {
+ .species = SPECIES_GULPIN,
+ .nickname = _("GULIN"),
+ .trainerName = _("MELANIE"),
+ .trainerGfxId = OBJ_EVENT_GFX_LITTLE_GIRL_1,
+ .flags = CONTEST_AI_SET_E,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_SLUDGE, MOVE_AMNESIA, MOVE_TOXIC, MOVE_YAWN },
+ .cool = 1,
+ .beauty = 10,
+ .cute = 1,
+ .smart = 10,
+ .tough = 5,
+ .sheen = 60,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_CHANCE] = {
+ .species = SPECIES_ELECTRIKE,
+ .nickname = _("RIKELEC"),
+ .trainerName = _("CHANCE"),
+ .trainerGfxId = OBJ_EVENT_GFX_BOY_4,
+ .flags = CONTEST_AI_SET_F,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_SPARK, MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_ROAR },
+ .cool = 20,
+ .beauty = 10,
+ .cute = 1,
+ .smart = 1,
+ .tough = 1,
+ .sheen = 70,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_KARINA] = {
+ .species = SPECIES_ROSELIA,
+ .nickname = _("RELIA"),
+ .trainerName = _("KARINA"),
+ .trainerGfxId = OBJ_EVENT_GFX_PICNICKER,
+ .flags = CONTEST_AI_SET_10,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_PETAL_DANCE, MOVE_MAGICAL_LEAF, MOVE_GRASS_WHISTLE, MOVE_INGRAIN },
+ .cool = 50,
+ .beauty = 15,
+ .cute = 75,
+ .smart = 10,
+ .tough = 20,
+ .sheen = 100,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_BOBBY] = {
+ .species = SPECIES_DODUO,
+ .nickname = _("DUODO"),
+ .trainerName = _("BOBBY"),
+ .trainerGfxId = OBJ_EVENT_GFX_RUNNING_TRIATHLETE_M,
+ .flags = CONTEST_AI_SET_2,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_PECK, MOVE_FURY_ATTACK, MOVE_RETURN, MOVE_GROWL },
+ .cool = 15,
+ .beauty = 21,
+ .cute = 15,
+ .smart = 85,
+ .tough = 35,
+ .sheen = 110,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_CLAIRE] = {
+ .species = SPECIES_TRAPINCH,
+ .nickname = _("PINCHIN"),
+ .trainerName = _("CLAIRE"),
+ .trainerGfxId = OBJ_EVENT_GFX_GIRL_1,
+ .flags = CONTEST_AI_SET_11,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_BITE, MOVE_SAND_ATTACK, MOVE_DIG, MOVE_FAINT_ATTACK },
+ .cool = 75,
+ .beauty = 25,
+ .cute = 25,
+ .smart = 10,
+ .tough = 25,
+ .sheen = 120,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_WILLIE] = {
+ .species = SPECIES_CACNEA,
+ .nickname = _("NACAC"),
+ .trainerName = _("WILLIE"),
+ .trainerGfxId = OBJ_EVENT_GFX_LITTLE_BOY_2,
+ .flags = CONTEST_AI_SET_12,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_SPIKES, MOVE_LEER, MOVE_POISON_STING, MOVE_SAND_ATTACK },
+ .cool = 10,
+ .beauty = 30,
+ .cute = 25,
+ .smart = 65,
+ .tough = 25,
+ .sheen = 130,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_CASSIDY] = {
+ .species = SPECIES_SANDSHREW,
+ .nickname = _("SHRAND"),
+ .trainerName = _("CASSIDY"),
+ .trainerGfxId = OBJ_EVENT_GFX_WOMAN_2,
+ .flags = CONTEST_AI_SET_13,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_SLASH, MOVE_DEFENSE_CURL, MOVE_SWIFT, MOVE_FURY_SWIPES },
+ .cool = 30,
+ .beauty = 90,
+ .cute = 30,
+ .smart = 10,
+ .tough = 100,
+ .sheen = 140,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_MORGAN] = {
+ .species = SPECIES_BALTOY,
+ .nickname = _("TOYBAL"),
+ .trainerName = _("MORGAN"),
+ .trainerGfxId = OBJ_EVENT_GFX_BLACK_BELT,
+ .flags = CONTEST_AI_SET_14,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_SELF_DESTRUCT, MOVE_ROCK_TOMB, MOVE_PSYBEAM, MOVE_CONFUSION },
+ .cool = 50,
+ .beauty = 40,
+ .cute = 10,
+ .smart = 35,
+ .tough = 35,
+ .sheen = 150,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_SUMMER] = {
+ .species = SPECIES_NUMEL,
+ .nickname = _("LENUM"),
+ .trainerName = _("SUMMER"),
+ .trainerGfxId = OBJ_EVENT_GFX_WOMAN_5,
+ .flags = CONTEST_AI_SET_15,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_MAGNITUDE, MOVE_EARTHQUAKE, MOVE_SUNNY_DAY, MOVE_FLAMETHROWER },
+ .cool = 40,
+ .beauty = 5,
+ .cute = 40,
+ .smart = 40,
+ .tough = 40,
+ .sheen = 100,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_MILES] = {
+ .species = SPECIES_SPINDA,
+ .nickname = _("SPININ"),
+ .trainerName = _("MILES"),
+ .trainerGfxId = OBJ_EVENT_GFX_CAMPER,
+ .flags = CONTEST_AI_SET_16,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_TEETER_DANCE, MOVE_PSYCH_UP, MOVE_HYPNOSIS, MOVE_UPROAR },
+ .cool = 25,
+ .beauty = 75,
+ .cute = 25,
+ .smart = 10,
+ .tough = 25,
+ .sheen = 110,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_AUDREY] = {
+ .species = SPECIES_SWABLU,
+ .nickname = _("SWABY"),
+ .trainerName = _("AUDREY"),
+ .trainerGfxId = OBJ_EVENT_GFX_LASS,
+ .flags = CONTEST_AI_SET_17,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_MIRROR_MOVE, MOVE_PERISH_SONG, MOVE_SAFEGUARD, MOVE_MIST },
+ .cool = 30,
+ .beauty = 30,
+ .cute = 40,
+ .smart = 30,
+ .tough = 25,
+ .sheen = 120,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_AVERY] = {
+ .species = SPECIES_LINOONE,
+ .nickname = _("NOONE"),
+ .trainerName = _("AVERY"),
+ .trainerGfxId = OBJ_EVENT_GFX_SCHOOL_KID_M,
+ .flags = CONTEST_AI_SET_A,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_GROWL, MOVE_COVET, MOVE_SAND_ATTACK, MOVE_REST },
+ .cool = 40,
+ .beauty = 40,
+ .cute = 30,
+ .smart = 10,
+ .tough = 30,
+ .sheen = 130,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_ARIANA] = {
+ .species = SPECIES_KECLEON,
+ .nickname = _("KECON"),
+ .trainerName = _("ARIANA"),
+ .trainerGfxId = OBJ_EVENT_GFX_GIRL_2,
+ .flags = CONTEST_AI_SET_18,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_THIEF, MOVE_SCREECH, MOVE_ANCIENT_POWER, MOVE_BIND },
+ .cool = 10,
+ .beauty = 10,
+ .cute = 40,
+ .smart = 75,
+ .tough = 35,
+ .sheen = 140,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_ASHTON] = {
+ .species = SPECIES_GOLDEEN,
+ .nickname = _("GOLDEN"),
+ .trainerName = _("ASHTON"),
+ .trainerGfxId = OBJ_EVENT_GFX_MAN_4,
+ .flags = CONTEST_AI_SET_19,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_HORN_ATTACK, MOVE_FURY_ATTACK, MOVE_HORN_DRILL, MOVE_TAIL_WHIP },
+ .cool = 70,
+ .beauty = 30,
+ .cute = 5,
+ .smart = 30,
+ .tough = 25,
+ .sheen = 150,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_SANDRA] = {
+ .species = SPECIES_BARBOACH,
+ .nickname = _("BOBOACH"),
+ .trainerName = _("SANDRA"),
+ .trainerGfxId = OBJ_EVENT_GFX_LITTLE_GIRL_1,
+ .flags = CONTEST_AI_SET_1A,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_MUD_SPORT, MOVE_WATER_SPORT, MOVE_EARTHQUAKE, MOVE_FUTURE_SIGHT },
+ .cool = 45,
+ .beauty = 45,
+ .cute = 60,
+ .smart = 25,
+ .tough = 15,
+ .sheen = 100,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_CARSON] = {
+ .species = SPECIES_SKARMORY,
+ .nickname = _("CORPY"),
+ .trainerName = _("CARSON"),
+ .trainerGfxId = OBJ_EVENT_GFX_YOUNGSTER,
+ .flags = CONTEST_AI_SET_1B,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_SWIFT, MOVE_DOUBLE_TEAM, MOVE_AGILITY, MOVE_CUT },
+ .cool = 40,
+ .beauty = 30,
+ .cute = 25,
+ .smart = 60,
+ .tough = 20,
+ .sheen = 110,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_KATRINA] = {
+ .species = SPECIES_LOTAD,
+ .nickname = _("TADO"),
+ .trainerName = _("KATRINA"),
+ .trainerGfxId = OBJ_EVENT_GFX_WOMAN_1,
+ .flags = CONTEST_AI_SET_1C,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_ASTONISH, MOVE_GROWL, MOVE_RAIN_DANCE, MOVE_WATER_PULSE },
+ .cool = 15,
+ .beauty = 15,
+ .cute = 30,
+ .smart = 15,
+ .tough = 75,
+ .sheen = 120,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_RONNIE] = {
+ .species = SPECIES_LAIRON,
+ .nickname = _("LAIRN"),
+ .trainerName = _("RONNIE"),
+ .trainerGfxId = OBJ_EVENT_GFX_HIKER,
+ .flags = CONTEST_AI_SET_1D,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_METAL_SOUND, MOVE_METAL_CLAW, MOVE_HARDEN, MOVE_TAKE_DOWN },
+ .cool = 30,
+ .beauty = 50,
+ .cute = 35,
+ .smart = 100,
+ .tough = 90,
+ .sheen = 200,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_CLAUDIA] = {
+ .species = SPECIES_NUZLEAF,
+ .nickname = _("NUZLE"),
+ .trainerName = _("CLAUDIA"),
+ .trainerGfxId = OBJ_EVENT_GFX_GIRL_1,
+ .flags = CONTEST_AI_SET_2,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_GROWTH, MOVE_RAZOR_WIND, MOVE_EXPLOSION, MOVE_EXTRASENSORY },
+ .cool = 75,
+ .beauty = 75,
+ .cute = 65,
+ .smart = 35,
+ .tough = 70,
+ .sheen = 210,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_ELIAS] = {
+ .species = SPECIES_NINJASK,
+ .nickname = _("NINAS"),
+ .trainerName = _("ELIAS"),
+ .trainerGfxId = OBJ_EVENT_GFX_LITTLE_BOY_2,
+ .flags = CONTEST_AI_SET_11,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_SCREECH, MOVE_FURY_SWIPES, MOVE_SAND_ATTACK, MOVE_BATON_PASS },
+ .cool = 30,
+ .beauty = 50,
+ .cute = 95,
+ .smart = 70,
+ .tough = 70,
+ .sheen = 220,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_JADE] = {
+ .species = SPECIES_SWELLOW,
+ .nickname = _("WELOW"),
+ .trainerName = _("JADE"),
+ .trainerGfxId = OBJ_EVENT_GFX_WOMAN_2,
+ .flags = CONTEST_AI_SET_12,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_AGILITY, MOVE_AERIAL_ACE, MOVE_WING_ATTACK, MOVE_FLY },
+ .cool = 65,
+ .beauty = 85,
+ .cute = 35,
+ .smart = 75,
+ .tough = 40,
+ .sheen = 230,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_FRANCIS] = {
+ .species = SPECIES_MIGHTYENA,
+ .nickname = _("YENA"),
+ .trainerName = _("FRANCIS"),
+ .trainerGfxId = OBJ_EVENT_GFX_BLACK_BELT,
+ .flags = CONTEST_AI_SET_5,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_TAUNT, MOVE_THIEF, MOVE_ODOR_SLEUTH, MOVE_TAKE_DOWN },
+ .cool = 40,
+ .beauty = 80,
+ .cute = 35,
+ .smart = 70,
+ .tough = 70,
+ .sheen = 240,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_ALISHA] = {
+ .species = SPECIES_BEAUTIFLY,
+ .nickname = _("TIFLY"),
+ .trainerName = _("ALISHA"),
+ .trainerGfxId = OBJ_EVENT_GFX_WOMAN_5,
+ .flags = CONTEST_AI_SET_1E,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_MORNING_SUN, MOVE_SILVER_WIND, MOVE_STUN_SPORE, MOVE_SECRET_POWER },
+ .cool = 40,
+ .beauty = 70,
+ .cute = 25,
+ .smart = 80,
+ .tough = 100,
+ .sheen = 250,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_SAUL] = {
+ .species = SPECIES_SEAKING,
+ .nickname = _("KINGSEA"),
+ .trainerName = _("SAUL"),
+ .trainerGfxId = OBJ_EVENT_GFX_CAMPER,
+ .flags = CONTEST_AI_SET_1F,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_FLAIL, MOVE_SUPERSONIC, MOVE_HORN_ATTACK, MOVE_FURY_ATTACK },
+ .cool = 80,
+ .beauty = 60,
+ .cute = 30,
+ .smart = 70,
+ .tough = 90,
+ .sheen = 200,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_FELICIA] = {
+ .species = SPECIES_CAMERUPT,
+ .nickname = _("ERUPAM"),
+ .trainerName = _("FELICIA"),
+ .trainerGfxId = OBJ_EVENT_GFX_LASS,
+ .flags = CONTEST_AI_SET_16,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_EARTHQUAKE, MOVE_FISSURE, MOVE_OVERHEAT, MOVE_HYPER_BEAM },
+ .cool = 100,
+ .beauty = 80,
+ .cute = 20,
+ .smart = 50,
+ .tough = 65,
+ .sheen = 210,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_EMILIO] = {
+ .species = SPECIES_MACHOP,
+ .nickname = _("CHOPAM"),
+ .trainerName = _("EMILIO"),
+ .trainerGfxId = OBJ_EVENT_GFX_SCHOOL_KID_M,
+ .flags = CONTEST_AI_SET_20,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_SEISMIC_TOSS, MOVE_FOCUS_ENERGY, MOVE_KARATE_CHOP, MOVE_SCARY_FACE },
+ .cool = 70,
+ .beauty = 85,
+ .cute = 25,
+ .smart = 60,
+ .tough = 50,
+ .sheen = 220,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_KARLA] = {
+ .species = SPECIES_LOMBRE,
+ .nickname = _("LOMBE"),
+ .trainerName = _("KARLA"),
+ .trainerGfxId = OBJ_EVENT_GFX_GIRL_2,
+ .flags = CONTEST_AI_SET_A,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_ATTRACT, MOVE_FLASH, MOVE_UPROAR, MOVE_GROWL },
+ .cool = 40,
+ .beauty = 60,
+ .cute = 90,
+ .smart = 45,
+ .tough = 70,
+ .sheen = 230,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_DARRYL] = {
+ .species = SPECIES_SEVIPER,
+ .nickname = _("VIPES"),
+ .trainerName = _("DARRYL"),
+ .trainerGfxId = OBJ_EVENT_GFX_MAN_4,
+ .flags = CONTEST_AI_SET_18,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_POISON_FANG, MOVE_GLARE, MOVE_WRAP, MOVE_SCREECH },
+ .cool = 35,
+ .beauty = 50,
+ .cute = 90,
+ .smart = 40,
+ .tough = 100,
+ .sheen = 240,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_SELENA] = {
+ .species = SPECIES_WAILMER,
+ .nickname = _("MERAIL"),
+ .trainerName = _("SELENA"),
+ .trainerGfxId = OBJ_EVENT_GFX_OLD_WOMAN_1,
+ .flags = CONTEST_AI_SET_19,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_WATER_PULSE, MOVE_REST, MOVE_WATER_SPOUT, MOVE_SPLASH },
+ .cool = 30,
+ .beauty = 100,
+ .cute = 100,
+ .smart = 50,
+ .tough = 30,
+ .sheen = 250,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_NOEL] = {
+ .species = SPECIES_MAGIKARP,
+ .nickname = _("KARPAG"),
+ .trainerName = _("NOEL"),
+ .trainerGfxId = OBJ_EVENT_GFX_YOUNGSTER,
+ .flags = CONTEST_AI_SET_1A,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_TACKLE, MOVE_SPLASH, MOVE_FLAIL, MOVE_TACKLE },
+ .cool = 30,
+ .beauty = 30,
+ .cute = 160,
+ .smart = 50,
+ .tough = 160,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_LACEY] = {
+ .species = SPECIES_LUNATONE,
+ .nickname = _("LUNONE"),
+ .trainerName = _("LACEY"),
+ .trainerGfxId = OBJ_EVENT_GFX_WOMAN_1,
+ .flags = CONTEST_AI_SET_21,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_EXPLOSION, MOVE_FUTURE_SIGHT, MOVE_PSYCHIC, MOVE_CONFUSION },
+ .cool = 50,
+ .beauty = 70,
+ .cute = 60,
+ .smart = 70,
+ .tough = 50,
+ .sheen = 210,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_CORBIN] = {
+ .species = SPECIES_PELIPPER,
+ .nickname = _("PELIPE"),
+ .trainerName = _("CORBIN"),
+ .trainerGfxId = OBJ_EVENT_GFX_MANIAC,
+ .flags = CONTEST_AI_SET_F,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_MIST, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_WING_ATTACK },
+ .cool = 95,
+ .beauty = 80,
+ .cute = 85,
+ .smart = 35,
+ .tough = 35,
+ .sheen = 220,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_JUSTINA] = {
+ .species = SPECIES_GYARADOS,
+ .nickname = _("RADOS"),
+ .trainerName = _("JUSTINA"),
+ .trainerGfxId = OBJ_EVENT_GFX_PICNICKER,
+ .flags = CONTEST_AI_SET_1D,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_HYPER_BEAM, MOVE_HYDRO_PUMP, MOVE_RAIN_DANCE, MOVE_BITE },
+ .cool = 160,
+ .beauty = 200,
+ .cute = 20,
+ .smart = 40,
+ .tough = 160,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_RALPH] = {
+ .species = SPECIES_LOUDRED,
+ .nickname = _("LOUDERD"),
+ .trainerName = _("RALPH"),
+ .trainerGfxId = OBJ_EVENT_GFX_OLD_MAN_1,
+ .flags = CONTEST_AI_SET_2,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_HYPER_VOICE, MOVE_STOMP, MOVE_ROAR, MOVE_HOWL },
+ .cool = 170,
+ .beauty = 50,
+ .cute = 55,
+ .smart = 150,
+ .tough = 160,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_ROSA] = {
+ .species = SPECIES_DELCATTY,
+ .nickname = _("CATTED"),
+ .trainerName = _("ROSA"),
+ .trainerGfxId = OBJ_EVENT_GFX_GIRL_1,
+ .flags = CONTEST_AI_SET_11,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_ATTRACT, MOVE_ASSIST, MOVE_FAINT_ATTACK, MOVE_TAIL_WHIP },
+ .cool = 40,
+ .beauty = 200,
+ .cute = 150,
+ .smart = 185,
+ .tough = 60,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_KEATON] = {
+ .species = SPECIES_SLAKING,
+ .nickname = _("SLING"),
+ .trainerName = _("KEATON"),
+ .trainerGfxId = OBJ_EVENT_GFX_LITTLE_BOY_2,
+ .flags = CONTEST_AI_SET_12,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_COVET, MOVE_COUNTER, MOVE_ENCORE, MOVE_SLACK_OFF },
+ .cool = 85,
+ .beauty = 85,
+ .cute = 170,
+ .smart = 110,
+ .tough = 150,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_MAYRA] = {
+ .species = SPECIES_ALTARIA,
+ .nickname = _("TARIA"),
+ .trainerName = _("MAYRA"),
+ .trainerGfxId = OBJ_EVENT_GFX_WOMAN_2,
+ .flags = CONTEST_AI_SET_5,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_DRAGON_DANCE, MOVE_HYPER_BEAM, MOVE_PERISH_SONG, MOVE_SAFEGUARD },
+ .cool = 170,
+ .beauty = 150,
+ .cute = 30,
+ .smart = 30,
+ .tough = 90,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_LAMAR] = {
+ .species = SPECIES_KIRLIA,
+ .nickname = _("SHEDJA"),
+ .trainerName = _("LAMAR"),
+ .trainerGfxId = OBJ_EVENT_GFX_BOY_4,
+ .flags = CONTEST_AI_SET_1E,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_SHOCK_WAVE, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, MOVE_RETURN },
+ .cool = 230,
+ .beauty = 60,
+ .cute = 60,
+ .smart = 230,
+ .tough = 80,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_AUBREY] = {
+ .species = SPECIES_VILEPLUME,
+ .nickname = _("PLUMILE"),
+ .trainerName = _("AUBREY"),
+ .trainerGfxId = OBJ_EVENT_GFX_WOMAN_5,
+ .flags = CONTEST_AI_SET_1F,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_PETAL_DANCE, MOVE_SWEET_SCENT, MOVE_STUN_SPORE, MOVE_FLASH },
+ .cool = 35,
+ .beauty = 200,
+ .cute = 150,
+ .smart = 130,
+ .tough = 40,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_NIGEL] = {
+ .species = SPECIES_DUSKULL,
+ .nickname = _("KULLUSK"),
+ .trainerName = _("NIGEL"),
+ .trainerGfxId = OBJ_EVENT_GFX_CAMPER,
+ .flags = CONTEST_AI_SET_16,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_DISABLE, MOVE_FUTURE_SIGHT, MOVE_NIGHT_SHADE, MOVE_PURSUIT },
+ .cool = 25,
+ .beauty = 35,
+ .cute = 230,
+ .smart = 150,
+ .tough = 160,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_CAMILLE] = {
+ .species = SPECIES_XATU,
+ .nickname = _("UTAN"),
+ .trainerName = _("CAMILLE"),
+ .trainerGfxId = OBJ_EVENT_GFX_LASS,
+ .flags = CONTEST_AI_SET_20,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_NIGHT_SHADE, MOVE_FUTURE_SIGHT, MOVE_CONFUSE_RAY, MOVE_PSYCHIC },
+ .cool = 35,
+ .beauty = 35,
+ .cute = 150,
+ .smart = 130,
+ .tough = 170,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_DEON] = {
+ .species = SPECIES_SHARPEDO,
+ .nickname = _("PEDOS"),
+ .trainerName = _("DEON"),
+ .trainerGfxId = OBJ_EVENT_GFX_SCHOOL_KID_M,
+ .flags = CONTEST_AI_SET_A,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_AGILITY, MOVE_SWAGGER, MOVE_TAUNT, MOVE_TAKE_DOWN },
+ .cool = 140,
+ .beauty = 70,
+ .cute = 140,
+ .smart = 75,
+ .tough = 100,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_JANELLE] = {
+ .species = SPECIES_LUVDISC,
+ .nickname = _("LUVIS"),
+ .trainerName = _("JANELLE"),
+ .trainerGfxId = OBJ_EVENT_GFX_GIRL_2,
+ .flags = CONTEST_AI_SET_18,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_SWEET_KISS, MOVE_ATTRACT, MOVE_TAKE_DOWN, MOVE_CHARM },
+ .cool = 50,
+ .beauty = 100,
+ .cute = 220,
+ .smart = 40,
+ .tough = 190,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_HEATH] = {
+ .species = SPECIES_HERACROSS,
+ .nickname = _("HEROSS"),
+ .trainerName = _("HEATH"),
+ .trainerGfxId = OBJ_EVENT_GFX_MAN_4,
+ .flags = CONTEST_AI_SET_19,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_STRENGTH, MOVE_ENDURE, MOVE_REVERSAL, MOVE_ROCK_TOMB },
+ .cool = 170,
+ .beauty = 70,
+ .cute = 110,
+ .smart = 240,
+ .tough = 140,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_SASHA] = {
+ .species = SPECIES_ELECTRODE,
+ .nickname = _("RODLECT"),
+ .trainerName = _("SASHA"),
+ .trainerGfxId = OBJ_EVENT_GFX_LITTLE_GIRL_1,
+ .flags = CONTEST_AI_SET_1A,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_EXPLOSION, MOVE_LIGHT_SCREEN, MOVE_SWIFT, MOVE_FLASH },
+ .cool = 200,
+ .beauty = 200,
+ .cute = 30,
+ .smart = 35,
+ .tough = 50,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_FRANKIE] = {
+ .species = SPECIES_PICHU,
+ .nickname = _("CHUPY"),
+ .trainerName = _("FRANKIE"),
+ .trainerGfxId = OBJ_EVENT_GFX_YOUNGSTER,
+ .flags = CONTEST_AI_SET_21,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_SWEET_KISS, MOVE_ATTRACT, MOVE_REST, MOVE_TAIL_WHIP },
+ .cool = 25,
+ .beauty = 150,
+ .cute = 180,
+ .smart = 115,
+ .tough = 120,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_HELEN] = {
+ .species = SPECIES_WOBBUFFET,
+ .nickname = _("WOBET"),
+ .trainerName = _("HELEN"),
+ .trainerGfxId = OBJ_EVENT_GFX_WOMAN_1,
+ .flags = CONTEST_AI_SET_F,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_SAFEGUARD, MOVE_DESTINY_BOND },
+ .cool = 60,
+ .beauty = 230,
+ .cute = 50,
+ .smart = 220,
+ .tough = 210,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+};