diff options
author | Slawter666 <38655737+Slawter666@users.noreply.github.com> | 2018-09-07 11:50:23 +0100 |
---|---|---|
committer | Slawter666 <38655737+Slawter666@users.noreply.github.com> | 2018-09-07 11:50:23 +0100 |
commit | 9dec2bdef891653d10060a45417609c4d31b14c7 (patch) | |
tree | f9080cfc922a15570aeeee98d1ff695596e55ccb /src | |
parent | bc42c5054c335f4de8a6b43135673ce931991c3e (diff) | |
parent | ef62393289b7a1d2e20fe195e24830d5c1f2f973 (diff) |
Merge branch 'master' of https://github.com/pret/pokeemerald into spritesheet
Diffstat (limited to 'src')
164 files changed, 115689 insertions, 4977 deletions
diff --git a/src/anim_mon_front_pics.c b/src/anim_mon_front_pics.c new file mode 100644 index 000000000..b30889a35 --- /dev/null +++ b/src/anim_mon_front_pics.c @@ -0,0 +1,424 @@ +#include "global.h" + +const u8 gMonFrontPic_CircledQuestionMark[] = INCBIN_U8("graphics/pokemon/anim_front_pics/circled_question_mark_front_pic.4bpp.lz"); + +const u8 gMonFrontPic_Bulbasaur[] = INCBIN_U8("graphics/pokemon/anim_front_pics/bulbasaur_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Ivysaur[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ivysaur_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Venusaur[] = INCBIN_U8("graphics/pokemon/anim_front_pics/venusaur_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Charmander[] = INCBIN_U8("graphics/pokemon/anim_front_pics/charmander_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Charmeleon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/charmeleon_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Charizard[] = INCBIN_U8("graphics/pokemon/anim_front_pics/charizard_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Squirtle[] = INCBIN_U8("graphics/pokemon/anim_front_pics/squirtle_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Wartortle[] = INCBIN_U8("graphics/pokemon/anim_front_pics/wartortle_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Blastoise[] = INCBIN_U8("graphics/pokemon/anim_front_pics/blastoise_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Caterpie[] = INCBIN_U8("graphics/pokemon/anim_front_pics/caterpie_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Metapod[] = INCBIN_U8("graphics/pokemon/anim_front_pics/metapod_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Butterfree[] = INCBIN_U8("graphics/pokemon/anim_front_pics/butterfree_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Weedle[] = INCBIN_U8("graphics/pokemon/anim_front_pics/weedle_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Kakuna[] = INCBIN_U8("graphics/pokemon/anim_front_pics/kakuna_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Beedrill[] = INCBIN_U8("graphics/pokemon/anim_front_pics/beedrill_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Pidgey[] = INCBIN_U8("graphics/pokemon/anim_front_pics/pidgey_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Pidgeotto[] = INCBIN_U8("graphics/pokemon/anim_front_pics/pidgeotto_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Pidgeot[] = INCBIN_U8("graphics/pokemon/anim_front_pics/pidgeot_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Rattata[] = INCBIN_U8("graphics/pokemon/anim_front_pics/rattata_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Raticate[] = INCBIN_U8("graphics/pokemon/anim_front_pics/raticate_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Spearow[] = INCBIN_U8("graphics/pokemon/anim_front_pics/spearow_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Fearow[] = INCBIN_U8("graphics/pokemon/anim_front_pics/fearow_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Ekans[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ekans_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Arbok[] = INCBIN_U8("graphics/pokemon/anim_front_pics/arbok_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Pikachu[] = INCBIN_U8("graphics/pokemon/anim_front_pics/pikachu_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Raichu[] = INCBIN_U8("graphics/pokemon/anim_front_pics/raichu_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Sandshrew[] = INCBIN_U8("graphics/pokemon/anim_front_pics/sandshrew_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Sandslash[] = INCBIN_U8("graphics/pokemon/anim_front_pics/sandslash_front_pic.4bpp.lz"); +const u8 gMonFrontPic_NidoranF[] = INCBIN_U8("graphics/pokemon/anim_front_pics/nidoran_f_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Nidorina[] = INCBIN_U8("graphics/pokemon/anim_front_pics/nidorina_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Nidoqueen[] = INCBIN_U8("graphics/pokemon/anim_front_pics/nidoqueen_front_pic.4bpp.lz"); +const u8 gMonFrontPic_NidoranM[] = INCBIN_U8("graphics/pokemon/anim_front_pics/nidoran_m_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Nidorino[] = INCBIN_U8("graphics/pokemon/anim_front_pics/nidorino_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Nidoking[] = INCBIN_U8("graphics/pokemon/anim_front_pics/nidoking_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Clefairy[] = INCBIN_U8("graphics/pokemon/anim_front_pics/clefairy_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Clefable[] = INCBIN_U8("graphics/pokemon/anim_front_pics/clefable_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Vulpix[] = INCBIN_U8("graphics/pokemon/anim_front_pics/vulpix_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Ninetales[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ninetales_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Jigglypuff[] = INCBIN_U8("graphics/pokemon/anim_front_pics/jigglypuff_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Wigglytuff[] = INCBIN_U8("graphics/pokemon/anim_front_pics/wigglytuff_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Zubat[] = INCBIN_U8("graphics/pokemon/anim_front_pics/zubat_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Golbat[] = INCBIN_U8("graphics/pokemon/anim_front_pics/golbat_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Oddish[] = INCBIN_U8("graphics/pokemon/anim_front_pics/oddish_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Gloom[] = INCBIN_U8("graphics/pokemon/anim_front_pics/gloom_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Vileplume[] = INCBIN_U8("graphics/pokemon/anim_front_pics/vileplume_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Paras[] = INCBIN_U8("graphics/pokemon/anim_front_pics/paras_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Parasect[] = INCBIN_U8("graphics/pokemon/anim_front_pics/parasect_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Venonat[] = INCBIN_U8("graphics/pokemon/anim_front_pics/venonat_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Venomoth[] = INCBIN_U8("graphics/pokemon/anim_front_pics/venomoth_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Diglett[] = INCBIN_U8("graphics/pokemon/anim_front_pics/diglett_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Dugtrio[] = INCBIN_U8("graphics/pokemon/anim_front_pics/dugtrio_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Meowth[] = INCBIN_U8("graphics/pokemon/anim_front_pics/meowth_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Persian[] = INCBIN_U8("graphics/pokemon/anim_front_pics/persian_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Psyduck[] = INCBIN_U8("graphics/pokemon/anim_front_pics/psyduck_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Golduck[] = INCBIN_U8("graphics/pokemon/anim_front_pics/golduck_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Mankey[] = INCBIN_U8("graphics/pokemon/anim_front_pics/mankey_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Primeape[] = INCBIN_U8("graphics/pokemon/anim_front_pics/primeape_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Growlithe[] = INCBIN_U8("graphics/pokemon/anim_front_pics/growlithe_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Arcanine[] = INCBIN_U8("graphics/pokemon/anim_front_pics/arcanine_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Poliwag[] = INCBIN_U8("graphics/pokemon/anim_front_pics/poliwag_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Poliwhirl[] = INCBIN_U8("graphics/pokemon/anim_front_pics/poliwhirl_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Poliwrath[] = INCBIN_U8("graphics/pokemon/anim_front_pics/poliwrath_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Abra[] = INCBIN_U8("graphics/pokemon/anim_front_pics/abra_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Kadabra[] = INCBIN_U8("graphics/pokemon/anim_front_pics/kadabra_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Alakazam[] = INCBIN_U8("graphics/pokemon/anim_front_pics/alakazam_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Machop[] = INCBIN_U8("graphics/pokemon/anim_front_pics/machop_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Machoke[] = INCBIN_U8("graphics/pokemon/anim_front_pics/machoke_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Machamp[] = INCBIN_U8("graphics/pokemon/anim_front_pics/machamp_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Bellsprout[] = INCBIN_U8("graphics/pokemon/anim_front_pics/bellsprout_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Weepinbell[] = INCBIN_U8("graphics/pokemon/anim_front_pics/weepinbell_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Victreebel[] = INCBIN_U8("graphics/pokemon/anim_front_pics/victreebel_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Tentacool[] = INCBIN_U8("graphics/pokemon/anim_front_pics/tentacool_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Tentacruel[] = INCBIN_U8("graphics/pokemon/anim_front_pics/tentacruel_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Geodude[] = INCBIN_U8("graphics/pokemon/anim_front_pics/geodude_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Graveler[] = INCBIN_U8("graphics/pokemon/anim_front_pics/graveler_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Golem[] = INCBIN_U8("graphics/pokemon/anim_front_pics/golem_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Ponyta[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ponyta_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Rapidash[] = INCBIN_U8("graphics/pokemon/anim_front_pics/rapidash_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Slowpoke[] = INCBIN_U8("graphics/pokemon/anim_front_pics/slowpoke_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Slowbro[] = INCBIN_U8("graphics/pokemon/anim_front_pics/slowbro_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Magnemite[] = INCBIN_U8("graphics/pokemon/anim_front_pics/magnemite_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Magneton[] = INCBIN_U8("graphics/pokemon/anim_front_pics/magneton_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Farfetchd[] = INCBIN_U8("graphics/pokemon/anim_front_pics/farfetch_d_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Doduo[] = INCBIN_U8("graphics/pokemon/anim_front_pics/doduo_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Dodrio[] = INCBIN_U8("graphics/pokemon/anim_front_pics/dodrio_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Seel[] = INCBIN_U8("graphics/pokemon/anim_front_pics/seel_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Dewgong[] = INCBIN_U8("graphics/pokemon/anim_front_pics/dewgong_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Grimer[] = INCBIN_U8("graphics/pokemon/anim_front_pics/grimer_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Muk[] = INCBIN_U8("graphics/pokemon/anim_front_pics/muk_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Shellder[] = INCBIN_U8("graphics/pokemon/anim_front_pics/shellder_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Cloyster[] = INCBIN_U8("graphics/pokemon/anim_front_pics/cloyster_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Gastly[] = INCBIN_U8("graphics/pokemon/anim_front_pics/gastly_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Haunter[] = INCBIN_U8("graphics/pokemon/anim_front_pics/haunter_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Gengar[] = INCBIN_U8("graphics/pokemon/anim_front_pics/gengar_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Onix[] = INCBIN_U8("graphics/pokemon/anim_front_pics/onix_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Drowzee[] = INCBIN_U8("graphics/pokemon/anim_front_pics/drowzee_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Hypno[] = INCBIN_U8("graphics/pokemon/anim_front_pics/hypno_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Krabby[] = INCBIN_U8("graphics/pokemon/anim_front_pics/krabby_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Kingler[] = INCBIN_U8("graphics/pokemon/anim_front_pics/kingler_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Voltorb[] = INCBIN_U8("graphics/pokemon/anim_front_pics/voltorb_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Electrode[] = INCBIN_U8("graphics/pokemon/anim_front_pics/electrode_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Exeggcute[] = INCBIN_U8("graphics/pokemon/anim_front_pics/exeggcute_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Exeggutor[] = INCBIN_U8("graphics/pokemon/anim_front_pics/exeggutor_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Cubone[] = INCBIN_U8("graphics/pokemon/anim_front_pics/cubone_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Marowak[] = INCBIN_U8("graphics/pokemon/anim_front_pics/marowak_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Hitmonlee[] = INCBIN_U8("graphics/pokemon/anim_front_pics/hitmonlee_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Hitmonchan[] = INCBIN_U8("graphics/pokemon/anim_front_pics/hitmonchan_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Lickitung[] = INCBIN_U8("graphics/pokemon/anim_front_pics/lickitung_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Koffing[] = INCBIN_U8("graphics/pokemon/anim_front_pics/koffing_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Weezing[] = INCBIN_U8("graphics/pokemon/anim_front_pics/weezing_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Rhyhorn[] = INCBIN_U8("graphics/pokemon/anim_front_pics/rhyhorn_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Rhydon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/rhydon_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Chansey[] = INCBIN_U8("graphics/pokemon/anim_front_pics/chansey_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Tangela[] = INCBIN_U8("graphics/pokemon/anim_front_pics/tangela_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Kangaskhan[] = INCBIN_U8("graphics/pokemon/anim_front_pics/kangaskhan_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Horsea[] = INCBIN_U8("graphics/pokemon/anim_front_pics/horsea_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Seadra[] = INCBIN_U8("graphics/pokemon/anim_front_pics/seadra_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Goldeen[] = INCBIN_U8("graphics/pokemon/anim_front_pics/goldeen_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Seaking[] = INCBIN_U8("graphics/pokemon/anim_front_pics/seaking_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Staryu[] = INCBIN_U8("graphics/pokemon/anim_front_pics/staryu_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Starmie[] = INCBIN_U8("graphics/pokemon/anim_front_pics/starmie_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Mrmime[] = INCBIN_U8("graphics/pokemon/anim_front_pics/mr_mime_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Scyther[] = INCBIN_U8("graphics/pokemon/anim_front_pics/scyther_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Jynx[] = INCBIN_U8("graphics/pokemon/anim_front_pics/jynx_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Electabuzz[] = INCBIN_U8("graphics/pokemon/anim_front_pics/electabuzz_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Magmar[] = INCBIN_U8("graphics/pokemon/anim_front_pics/magmar_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Pinsir[] = INCBIN_U8("graphics/pokemon/anim_front_pics/pinsir_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Tauros[] = INCBIN_U8("graphics/pokemon/anim_front_pics/tauros_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Magikarp[] = INCBIN_U8("graphics/pokemon/anim_front_pics/magikarp_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Gyarados[] = INCBIN_U8("graphics/pokemon/anim_front_pics/gyarados_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Lapras[] = INCBIN_U8("graphics/pokemon/anim_front_pics/lapras_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Ditto[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ditto_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Eevee[] = INCBIN_U8("graphics/pokemon/anim_front_pics/eevee_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Vaporeon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/vaporeon_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Jolteon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/jolteon_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Flareon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/flareon_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Porygon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/porygon_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Omanyte[] = INCBIN_U8("graphics/pokemon/anim_front_pics/omanyte_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Omastar[] = INCBIN_U8("graphics/pokemon/anim_front_pics/omastar_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Kabuto[] = INCBIN_U8("graphics/pokemon/anim_front_pics/kabuto_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Kabutops[] = INCBIN_U8("graphics/pokemon/anim_front_pics/kabutops_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Aerodactyl[] = INCBIN_U8("graphics/pokemon/anim_front_pics/aerodactyl_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Snorlax[] = INCBIN_U8("graphics/pokemon/anim_front_pics/snorlax_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Articuno[] = INCBIN_U8("graphics/pokemon/anim_front_pics/articuno_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Zapdos[] = INCBIN_U8("graphics/pokemon/anim_front_pics/zapdos_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Moltres[] = INCBIN_U8("graphics/pokemon/anim_front_pics/moltres_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Dratini[] = INCBIN_U8("graphics/pokemon/anim_front_pics/dratini_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Dragonair[] = INCBIN_U8("graphics/pokemon/anim_front_pics/dragonair_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Dragonite[] = INCBIN_U8("graphics/pokemon/anim_front_pics/dragonite_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Mewtwo[] = INCBIN_U8("graphics/pokemon/anim_front_pics/mewtwo_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Mew[] = INCBIN_U8("graphics/pokemon/anim_front_pics/mew_front_pic.4bpp.lz"); + +const u8 gMonFrontPic_Chikorita[] = INCBIN_U8("graphics/pokemon/anim_front_pics/chikorita_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Bayleef[] = INCBIN_U8("graphics/pokemon/anim_front_pics/bayleef_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Meganium[] = INCBIN_U8("graphics/pokemon/anim_front_pics/meganium_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Cyndaquil[] = INCBIN_U8("graphics/pokemon/anim_front_pics/cyndaquil_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Quilava[] = INCBIN_U8("graphics/pokemon/anim_front_pics/quilava_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Typhlosion[] = INCBIN_U8("graphics/pokemon/anim_front_pics/typhlosion_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Totodile[] = INCBIN_U8("graphics/pokemon/anim_front_pics/totodile_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Croconaw[] = INCBIN_U8("graphics/pokemon/anim_front_pics/croconaw_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Feraligatr[] = INCBIN_U8("graphics/pokemon/anim_front_pics/feraligatr_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Sentret[] = INCBIN_U8("graphics/pokemon/anim_front_pics/sentret_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Furret[] = INCBIN_U8("graphics/pokemon/anim_front_pics/furret_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Hoothoot[] = INCBIN_U8("graphics/pokemon/anim_front_pics/hoothoot_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Noctowl[] = INCBIN_U8("graphics/pokemon/anim_front_pics/noctowl_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Ledyba[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ledyba_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Ledian[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ledian_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Spinarak[] = INCBIN_U8("graphics/pokemon/anim_front_pics/spinarak_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Ariados[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ariados_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Crobat[] = INCBIN_U8("graphics/pokemon/anim_front_pics/crobat_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Chinchou[] = INCBIN_U8("graphics/pokemon/anim_front_pics/chinchou_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Lanturn[] = INCBIN_U8("graphics/pokemon/anim_front_pics/lanturn_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Pichu[] = INCBIN_U8("graphics/pokemon/anim_front_pics/pichu_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Cleffa[] = INCBIN_U8("graphics/pokemon/anim_front_pics/cleffa_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Igglybuff[] = INCBIN_U8("graphics/pokemon/anim_front_pics/igglybuff_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Togepi[] = INCBIN_U8("graphics/pokemon/anim_front_pics/togepi_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Togetic[] = INCBIN_U8("graphics/pokemon/anim_front_pics/togetic_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Natu[] = INCBIN_U8("graphics/pokemon/anim_front_pics/natu_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Xatu[] = INCBIN_U8("graphics/pokemon/anim_front_pics/xatu_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Mareep[] = INCBIN_U8("graphics/pokemon/anim_front_pics/mareep_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Flaaffy[] = INCBIN_U8("graphics/pokemon/anim_front_pics/flaaffy_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Ampharos[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ampharos_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Bellossom[] = INCBIN_U8("graphics/pokemon/anim_front_pics/bellossom_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Marill[] = INCBIN_U8("graphics/pokemon/anim_front_pics/marill_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Azumarill[] = INCBIN_U8("graphics/pokemon/anim_front_pics/azumarill_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Sudowoodo[] = INCBIN_U8("graphics/pokemon/anim_front_pics/sudowoodo_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Politoed[] = INCBIN_U8("graphics/pokemon/anim_front_pics/politoed_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Hoppip[] = INCBIN_U8("graphics/pokemon/anim_front_pics/hoppip_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Skiploom[] = INCBIN_U8("graphics/pokemon/anim_front_pics/skiploom_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Jumpluff[] = INCBIN_U8("graphics/pokemon/anim_front_pics/jumpluff_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Aipom[] = INCBIN_U8("graphics/pokemon/anim_front_pics/aipom_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Sunkern[] = INCBIN_U8("graphics/pokemon/anim_front_pics/sunkern_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Sunflora[] = INCBIN_U8("graphics/pokemon/anim_front_pics/sunflora_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Yanma[] = INCBIN_U8("graphics/pokemon/anim_front_pics/yanma_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Wooper[] = INCBIN_U8("graphics/pokemon/anim_front_pics/wooper_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Quagsire[] = INCBIN_U8("graphics/pokemon/anim_front_pics/quagsire_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Espeon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/espeon_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Umbreon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/umbreon_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Murkrow[] = INCBIN_U8("graphics/pokemon/anim_front_pics/murkrow_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Slowking[] = INCBIN_U8("graphics/pokemon/anim_front_pics/slowking_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Misdreavus[] = INCBIN_U8("graphics/pokemon/anim_front_pics/misdreavus_front_pic.4bpp.lz"); +const u8 gMonFrontPic_UnownA[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_a_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Wobbuffet[] = INCBIN_U8("graphics/pokemon/anim_front_pics/wobbuffet_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Girafarig[] = INCBIN_U8("graphics/pokemon/anim_front_pics/girafarig_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Pineco[] = INCBIN_U8("graphics/pokemon/anim_front_pics/pineco_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Forretress[] = INCBIN_U8("graphics/pokemon/anim_front_pics/forretress_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Dunsparce[] = INCBIN_U8("graphics/pokemon/anim_front_pics/dunsparce_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Gligar[] = INCBIN_U8("graphics/pokemon/anim_front_pics/gligar_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Steelix[] = INCBIN_U8("graphics/pokemon/anim_front_pics/steelix_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Snubbull[] = INCBIN_U8("graphics/pokemon/anim_front_pics/snubbull_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Granbull[] = INCBIN_U8("graphics/pokemon/anim_front_pics/granbull_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Qwilfish[] = INCBIN_U8("graphics/pokemon/anim_front_pics/qwilfish_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Scizor[] = INCBIN_U8("graphics/pokemon/anim_front_pics/scizor_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Shuckle[] = INCBIN_U8("graphics/pokemon/anim_front_pics/shuckle_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Heracross[] = INCBIN_U8("graphics/pokemon/anim_front_pics/heracross_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Sneasel[] = INCBIN_U8("graphics/pokemon/anim_front_pics/sneasel_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Teddiursa[] = INCBIN_U8("graphics/pokemon/anim_front_pics/teddiursa_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Ursaring[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ursaring_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Slugma[] = INCBIN_U8("graphics/pokemon/anim_front_pics/slugma_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Magcargo[] = INCBIN_U8("graphics/pokemon/anim_front_pics/magcargo_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Swinub[] = INCBIN_U8("graphics/pokemon/anim_front_pics/swinub_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Piloswine[] = INCBIN_U8("graphics/pokemon/anim_front_pics/piloswine_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Corsola[] = INCBIN_U8("graphics/pokemon/anim_front_pics/corsola_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Remoraid[] = INCBIN_U8("graphics/pokemon/anim_front_pics/remoraid_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Octillery[] = INCBIN_U8("graphics/pokemon/anim_front_pics/octillery_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Delibird[] = INCBIN_U8("graphics/pokemon/anim_front_pics/delibird_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Mantine[] = INCBIN_U8("graphics/pokemon/anim_front_pics/mantine_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Skarmory[] = INCBIN_U8("graphics/pokemon/anim_front_pics/skarmory_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Houndour[] = INCBIN_U8("graphics/pokemon/anim_front_pics/houndour_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Houndoom[] = INCBIN_U8("graphics/pokemon/anim_front_pics/houndoom_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Kingdra[] = INCBIN_U8("graphics/pokemon/anim_front_pics/kingdra_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Phanpy[] = INCBIN_U8("graphics/pokemon/anim_front_pics/phanpy_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Donphan[] = INCBIN_U8("graphics/pokemon/anim_front_pics/donphan_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Porygon2[] = INCBIN_U8("graphics/pokemon/anim_front_pics/porygon2_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Stantler[] = INCBIN_U8("graphics/pokemon/anim_front_pics/stantler_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Smeargle[] = INCBIN_U8("graphics/pokemon/anim_front_pics/smeargle_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Tyrogue[] = INCBIN_U8("graphics/pokemon/anim_front_pics/tyrogue_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Hitmontop[] = INCBIN_U8("graphics/pokemon/anim_front_pics/hitmontop_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Smoochum[] = INCBIN_U8("graphics/pokemon/anim_front_pics/smoochum_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Elekid[] = INCBIN_U8("graphics/pokemon/anim_front_pics/elekid_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Magby[] = INCBIN_U8("graphics/pokemon/anim_front_pics/magby_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Miltank[] = INCBIN_U8("graphics/pokemon/anim_front_pics/miltank_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Blissey[] = INCBIN_U8("graphics/pokemon/anim_front_pics/blissey_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Raikou[] = INCBIN_U8("graphics/pokemon/anim_front_pics/raikou_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Entei[] = INCBIN_U8("graphics/pokemon/anim_front_pics/entei_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Suicune[] = INCBIN_U8("graphics/pokemon/anim_front_pics/suicune_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Larvitar[] = INCBIN_U8("graphics/pokemon/anim_front_pics/larvitar_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Pupitar[] = INCBIN_U8("graphics/pokemon/anim_front_pics/pupitar_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Tyranitar[] = INCBIN_U8("graphics/pokemon/anim_front_pics/tyranitar_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Lugia[] = INCBIN_U8("graphics/pokemon/anim_front_pics/lugia_front_pic.4bpp.lz"); +const u8 gMonFrontPic_HoOh[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ho_oh_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Celebi[] = INCBIN_U8("graphics/pokemon/anim_front_pics/celebi_front_pic.4bpp.lz"); + +const u8 gMonFrontPic_DoubleQuestionMark[] = INCBIN_U8("graphics/pokemon/anim_front_pics/double_question_mark_front_pic.4bpp.lz"); + +const u8 gMonFrontPic_Treecko[] = INCBIN_U8("graphics/pokemon/anim_front_pics/treecko_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Grovyle[] = INCBIN_U8("graphics/pokemon/anim_front_pics/grovyle_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Sceptile[] = INCBIN_U8("graphics/pokemon/anim_front_pics/sceptile_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Torchic[] = INCBIN_U8("graphics/pokemon/anim_front_pics/torchic_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Combusken[] = INCBIN_U8("graphics/pokemon/anim_front_pics/combusken_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Blaziken[] = INCBIN_U8("graphics/pokemon/anim_front_pics/blaziken_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Mudkip[] = INCBIN_U8("graphics/pokemon/anim_front_pics/mudkip_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Marshtomp[] = INCBIN_U8("graphics/pokemon/anim_front_pics/marshtomp_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Swampert[] = INCBIN_U8("graphics/pokemon/anim_front_pics/swampert_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Poochyena[] = INCBIN_U8("graphics/pokemon/anim_front_pics/poochyena_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Mightyena[] = INCBIN_U8("graphics/pokemon/anim_front_pics/mightyena_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Zigzagoon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/zigzagoon_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Linoone[] = INCBIN_U8("graphics/pokemon/anim_front_pics/linoone_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Wurmple[] = INCBIN_U8("graphics/pokemon/anim_front_pics/wurmple_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Silcoon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/silcoon_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Beautifly[] = INCBIN_U8("graphics/pokemon/anim_front_pics/beautifly_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Cascoon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/cascoon_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Dustox[] = INCBIN_U8("graphics/pokemon/anim_front_pics/dustox_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Lotad[] = INCBIN_U8("graphics/pokemon/anim_front_pics/lotad_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Lombre[] = INCBIN_U8("graphics/pokemon/anim_front_pics/lombre_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Ludicolo[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ludicolo_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Seedot[] = INCBIN_U8("graphics/pokemon/anim_front_pics/seedot_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Nuzleaf[] = INCBIN_U8("graphics/pokemon/anim_front_pics/nuzleaf_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Shiftry[] = INCBIN_U8("graphics/pokemon/anim_front_pics/shiftry_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Nincada[] = INCBIN_U8("graphics/pokemon/anim_front_pics/nincada_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Ninjask[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ninjask_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Shedinja[] = INCBIN_U8("graphics/pokemon/anim_front_pics/shedinja_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Taillow[] = INCBIN_U8("graphics/pokemon/anim_front_pics/taillow_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Swellow[] = INCBIN_U8("graphics/pokemon/anim_front_pics/swellow_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Shroomish[] = INCBIN_U8("graphics/pokemon/anim_front_pics/shroomish_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Breloom[] = INCBIN_U8("graphics/pokemon/anim_front_pics/breloom_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Spinda[] = INCBIN_U8("graphics/pokemon/anim_front_pics/spinda_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Wingull[] = INCBIN_U8("graphics/pokemon/anim_front_pics/wingull_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Pelipper[] = INCBIN_U8("graphics/pokemon/anim_front_pics/pelipper_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Surskit[] = INCBIN_U8("graphics/pokemon/anim_front_pics/surskit_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Masquerain[] = INCBIN_U8("graphics/pokemon/anim_front_pics/masquerain_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Wailmer[] = INCBIN_U8("graphics/pokemon/anim_front_pics/wailmer_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Wailord[] = INCBIN_U8("graphics/pokemon/anim_front_pics/wailord_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Skitty[] = INCBIN_U8("graphics/pokemon/anim_front_pics/skitty_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Delcatty[] = INCBIN_U8("graphics/pokemon/anim_front_pics/delcatty_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Kecleon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/kecleon_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Baltoy[] = INCBIN_U8("graphics/pokemon/anim_front_pics/baltoy_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Claydol[] = INCBIN_U8("graphics/pokemon/anim_front_pics/claydol_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Nosepass[] = INCBIN_U8("graphics/pokemon/anim_front_pics/nosepass_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Torkoal[] = INCBIN_U8("graphics/pokemon/anim_front_pics/torkoal_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Sableye[] = INCBIN_U8("graphics/pokemon/anim_front_pics/sableye_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Barboach[] = INCBIN_U8("graphics/pokemon/anim_front_pics/barboach_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Whiscash[] = INCBIN_U8("graphics/pokemon/anim_front_pics/whiscash_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Luvdisc[] = INCBIN_U8("graphics/pokemon/anim_front_pics/luvdisc_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Corphish[] = INCBIN_U8("graphics/pokemon/anim_front_pics/corphish_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Crawdaunt[] = INCBIN_U8("graphics/pokemon/anim_front_pics/crawdaunt_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Feebas[] = INCBIN_U8("graphics/pokemon/anim_front_pics/feebas_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Milotic[] = INCBIN_U8("graphics/pokemon/anim_front_pics/milotic_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Carvanha[] = INCBIN_U8("graphics/pokemon/anim_front_pics/carvanha_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Sharpedo[] = INCBIN_U8("graphics/pokemon/anim_front_pics/sharpedo_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Trapinch[] = INCBIN_U8("graphics/pokemon/anim_front_pics/trapinch_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Vibrava[] = INCBIN_U8("graphics/pokemon/anim_front_pics/vibrava_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Flygon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/flygon_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Makuhita[] = INCBIN_U8("graphics/pokemon/anim_front_pics/makuhita_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Hariyama[] = INCBIN_U8("graphics/pokemon/anim_front_pics/hariyama_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Electrike[] = INCBIN_U8("graphics/pokemon/anim_front_pics/electrike_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Manectric[] = INCBIN_U8("graphics/pokemon/anim_front_pics/manectric_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Numel[] = INCBIN_U8("graphics/pokemon/anim_front_pics/numel_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Camerupt[] = INCBIN_U8("graphics/pokemon/anim_front_pics/camerupt_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Spheal[] = INCBIN_U8("graphics/pokemon/anim_front_pics/spheal_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Sealeo[] = INCBIN_U8("graphics/pokemon/anim_front_pics/sealeo_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Walrein[] = INCBIN_U8("graphics/pokemon/anim_front_pics/walrein_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Cacnea[] = INCBIN_U8("graphics/pokemon/anim_front_pics/cacnea_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Cacturne[] = INCBIN_U8("graphics/pokemon/anim_front_pics/cacturne_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Snorunt[] = INCBIN_U8("graphics/pokemon/anim_front_pics/snorunt_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Glalie[] = INCBIN_U8("graphics/pokemon/anim_front_pics/glalie_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Lunatone[] = INCBIN_U8("graphics/pokemon/anim_front_pics/lunatone_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Solrock[] = INCBIN_U8("graphics/pokemon/anim_front_pics/solrock_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Azurill[] = INCBIN_U8("graphics/pokemon/anim_front_pics/azurill_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Spoink[] = INCBIN_U8("graphics/pokemon/anim_front_pics/spoink_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Grumpig[] = INCBIN_U8("graphics/pokemon/anim_front_pics/grumpig_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Plusle[] = INCBIN_U8("graphics/pokemon/anim_front_pics/plusle_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Minun[] = INCBIN_U8("graphics/pokemon/anim_front_pics/minun_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Mawile[] = INCBIN_U8("graphics/pokemon/anim_front_pics/mawile_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Meditite[] = INCBIN_U8("graphics/pokemon/anim_front_pics/meditite_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Medicham[] = INCBIN_U8("graphics/pokemon/anim_front_pics/medicham_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Swablu[] = INCBIN_U8("graphics/pokemon/anim_front_pics/swablu_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Altaria[] = INCBIN_U8("graphics/pokemon/anim_front_pics/altaria_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Wynaut[] = INCBIN_U8("graphics/pokemon/anim_front_pics/wynaut_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Duskull[] = INCBIN_U8("graphics/pokemon/anim_front_pics/duskull_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Dusclops[] = INCBIN_U8("graphics/pokemon/anim_front_pics/dusclops_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Roselia[] = INCBIN_U8("graphics/pokemon/anim_front_pics/roselia_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Slakoth[] = INCBIN_U8("graphics/pokemon/anim_front_pics/slakoth_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Vigoroth[] = INCBIN_U8("graphics/pokemon/anim_front_pics/vigoroth_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Slaking[] = INCBIN_U8("graphics/pokemon/anim_front_pics/slaking_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Gulpin[] = INCBIN_U8("graphics/pokemon/anim_front_pics/gulpin_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Swalot[] = INCBIN_U8("graphics/pokemon/anim_front_pics/swalot_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Tropius[] = INCBIN_U8("graphics/pokemon/anim_front_pics/tropius_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Whismur[] = INCBIN_U8("graphics/pokemon/anim_front_pics/whismur_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Loudred[] = INCBIN_U8("graphics/pokemon/anim_front_pics/loudred_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Exploud[] = INCBIN_U8("graphics/pokemon/anim_front_pics/exploud_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Clamperl[] = INCBIN_U8("graphics/pokemon/anim_front_pics/clamperl_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Huntail[] = INCBIN_U8("graphics/pokemon/anim_front_pics/huntail_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Gorebyss[] = INCBIN_U8("graphics/pokemon/anim_front_pics/gorebyss_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Absol[] = INCBIN_U8("graphics/pokemon/anim_front_pics/absol_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Shuppet[] = INCBIN_U8("graphics/pokemon/anim_front_pics/shuppet_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Banette[] = INCBIN_U8("graphics/pokemon/anim_front_pics/banette_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Seviper[] = INCBIN_U8("graphics/pokemon/anim_front_pics/seviper_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Zangoose[] = INCBIN_U8("graphics/pokemon/anim_front_pics/zangoose_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Relicanth[] = INCBIN_U8("graphics/pokemon/anim_front_pics/relicanth_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Aron[] = INCBIN_U8("graphics/pokemon/anim_front_pics/aron_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Lairon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/lairon_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Aggron[] = INCBIN_U8("graphics/pokemon/anim_front_pics/aggron_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Castform[] = INCBIN_U8("graphics/pokemon/anim_front_pics/castform_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Volbeat[] = INCBIN_U8("graphics/pokemon/anim_front_pics/volbeat_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Illumise[] = INCBIN_U8("graphics/pokemon/anim_front_pics/illumise_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Lileep[] = INCBIN_U8("graphics/pokemon/anim_front_pics/lileep_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Cradily[] = INCBIN_U8("graphics/pokemon/anim_front_pics/cradily_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Anorith[] = INCBIN_U8("graphics/pokemon/anim_front_pics/anorith_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Armaldo[] = INCBIN_U8("graphics/pokemon/anim_front_pics/armaldo_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Ralts[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ralts_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Kirlia[] = INCBIN_U8("graphics/pokemon/anim_front_pics/kirlia_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Gardevoir[] = INCBIN_U8("graphics/pokemon/anim_front_pics/gardevoir_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Bagon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/bagon_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Shelgon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/shelgon_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Salamence[] = INCBIN_U8("graphics/pokemon/anim_front_pics/salamence_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Beldum[] = INCBIN_U8("graphics/pokemon/anim_front_pics/beldum_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Metang[] = INCBIN_U8("graphics/pokemon/anim_front_pics/metang_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Metagross[] = INCBIN_U8("graphics/pokemon/anim_front_pics/metagross_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Regirock[] = INCBIN_U8("graphics/pokemon/anim_front_pics/regirock_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Regice[] = INCBIN_U8("graphics/pokemon/anim_front_pics/regice_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Registeel[] = INCBIN_U8("graphics/pokemon/anim_front_pics/registeel_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Kyogre[] = INCBIN_U8("graphics/pokemon/anim_front_pics/kyogre_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Groudon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/groudon_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Rayquaza[] = INCBIN_U8("graphics/pokemon/anim_front_pics/rayquaza_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Latias[] = INCBIN_U8("graphics/pokemon/anim_front_pics/latias_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Latios[] = INCBIN_U8("graphics/pokemon/anim_front_pics/latios_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Jirachi[] = INCBIN_U8("graphics/pokemon/anim_front_pics/jirachi_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Deoxys[] = INCBIN_U8("graphics/pokemon/anim_front_pics/deoxys_front_pic.4bpp.lz"); +const u8 gMonFrontPic_Chimecho[] = INCBIN_U8("graphics/pokemon/anim_front_pics/chimecho_front_pic.4bpp.lz"); + +const u8 gMonFrontPic_Egg[] = INCBIN_U8("graphics/pokemon/anim_front_pics/egg_front_pic.4bpp.lz"); + +const u8 gMonFrontPic_UnownB[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_b_front_pic.4bpp.lz"); +const u8 gMonFrontPic_UnownC[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_c_front_pic.4bpp.lz"); +const u8 gMonFrontPic_UnownD[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_d_front_pic.4bpp.lz"); +const u8 gMonFrontPic_UnownE[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_e_front_pic.4bpp.lz"); +const u8 gMonFrontPic_UnownF[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_f_front_pic.4bpp.lz"); +const u8 gMonFrontPic_UnownG[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_g_front_pic.4bpp.lz"); +const u8 gMonFrontPic_UnownH[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_h_front_pic.4bpp.lz"); +const u8 gMonFrontPic_UnownI[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_i_front_pic.4bpp.lz"); +const u8 gMonFrontPic_UnownJ[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_j_front_pic.4bpp.lz"); +const u8 gMonFrontPic_UnownK[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_k_front_pic.4bpp.lz"); +const u8 gMonFrontPic_UnownL[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_l_front_pic.4bpp.lz"); +const u8 gMonFrontPic_UnownM[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_m_front_pic.4bpp.lz"); +const u8 gMonFrontPic_UnownN[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_n_front_pic.4bpp.lz"); +const u8 gMonFrontPic_UnownO[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_o_front_pic.4bpp.lz"); +const u8 gMonFrontPic_UnownP[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_p_front_pic.4bpp.lz"); +const u8 gMonFrontPic_UnownQ[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_q_front_pic.4bpp.lz"); +const u8 gMonFrontPic_UnownR[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_r_front_pic.4bpp.lz"); +const u8 gMonFrontPic_UnownS[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_s_front_pic.4bpp.lz"); +const u8 gMonFrontPic_UnownT[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_t_front_pic.4bpp.lz"); +const u8 gMonFrontPic_UnownU[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_u_front_pic.4bpp.lz"); +const u8 gMonFrontPic_UnownV[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_v_front_pic.4bpp.lz"); +const u8 gMonFrontPic_UnownW[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_w_front_pic.4bpp.lz"); +const u8 gMonFrontPic_UnownX[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_x_front_pic.4bpp.lz"); +const u8 gMonFrontPic_UnownY[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_y_front_pic.4bpp.lz"); +const u8 gMonFrontPic_UnownZ[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_z_front_pic.4bpp.lz"); +const u8 gMonFrontPic_UnownExclamationMark[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_exclamation_mark_front_pic.4bpp.lz"); +const u8 gMonFrontPic_UnownQuestionMark[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_question_mark_front_pic.4bpp.lz"); diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 1eaa9da18..6148587f8 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -1606,22 +1606,22 @@ static void OpponentHandleChoosePokemon(void) { s32 chosenMonId; - if (*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) == 6) + if (*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) == PARTY_SIZE) { chosenMonId = GetMostSuitableMonToSwitchInto(); - if (chosenMonId == 6) + if (chosenMonId == PARTY_SIZE) { - s32 bank1, bank2, firstId, lastId; + s32 battler1, battler2, firstId, lastId; if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) { - bank2 = bank1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + battler2 = battler1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); } else { - bank1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); - bank2 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); + battler1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + battler2 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); } if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000)) @@ -1639,8 +1639,8 @@ static void OpponentHandleChoosePokemon(void) for (chosenMonId = firstId; chosenMonId < lastId; chosenMonId++) { if (GetMonData(&gEnemyParty[chosenMonId], MON_DATA_HP) != 0 - && chosenMonId != gBattlerPartyIndexes[bank1] - && chosenMonId != gBattlerPartyIndexes[bank2]) + && chosenMonId != gBattlerPartyIndexes[battler1] + && chosenMonId != gBattlerPartyIndexes[battler2]) { break; } @@ -1650,7 +1650,7 @@ static void OpponentHandleChoosePokemon(void) else { chosenMonId = *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler); - *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = 6; + *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE; } diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 6ab19e368..7f038a0c3 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -28,19 +28,18 @@ #include "pokeball.h" #include "data2.h" #include "battle_setup.h" -#include "item_use.h" +#include "item_menu.h" #include "recorded_battle.h" #include "party_menu.h" +#include "battle_dome.h" extern u8 gUnknown_0203CEE8; extern u8 gUnknown_0203CEE9; extern u8 gUnknown_0203CF00[]; extern u16 gBattle_BG0_X; extern u16 gBattle_BG0_Y; -extern s32 gUnknown_0203CD70; extern struct UnusedControllerStruct gUnknown_02022D0C; extern struct MusicPlayerInfo gMPlayInfo_BGM; -extern struct SpriteTemplate gMultiuseSpriteTemplate; extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[]; @@ -52,7 +51,6 @@ extern void sub_81851A8(u8 *); // this file's functions static void PlayerHandleGetMonData(void); -void PlayerHandleGetRawMonData(void); static void PlayerHandleSetMonData(void); static void PlayerHandleSetRawMonData(void); static void PlayerHandleLoadMonSprite(void); diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c index bc97c01f9..aab804b41 100644 --- a/src/battle_controller_safari.c +++ b/src/battle_controller_safari.c @@ -21,7 +21,7 @@ #include "pokeball.h" #include "data2.h" #include "pokeblock.h" -#include "item_use.h" +#include "item_menu.h" extern u16 gBattle_BG0_X; extern u16 gBattle_BG0_Y; diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c index 960181fbc..4faf78681 100644 --- a/src/battle_controller_wally.c +++ b/src/battle_controller_wally.c @@ -29,7 +29,7 @@ #include "data2.h" #include "party_menu.h" #include "battle_setup.h" -#include "item_use.h" +#include "item_menu.h" extern u16 gBattle_BG0_X; extern u16 gBattle_BG0_Y; diff --git a/src/battle_data.c b/src/battle_data.c index f3719ac2d..7f86385aa 100644 --- a/src/battle_data.c +++ b/src/battle_data.c @@ -5,6 +5,7 @@ #include "constants/moves.h" #include "constants/species.h" #include "constants/trainers.h" +#include "constants/battle_ai.h" #include "data/trainer_parties.h" #include "data/text/trainer_class_names.h" diff --git a/src/battle_dome.c b/src/battle_dome.c new file mode 100644 index 000000000..ff284b564 --- /dev/null +++ b/src/battle_dome.c @@ -0,0 +1,6481 @@ +#include "global.h" +#include "battle_dome.h" +#include "battle.h" +#include "battle_setup.h" +#include "battle_tower.h" +#include "battle_message.h" +#include "event_data.h" +#include "overworld.h" +#include "util.h" +#include "malloc.h" +#include "string_util.h" +#include "random.h" +#include "task.h" +#include "main.h" +#include "gpu_regs.h" +#include "text.h" +#include "bg.h" +#include "window.h" +#include "palette.h" +#include "decompress.h" +#include "menu.h" +#include "sound.h" +#include "pokemon_icon.h" +#include "data2.h" +#include "international_string_util.h" +#include "trainer_pokemon_sprites.h" +#include "scanline_effect.h" +#include "constants/species.h" +#include "constants/moves.h" +#include "constants/trainers.h" +#include "constants/abilities.h" +#include "constants/songs.h" +#include "constants/battle_frontier.h" +#include "constants/rgb.h" + +#define DOME_ROUND1 0 +#define DOME_ROUND2 1 +#define DOME_QUARTERFINAL 1 // Different name for the same round. +#define DOME_SEMIFINAL 2 +#define DOME_FINAL 3 +#define DOME_ROUNDS_COUNT 4 + +struct BattleDomeStruct +{ + u8 arr[DOME_TOURNAMENT_TRAINERS_COUNT]; + u8 unk_10; + u8 unk_11[3]; +}; + +struct UnkStruct_860DD10 +{ + u8 x; + u8 y; + u16 src; +}; + +extern void sub_81B8558(void); +extern u32 sub_81A39C4(void); +extern u16 sub_8162548(u8, u8); +extern u16 RandomizeFacilityTrainerMonId(u16); +extern u8 GetFacilityEnemyMonLevel(void); +extern u16 sub_81A5060(u8 monId, u8 moveSlotId); +extern u8 sub_81A50F0(u8, u8); +extern u8 sub_81A50B0(u8); +extern void sub_8162614(u16, u8); +extern void sub_81A4C30(void); +extern bool8 sub_81A3610(void); +extern u16 sub_81A4FF0(u8); +extern u8 GetFrontierTrainerFrontSpriteId(u16); +extern u8 GetFrontierOpponentClass(u16); +extern void sub_80F94E8(void); + +extern u8 gUnknown_0203CEF8[]; +extern u16 gBattle_BG0_X; +extern u16 gBattle_BG0_Y; +extern u16 gBattle_BG1_X; +extern u16 gBattle_BG1_Y; +extern u16 gBattle_BG2_X; +extern u16 gBattle_BG2_Y; +extern u16 gBattle_BG3_X; +extern u16 gBattle_BG3_Y; + +extern const u16 gBattleFrontierHeldItems[]; +extern const struct FacilityMon gBattleFrontierMons[]; +extern const struct BattleFrontierTrainer gBattleFrontierTrainers[]; +extern const struct SpriteTemplate gUnknown_0860CFA8; + +// gfx +extern const u8 gUnknown_08D83D50[]; +extern const u8 gUnknown_08D84970[]; +extern const u8 gUnknown_08D84F00[]; +extern const u8 gUnknown_08D85444[]; +extern const u8 gUnknown_08D85358[]; +extern const u8 gUnknown_08D85600[]; +extern const u8 gUnknown_08D854C8[]; +extern const u8 gUnknown_08D82F10[]; +extern const u8 gUnknown_08D834FC[]; +extern const u8 gUnknown_08D83B2C[]; +extern const u8 gUnknown_08D83C3C[]; +extern const u8 gUnknown_08D83900[]; +extern const u8 gBattleFrontierGfx_DomeOptions[]; + +// text +extern const u8 gTrainerClassNames[][0xD]; + +extern const u8 gBattleDomeOpponentPotential1[]; +extern const u8 gBattleDomeOpponentPotential2[]; +extern const u8 gBattleDomeOpponentPotential3[]; +extern const u8 gBattleDomeOpponentPotential4[]; +extern const u8 gBattleDomeOpponentPotential5[]; +extern const u8 gBattleDomeOpponentPotential6[]; +extern const u8 gBattleDomeOpponentPotential7[]; +extern const u8 gBattleDomeOpponentPotential8[]; +extern const u8 gBattleDomeOpponentPotential9[]; +extern const u8 gBattleDomeOpponentPotential10[]; +extern const u8 gBattleDomeOpponentPotential11[]; +extern const u8 gBattleDomeOpponentPotential12[]; +extern const u8 gBattleDomeOpponentPotential13[]; +extern const u8 gBattleDomeOpponentPotential14[]; +extern const u8 gBattleDomeOpponentPotential15[]; +extern const u8 gBattleDomeOpponentPotential16[]; +extern const u8 gBattleDomeOpponentPotential17[]; +extern const u8 gBattleDomeOpponentStyle1[]; +extern const u8 gBattleDomeOpponentStyle2[]; +extern const u8 gBattleDomeOpponentStyle3[]; +extern const u8 gBattleDomeOpponentStyle4[]; +extern const u8 gBattleDomeOpponentStyle5[]; +extern const u8 gBattleDomeOpponentStyle6[]; +extern const u8 gBattleDomeOpponentStyle7[]; +extern const u8 gBattleDomeOpponentStyle8[]; +extern const u8 gBattleDomeOpponentStyle9[]; +extern const u8 gBattleDomeOpponentStyle10[]; +extern const u8 gBattleDomeOpponentStyle11[]; +extern const u8 gBattleDomeOpponentStyle12[]; +extern const u8 gBattleDomeOpponentStyle13[]; +extern const u8 gBattleDomeOpponentStyle14[]; +extern const u8 gBattleDomeOpponentStyle15[]; +extern const u8 gBattleDomeOpponentStyle16[]; +extern const u8 gBattleDomeOpponentStyle17[]; +extern const u8 gBattleDomeOpponentStyle18[]; +extern const u8 gBattleDomeOpponentStyle19[]; +extern const u8 gBattleDomeOpponentStyle20[]; +extern const u8 gBattleDomeOpponentStyle21[]; +extern const u8 gBattleDomeOpponentStyle22[]; +extern const u8 gBattleDomeOpponentStyle23[]; +extern const u8 gBattleDomeOpponentStyle24[]; +extern const u8 gBattleDomeOpponentStyle25[]; +extern const u8 gBattleDomeOpponentStyle26[]; +extern const u8 gBattleDomeOpponentStyle27[]; +extern const u8 gBattleDomeOpponentStyle28[]; +extern const u8 gBattleDomeOpponentStyleUnused1[]; +extern const u8 gBattleDomeOpponentStyleUnused2[]; +extern const u8 gBattleDomeOpponentStyleUnused3[]; +extern const u8 gBattleDomeOpponentStyleUnused4[]; +extern const u8 gBattleDomeOpponentStats1[]; +extern const u8 gBattleDomeOpponentStats2[]; +extern const u8 gBattleDomeOpponentStats3[]; +extern const u8 gBattleDomeOpponentStats4[]; +extern const u8 gBattleDomeOpponentStats5[]; +extern const u8 gBattleDomeOpponentStats6[]; +extern const u8 gBattleDomeOpponentStats7[]; +extern const u8 gBattleDomeOpponentStats8[]; +extern const u8 gBattleDomeOpponentStats9[]; +extern const u8 gBattleDomeOpponentStats10[]; +extern const u8 gBattleDomeOpponentStats11[]; +extern const u8 gBattleDomeOpponentStats12[]; +extern const u8 gBattleDomeOpponentStats13[]; +extern const u8 gBattleDomeOpponentStats14[]; +extern const u8 gBattleDomeOpponentStats15[]; +extern const u8 gBattleDomeOpponentStats16[]; +extern const u8 gBattleDomeOpponentStats17[]; +extern const u8 gBattleDomeOpponentStats18[]; +extern const u8 gBattleDomeOpponentStats19[]; +extern const u8 gBattleDomeOpponentStats20[]; +extern const u8 gBattleDomeOpponentStats21[]; +extern const u8 gBattleDomeOpponentStats22[]; +extern const u8 gBattleDomeOpponentStats23[]; +extern const u8 gBattleDomeOpponentStats24[]; +extern const u8 gBattleDomeOpponentStats25[]; +extern const u8 gBattleDomeOpponentStats26[]; +extern const u8 gBattleDomeOpponentStats27[]; +extern const u8 gBattleDomeOpponentStats28[]; +extern const u8 gBattleDomeOpponentStats29[]; +extern const u8 gBattleDomeOpponentStats30[]; +extern const u8 gBattleDomeOpponentStats31[]; +extern const u8 gBattleDomeOpponentStats32[]; +extern const u8 gBattleDomeOpponentStats33[]; +extern const u8 gBattleDomeOpponentStats34[]; +extern const u8 gBattleDomeOpponentStats35[]; +extern const u8 gBattleDomeOpponentStats36[]; +extern const u8 gBattleDomeOpponentStats37[]; +extern const u8 gBattleDomeOpponentStats38[]; +extern const u8 gBattleDomeOpponentStats39[]; +extern const u8 gBattleDomeOpponentStats40[]; +extern const u8 gBattleDomeOpponentStats41[]; +extern const u8 gBattleDomeOpponentStats42[]; +extern const u8 gBattleDomeOpponentStats43[]; +extern const u8 gBattleDomeMatchNumber1[]; +extern const u8 gBattleDomeMatchNumber2[]; +extern const u8 gBattleDomeMatchNumber3[]; +extern const u8 gBattleDomeMatchNumber4[]; +extern const u8 gBattleDomeMatchNumber5[]; +extern const u8 gBattleDomeMatchNumber6[]; +extern const u8 gBattleDomeMatchNumber7[]; +extern const u8 gBattleDomeMatchNumber8[]; +extern const u8 gBattleDomeMatchNumber9[]; +extern const u8 gBattleDomeMatchNumber10[]; +extern const u8 gBattleDomeMatchNumber11[]; +extern const u8 gBattleDomeMatchNumber12[]; +extern const u8 gBattleDomeMatchNumber13[]; +extern const u8 gBattleDomeMatchNumber14[]; +extern const u8 gBattleDomeMatchNumber15[]; +extern const u8 gBattleDomeWinStrings1[]; +extern const u8 gBattleDomeWinStrings2[]; +extern const u8 gBattleDomeWinStrings3[]; +extern const u8 gBattleDomeWinStrings4[]; +extern const u8 gBattleDomeWinStrings5[]; +extern const u8 gBattleDomeWinStrings6[]; +extern const u8 gBattleDomeWinStrings7[]; + +// This file's functions. +static u8 GetDomeTrainerMonIvs(u16 trainerId); +static void SwapDomeTrainers(s32 id1, s32 id2, u16 *statsArray); +static void CalcDomeMonStats(u16 species, s32 level, s32 ivs, u8 evBits, u8 nature, s32 *stats); +static void CreateDomeTrainerMons(u16 tournamentTrainerId); +static s32 sub_818FCBC(u16 tournamentTrainerId, bool8 arg1); +static s32 sub_818FDB8(u16 tournamentTrainerId, bool8 arg1); +static s32 GetTypeEffectivenessPoints(s32 move, s32 species, s32 arg2); +static s32 sub_818FEB4(s32 *arr, bool8 arg1); +static void sub_8190400(u8 taskId); +static void sub_8190CD4(u8 taskId); +static u8 sub_819221C(u8 taskId); +static void sub_8194D48(void); +static s32 TrainerIdToTournamentId(u16 trainerId); +static u16 TrainerIdOfPlayerOpponent(void); +static void sub_8194220(u8 taskId); +static void sub_8194950(u8 taskId); +static void CB2_BattleDome(void); +static void VblankCb0_BattleDome(void); +static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo); +static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId); +static s32 sub_8192F08(u8, u8*); +static u8 GetDomeBrainTrainerPicId(void); +static u8 GetDomeBrainTrainerClass(void); +static void CopyDomeBrainTrainerName(u8 *dst); +static void CopyDomeTrainerName(u8 *dst, u16 trainerId); +static void HblankCb_BattleDome(void); +static void VblankCb1_BattleDome(void); +static u8 sub_8193BDC(u8 taskId); +static void DecideRoundWinners(u8 roundId); +static u8 sub_81953E8(u8 tournamentId, u8); +static void sub_81948EC(u8, u8); +static void sub_8190B40(struct Sprite *sprite); +static void sub_8190C6C(struct Sprite *sprite); +static void sub_818E9CC(void); +static void sub_818EA84(void); +static void sub_818ED28(void); +static void sub_818F9B0(void); +static void sub_818F9E0(void); +static void sub_818FA20(void); +static void ShowDomeOpponentInfo(void); +static void sub_81938A4(void); +static void sub_81938E0(void); +static void sub_8190298(void); +static void sub_81902E4(void); +static void sub_8193D40(void); +static void sub_8193D7C(void); +static void sub_81902F8(void); +static void sub_819033C(void); +static void sub_8194D68(void); +static void sub_8194E44(void); +static void sub_8194EB4(void); +static void sub_8194EC0(void); +static void sub_8194EF8(void); +static void sub_8194F58(void); +static void InitDomeTrainers(void); + +// EWRAM variables. +EWRAM_DATA u32 gUnknown_0203CD70 = 0; +static EWRAM_DATA u32 gUnknown_0203CD74 = 0; +static EWRAM_DATA struct BattleDomeStruct *sBattleDomeStruct = {0}; +static EWRAM_DATA u8 *sTilemapBuffer = NULL; + +// Const rom data. +static const u8 sMovePointsForDomeTrainers[MOVES_COUNT][DOME_TOURNAMENT_TRAINERS_COUNT] = +{ + [MOVE_NONE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_POUND] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_KARATE_CHOP] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_DOUBLE_SLAP] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_COMET_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_MEGA_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_PAY_DAY] = {0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_FIRE_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_ICE_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_THUNDER_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_SCRATCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_VICE_GRIP] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_GUILLOTINE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0}, + [MOVE_RAZOR_WIND] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_SWORDS_DANCE] = {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0}, + [MOVE_CUT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_GUST] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_WING_ATTACK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_WHIRLWIND] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_FLY] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_BIND] = {0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1}, + [MOVE_SLAM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_VINE_WHIP] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_STOMP] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_DOUBLE_KICK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_MEGA_KICK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0}, + [MOVE_JUMP_KICK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_ROLLING_KICK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, + [MOVE_SAND_ATTACK] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_HEADBUTT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_HORN_ATTACK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_FURY_ATTACK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_HORN_DRILL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0}, + [MOVE_TACKLE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_BODY_SLAM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_WRAP] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, + [MOVE_TAKE_DOWN] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_THRASH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_DOUBLE_EDGE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_TAIL_WHIP] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_POISON_STING] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_TWINEEDLE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_PIN_MISSILE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_LEER] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_BITE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_GROWL] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_ROAR] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_SING] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_SUPERSONIC] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_SONIC_BOOM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_DISABLE] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_ACID] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_EMBER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_FLAMETHROWER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}, + [MOVE_MIST] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_WATER_GUN] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_HYDRO_PUMP] = {1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0}, + [MOVE_SURF] = {1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0}, + [MOVE_ICE_BEAM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}, + [MOVE_BLIZZARD] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1}, + [MOVE_PSYBEAM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_BUBBLE_BEAM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_AURORA_BEAM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_HYPER_BEAM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0}, + [MOVE_PECK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_DRILL_PECK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_SUBMISSION] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_LOW_KICK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_COUNTER] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0}, + [MOVE_SEISMIC_TOSS] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_STRENGTH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_ABSORB] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_MEGA_DRAIN] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_LEECH_SEED] = {1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_GROWTH] = {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_RAZOR_LEAF] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_SOLAR_BEAM] = {1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0}, + [MOVE_POISON_POWDER] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_STUN_SPORE] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_SLEEP_POWDER] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_PETAL_DANCE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_STRING_SHOT] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_DRAGON_RAGE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_FIRE_SPIN] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, + [MOVE_THUNDER_SHOCK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_THUNDERBOLT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}, + [MOVE_THUNDER_WAVE] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_THUNDER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1}, + [MOVE_ROCK_THROW] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_EARTHQUAKE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0}, + [MOVE_FISSURE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0}, + [MOVE_DIG] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_TOXIC] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1}, + [MOVE_CONFUSION] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_PSYCHIC] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}, + [MOVE_HYPNOSIS] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_MEDITATE] = {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_AGILITY] = {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_QUICK_ATTACK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_RAGE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_TELEPORT] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_NIGHT_SHADE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_MIMIC] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_SCREECH] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_DOUBLE_TEAM] = {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_RECOVER] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_HARDEN] = {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_MINIMIZE] = {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_SMOKESCREEN] = {0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_CONFUSE_RAY] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_WITHDRAW] = {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_DEFENSE_CURL] = {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_BARRIER] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_LIGHT_SCREEN] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_HAZE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_REFLECT] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_FOCUS_ENERGY] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_BIDE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_METRONOME] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}, + [MOVE_MIRROR_MOVE] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}, + [MOVE_SELF_DESTRUCT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0}, + [MOVE_EGG_BOMB] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0}, + [MOVE_LICK] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_SMOG] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, + [MOVE_SLUDGE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_BONE_CLUB] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, + [MOVE_FIRE_BLAST] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1}, + [MOVE_WATERFALL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_CLAMP] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, + [MOVE_SWIFT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_SKULL_BASH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0}, + [MOVE_SPIKE_CANNON] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_CONSTRICT] = {0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_AMNESIA] = {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_KINESIS] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_SOFT_BOILED] = {0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_HI_JUMP_KICK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_GLARE] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_DREAM_EATER] = {1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0}, + [MOVE_POISON_GAS] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_BARRAGE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_LEECH_LIFE] = {0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_LOVELY_KISS] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_SKY_ATTACK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1}, + [MOVE_TRANSFORM] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_BUBBLE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_DIZZY_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_SPORE] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_FLASH] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_PSYWAVE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_SPLASH] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_ACID_ARMOR] = {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_CRABHAMMER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0}, + [MOVE_EXPLOSION] = {0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0}, + [MOVE_FURY_SWIPES] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_BONEMERANG] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_REST] = {1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_ROCK_SLIDE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, + [MOVE_HYPER_FANG] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, + [MOVE_SHARPEN] = {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_CONVERSION] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_TRI_ATTACK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_SUPER_FANG] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_SLASH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_SUBSTITUTE] = {0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_STRUGGLE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0}, + [MOVE_SKETCH] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0}, + [MOVE_TRIPLE_KICK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_THIEF] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_SPIDER_WEB] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_MIND_READER] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0}, + [MOVE_NIGHTMARE] = {1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_FLAME_WHEEL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_SNORE] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_CURSE] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_FLAIL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_CONVERSION_2] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_AEROBLAST] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0}, + [MOVE_COTTON_SPORE] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_REVERSAL] = {1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_SPITE] = {0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_POWDER_SNOW] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_PROTECT] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0}, + [MOVE_MACH_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_SCARY_FACE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_FAINT_ATTACK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_SWEET_KISS] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_BELLY_DRUM] = {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_SLUDGE_BOMB] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1}, + [MOVE_MUD_SLAP] = {0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_OCTAZOOKA] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, + [MOVE_SPIKES] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_ZAP_CANNON] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1}, + [MOVE_FORESIGHT] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_DESTINY_BOND] = {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, + [MOVE_PERISH_SONG] = {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, + [MOVE_ICY_WIND] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, + [MOVE_DETECT] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0}, + [MOVE_BONE_RUSH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_LOCK_ON] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0}, + [MOVE_OUTRAGE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1}, + [MOVE_SANDSTORM] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_GIGA_DRAIN] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0}, + [MOVE_ENDURE] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_CHARM] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_ROLLOUT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_FALSE_SWIPE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_SWAGGER] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, + [MOVE_MILK_DRINK] = {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_SPARK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_FURY_CUTTER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_STEEL_WING] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, + [MOVE_MEAN_LOOK] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0}, + [MOVE_ATTRACT] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_SLEEP_TALK] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}, + [MOVE_HEAL_BELL] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, + [MOVE_RETURN] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_PRESENT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0}, + [MOVE_FRUSTRATION] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_SAFEGUARD] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_PAIN_SPLIT] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_SACRED_FIRE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1}, + [MOVE_MAGNITUDE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_DYNAMIC_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1}, + [MOVE_MEGAHORN] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0}, + [MOVE_DRAGON_BREATH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_BATON_PASS] = {1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_ENCORE] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0}, + [MOVE_PURSUIT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_RAPID_SPIN] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_SWEET_SCENT] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_IRON_TAIL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1}, + [MOVE_METAL_CLAW] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, + [MOVE_VITAL_THROW] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_MORNING_SUN] = {1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, + [MOVE_SYNTHESIS] = {1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, + [MOVE_MOONLIGHT] = {1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, + [MOVE_HIDDEN_POWER] = {0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_CROSS_CHOP] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0}, + [MOVE_TWISTER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_RAIN_DANCE] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, + [MOVE_SUNNY_DAY] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, + [MOVE_CRUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_MIRROR_COAT] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_PSYCH_UP] = {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_EXTREME_SPEED] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0}, + [MOVE_ANCIENT_POWER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1}, + [MOVE_SHADOW_BALL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_FUTURE_SIGHT] = {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_ROCK_SMASH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_WHIRLPOOL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, + [MOVE_BEAT_UP] = {0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_FAKE_OUT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_UPROAR] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_STOCKPILE] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_SPIT_UP] = {1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0}, + [MOVE_SWALLOW] = {1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_HEAT_WAVE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1}, + [MOVE_HAIL] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_TORMENT] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_FLATTER] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_WILL_O_WISP] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_MEMENTO] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_FACADE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_FOCUS_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0}, + [MOVE_SMELLING_SALT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_FOLLOW_ME] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_NATURE_POWER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_CHARGE] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_TAUNT] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_HELPING_HAND] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_TRICK] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_ROLE_PLAY] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_WISH] = {0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_ASSIST] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0}, + [MOVE_INGRAIN] = {1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_SUPERPOWER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0}, + [MOVE_MAGIC_COAT] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0}, + [MOVE_RECYCLE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_REVENGE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0}, + [MOVE_BRICK_BREAK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_YAWN] = {1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_KNOCK_OFF] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_ENDEAVOR] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0}, + [MOVE_ERUPTION] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0}, + [MOVE_SKILL_SWAP] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_IMPRISON] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0}, + [MOVE_REFRESH] = {0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_GRUDGE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0}, + [MOVE_SNATCH] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0}, + [MOVE_SECRET_POWER] = {0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_DIVE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_ARM_THRUST] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_CAMOUFLAGE] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_TAIL_GLOW] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_LUSTER_PURGE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1}, + [MOVE_MIST_BALL] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1}, + [MOVE_FEATHER_DANCE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_TEETER_DANCE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_BLAZE_KICK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, + [MOVE_MUD_SPORT] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_ICE_BALL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_NEEDLE_ARM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_SLACK_OFF] = {0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_HYPER_VOICE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0}, + [MOVE_POISON_FANG] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_CRUSH_CLAW] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, + [MOVE_BLAST_BURN] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0}, + [MOVE_HYDRO_CANNON] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0}, + [MOVE_METEOR_MASH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1}, + [MOVE_ASTONISH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_WEATHER_BALL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_AROMATHERAPY] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, + [MOVE_FAKE_TEARS] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_AIR_CUTTER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_OVERHEAT] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1}, + [MOVE_ODOR_SLEUTH] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_ROCK_TOMB] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, + [MOVE_SILVER_WIND] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1}, + [MOVE_METAL_SOUND] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_GRASS_WHISTLE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_TICKLE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_COSMIC_POWER] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_WATER_SPOUT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0}, + [MOVE_SIGNAL_BEAM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_SHADOW_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_EXTRASENSORY] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_SKY_UPPERCUT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_SAND_TOMB] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, + [MOVE_SHEER_COLD] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0}, + [MOVE_MUDDY_WATER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1}, + [MOVE_BULLET_SEED] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_AERIAL_ACE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_ICICLE_SPEAR] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_IRON_DEFENSE] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_BLOCK] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0}, + [MOVE_HOWL] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_DRAGON_CLAW] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_FRENZY_PLANT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0}, + [MOVE_BULK_UP] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_BOUNCE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1}, + [MOVE_MUD_SHOT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, + [MOVE_POISON_TAIL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_COVET] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_VOLT_TACKLE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0}, + [MOVE_MAGICAL_LEAF] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_WATER_SPORT] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_CALM_MIND] = {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_LEAF_BLADE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, + [MOVE_DRAGON_DANCE] = {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_ROCK_BLAST] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_SHOCK_WAVE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + [MOVE_WATER_PULSE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, + [MOVE_DOOM_DESIRE] = {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0}, + [MOVE_PSYCHO_BOOST] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1}, +}; + +static const u8 gUnknown_0860C988[][DOME_TOURNAMENT_TRAINERS_COUNT] = +{ + {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 2, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0}, + {1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0}, + {3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0}, + {0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0}, + {0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0}, + {2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 4, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +}; +static const u8 sUnusedArray[] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 3, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 0, 0, 2, + 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, + 0, 2, 253, 0, 0, 0, 0, 0, 253, 0, 0, 0, 0, 0, 253, 0, + 0, 0, 0, 0, 253, 0, 0, 0, 0, 0, 253, 254, 0, 0, 0, 0, + 0, 254, 0, 0, 0, 0, 0, 254, 0, 0, 0, 0, 0, 254, 0, 0, + 0, 0, 0, 254, 0, 0, 0, 0, 0, +}; + +static const u8 gUnknown_0860CBF1[][5][4]= +{ + {{0x07, 0x01, 0x08, 0x10}, {0x07, 0x01, 0x08, 0x10}, {0x07, 0x01, 0x08, 0x10}, {0x07, 0x01, 0x08, 0x10}, {0x07, 0x01, 0x08, 0x10}}, + {{0x00, 0x02, 0x09, 0x10}, {0x00, 0x02, 0x09, 0x10}, {0x00, 0x02, 0x09, 0x10}, {0x00, 0x02, 0x09, 0x10}, {0x00, 0x02, 0x09, 0x10}}, + {{0x01, 0x03, 0x0a, 0x11}, {0x01, 0x03, 0x0a, 0x11}, {0x01, 0x03, 0x0a, 0x11}, {0x01, 0x03, 0x0a, 0x11}, {0x01, 0x03, 0x0a, 0x11}}, + {{0x02, 0x04, 0x0b, 0x11}, {0x02, 0x04, 0x0b, 0x11}, {0x02, 0x04, 0x0b, 0x11}, {0x02, 0x04, 0x0b, 0x11}, {0x02, 0x04, 0x0b, 0x11}}, + {{0x03, 0x05, 0x0c, 0x12}, {0x03, 0x05, 0x0c, 0x12}, {0x03, 0x05, 0x0c, 0x12}, {0x03, 0x05, 0x0c, 0x12}, {0x03, 0x05, 0x0c, 0x12}}, + {{0x04, 0x06, 0x0d, 0x12}, {0x04, 0x06, 0x0d, 0x12}, {0x04, 0x06, 0x0d, 0x12}, {0x04, 0x06, 0x0d, 0x12}, {0x04, 0x06, 0x0d, 0x12}}, + {{0x05, 0x07, 0x0e, 0x13}, {0x05, 0x07, 0x0e, 0x13}, {0x05, 0x07, 0x0e, 0x13}, {0x05, 0x07, 0x0e, 0x13}, {0x05, 0x07, 0x0e, 0x13}}, + {{0x06, 0x00, 0x0f, 0x13}, {0x06, 0x00, 0x0f, 0x13}, {0x06, 0x00, 0x0f, 0x13}, {0x06, 0x00, 0x0f, 0x13}, {0x06, 0x00, 0x0f, 0x13}}, + {{0x1f, 0x09, 0x14, 0x1f}, {0x1f, 0x09, 0x14, 0x1f}, {0x1f, 0x09, 0x14, 0x1f}, {0x1f, 0x09, 0x14, 0x1f}, {0x1f, 0x09, 0x14, 0x1f}}, + {{0x08, 0x0a, 0x14, 0x01}, {0x08, 0x0a, 0x14, 0x01}, {0x08, 0x0a, 0x14, 0x01}, {0x08, 0x0a, 0x14, 0x01}, {0x08, 0x0a, 0x14, 0x01}}, + {{0x09, 0x0b, 0x15, 0x02}, {0x09, 0x0b, 0x15, 0x02}, {0x09, 0x0b, 0x15, 0x02}, {0x09, 0x0b, 0x15, 0x02}, {0x09, 0x0b, 0x15, 0x02}}, + {{0x0a, 0x0c, 0x15, 0x03}, {0x0a, 0x0c, 0x15, 0x03}, {0x0a, 0x0c, 0x15, 0x03}, {0x0a, 0x0c, 0x15, 0x03}, {0x0a, 0x0c, 0x15, 0x03}}, + {{0x0b, 0x0d, 0x16, 0x04}, {0x0b, 0x0d, 0x16, 0x04}, {0x0b, 0x0d, 0x16, 0x04}, {0x0b, 0x0d, 0x16, 0x04}, {0x0b, 0x0d, 0x16, 0x04}}, + {{0x0c, 0x0e, 0x16, 0x05}, {0x0c, 0x0e, 0x16, 0x05}, {0x0c, 0x0e, 0x16, 0x05}, {0x0c, 0x0e, 0x16, 0x05}, {0x0c, 0x0e, 0x16, 0x05}}, + {{0x0d, 0x0f, 0x17, 0x06}, {0x0d, 0x0f, 0x17, 0x06}, {0x0d, 0x0f, 0x17, 0x06}, {0x0d, 0x0f, 0x17, 0x06}, {0x0d, 0x0f, 0x17, 0x06}}, + {{0x0e, 0x1f, 0x17, 0x07}, {0x0e, 0x1f, 0x17, 0x07}, {0x0e, 0x1f, 0x17, 0x07}, {0x0e, 0x1f, 0x17, 0x07}, {0x0e, 0x1f, 0x17, 0x07}}, + {{0x13, 0x11, 0x00, 0x14}, {0x13, 0x11, 0x00, 0x18}, {0x13, 0x11, 0x00, 0x18}, {0x13, 0x11, 0x00, 0x18}, {0x13, 0x11, 0x00, 0x18}}, + {{0x10, 0x12, 0x02, 0x15}, {0x10, 0x12, 0x02, 0x18}, {0x10, 0x12, 0x02, 0x18}, {0x10, 0x12, 0x02, 0x18}, {0x10, 0x12, 0x02, 0x18}}, + {{0x11, 0x13, 0x04, 0x16}, {0x11, 0x13, 0x04, 0x19}, {0x11, 0x13, 0x04, 0x19}, {0x11, 0x13, 0x04, 0x19}, {0x11, 0x13, 0x04, 0x19}}, + {{0x12, 0x10, 0x06, 0x17}, {0x12, 0x10, 0x06, 0x19}, {0x12, 0x10, 0x06, 0x19}, {0x12, 0x10, 0x06, 0x19}, {0x12, 0x10, 0x06, 0x19}}, + {{0x17, 0x15, 0x10, 0x08}, {0x17, 0x15, 0x1a, 0x08}, {0x17, 0x15, 0x1a, 0x08}, {0x17, 0x15, 0x1a, 0x08}, {0x17, 0x15, 0x1a, 0x08}}, + {{0x14, 0x16, 0x11, 0x0a}, {0x14, 0x16, 0x1a, 0x0a}, {0x14, 0x16, 0x1a, 0x0a}, {0x14, 0x16, 0x1a, 0x0a}, {0x14, 0x16, 0x1a, 0x0a}}, + {{0x15, 0x17, 0x12, 0x0c}, {0x15, 0x17, 0x1b, 0x0c}, {0x15, 0x17, 0x1b, 0x0c}, {0x15, 0x17, 0x1b, 0x0c}, {0x15, 0x17, 0x1b, 0x0c}}, + {{0x16, 0x14, 0x13, 0x0e}, {0x16, 0x14, 0x1b, 0x0e}, {0x16, 0x14, 0x1b, 0x0e}, {0x16, 0x14, 0x1b, 0x0e}, {0x16, 0x14, 0x1b, 0x0e}}, + {{0xff, 0xff, 0xff, 0xff}, {0x19, 0x19, 0x10, 0x1a}, {0x19, 0x19, 0x10, 0x1c}, {0x19, 0x19, 0x10, 0x1c}, {0x19, 0x19, 0x10, 0x1c}}, + {{0xff, 0xff, 0xff, 0xff}, {0x18, 0x18, 0x12, 0x1b}, {0x18, 0x18, 0x12, 0x1c}, {0x18, 0x18, 0x12, 0x1c}, {0x18, 0x18, 0x12, 0x1c}}, + {{0xff, 0xff, 0xff, 0xff}, {0x1b, 0x1b, 0x18, 0x14}, {0x1b, 0x1b, 0x1d, 0x14}, {0x1b, 0x1b, 0x1d, 0x14}, {0x1b, 0x1b, 0x1d, 0x14}}, + {{0xff, 0xff, 0xff, 0xff}, {0x1a, 0x1a, 0x19, 0x16}, {0x1a, 0x1a, 0x1d, 0x16}, {0x1a, 0x1a, 0x1d, 0x16}, {0x1a, 0x1a, 0x1d, 0x16}}, + {{0xff, 0xff, 0xff, 0xff}, {0xff, 0xff, 0xff, 0xff}, {0xff, 0xff, 0x18, 0x1d}, {0xff, 0xff, 0x18, 0x1e}, {0xff, 0xff, 0x18, 0x1e}}, + {{0xff, 0xff, 0xff, 0xff}, {0xff, 0xff, 0xff, 0xff}, {0xff, 0xff, 0x1c, 0x1a}, {0xff, 0xff, 0x1e, 0x1a}, {0xff, 0xff, 0x1e, 0x1a}}, + {{0xff, 0xff, 0xff, 0xff}, {0xff, 0xff, 0xff, 0xff}, {0xff, 0xff, 0xff, 0xff}, {0xff, 0xff, 0x1c, 0x1d}, {0xff, 0xff, 0x1c, 0x1d}}, + {{0x0f, 0x08, 0x08, 0x00}, {0x0f, 0x08, 0x08, 0x00}, {0x0f, 0x08, 0x08, 0x00}, {0x0f, 0x08, 0x08, 0x00}, {0x0f, 0x08, 0x08, 0x00}}, +}; + +static const struct BgTemplate gUnknown_0860CE74[4] = +{ + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 28, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0 + }, + { + .bg = 1, + .charBaseIndex = 1, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0 + }, + { + .bg = 2, + .charBaseIndex = 2, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0 + }, + { + .bg = 3, + .charBaseIndex = 2, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0 + }, +}; + +static const struct BgTemplate gUnknown_0860CE84[4] = +{ + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 20, + .screenSize = 3, + .paletteMode = 0, + .priority = 0, + .baseTile = 0 + }, + { + .bg = 1, + .charBaseIndex = 1, + .mapBaseIndex = 24, + .screenSize = 3, + .paletteMode = 0, + .priority = 0, + .baseTile = 0 + }, + { + .bg = 2, + .charBaseIndex = 2, + .mapBaseIndex = 28, + .screenSize = 3, + .paletteMode = 0, + .priority = 1, + .baseTile = 0 + }, + { + .bg = 3, + .charBaseIndex = 2, + .mapBaseIndex = 7, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0 + }, +}; + +static const struct WindowTemplate gUnknown_0860CE94[] = +{ + { + .priority = 0, + .tilemapLeft = 0, + .tilemapTop = 3, + .width = 8, + .height = 16, + .paletteNum = 15, + .baseBlock = 16, + }, + { + .priority = 0, + .tilemapLeft = 22, + .tilemapTop = 3, + .width = 8, + .height = 16, + .paletteNum = 15, + .baseBlock = 144, + }, + { + .priority = 0, + .tilemapLeft = 8, + .tilemapTop = 1, + .width = 14, + .height = 2, + .paletteNum = 15, + .baseBlock = 272, + }, + DUMMY_WIN_TEMPLATE, +}; + +static const struct WindowTemplate gUnknown_0860CEB4[] = +{ + { + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 2, + .width = 26, + .height = 2, + .paletteNum = 15, + .baseBlock = 1, + }, + { + .priority = 0, + .tilemapLeft = 16, + .tilemapTop = 5, + .width = 8, + .height = 2, + .paletteNum = 15, + .baseBlock = 53, + }, + { + .priority = 0, + .tilemapLeft = 19, + .tilemapTop = 7, + .width = 9, + .height = 3, + .paletteNum = 15, + .baseBlock = 69, + }, + { + .priority = 0, + .tilemapLeft = 16, + .tilemapTop = 10, + .width = 8, + .height = 2, + .paletteNum = 15, + .baseBlock = 96, + }, + { + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 12, + .width = 26, + .height = 7, + .paletteNum = 15, + .baseBlock = 112, + }, + { + .priority = 0, + .tilemapLeft = 5, + .tilemapTop = 2, + .width = 23, + .height = 2, + .paletteNum = 15, + .baseBlock = 294, + }, + { + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 5, + .width = 8, + .height = 2, + .paletteNum = 15, + .baseBlock = 340, + }, + { + .priority = 0, + .tilemapLeft = 20, + .tilemapTop = 5, + .width = 8, + .height = 2, + .paletteNum = 15, + .baseBlock = 356, + }, + { + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 16, + .width = 26, + .height = 2, + .paletteNum = 15, + .baseBlock = 372, + }, + { + .priority = 1, + .tilemapLeft = 2, + .tilemapTop = 2, + .width = 26, + .height = 2, + .paletteNum = 15, + .baseBlock = 1, + }, + { + .priority = 1, + .tilemapLeft = 16, + .tilemapTop = 5, + .width = 8, + .height = 2, + .paletteNum = 15, + .baseBlock = 53, + }, + { + .priority = 1, + .tilemapLeft = 19, + .tilemapTop = 7, + .width = 9, + .height = 3, + .paletteNum = 15, + .baseBlock = 69, + }, + { + .priority = 1, + .tilemapLeft = 16, + .tilemapTop = 10, + .width = 8, + .height = 2, + .paletteNum = 15, + .baseBlock = 96, + }, + { + .priority = 1, + .tilemapLeft = 2, + .tilemapTop = 12, + .width = 26, + .height = 7, + .paletteNum = 15, + .baseBlock = 112, + }, + { + .priority = 1, + .tilemapLeft = 5, + .tilemapTop = 2, + .width = 23, + .height = 2, + .paletteNum = 15, + .baseBlock = 294, + }, + { + .priority = 1, + .tilemapLeft = 2, + .tilemapTop = 5, + .width = 8, + .height = 2, + .paletteNum = 15, + .baseBlock = 340, + }, + { + .priority = 1, + .tilemapLeft = 20, + .tilemapTop = 5, + .width = 8, + .height = 2, + .paletteNum = 15, + .baseBlock = 356, + }, + { + .priority = 1, + .tilemapLeft = 2, + .tilemapTop = 16, + .width = 26, + .height = 2, + .paletteNum = 15, + .baseBlock = 372, + }, + // UB: No DUMMY_WIN_TEMPLATE at the array's end. +}; + +static const struct ScanlineEffectParams gUnknown_0860CF44 = +{ + .dmaDest = (void *)REG_ADDR_BG3CNT, + .dmaControl = 0xa2600001, + .initState = 1, +}; + +static const struct CompressedSpriteSheet gUnknown_0860CF50[] = +{ + {gBattleFrontierGfx_DomeOptions, 0x0600, 0x0000}, + {}, +}; + +static const struct CompressedSpritePalette gUnknown_0860CF60[] = +{ + {gUnknown_08D85444, 0x0000}, + {}, +}; + +static const struct OamData gUnknown_0860CF70 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +static const struct OamData gUnknown_0860CF78 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 0, + .paletteNum = 1, + .affineParam = 0, +}; + +static const struct OamData gUnknown_0860CF80 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 0, + .paletteNum = 2, + .affineParam = 0, +}; + +static const struct OamData gUnknown_0860CF88 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 0, + .paletteNum = 2, + .affineParam = 0, +}; + +static const union AnimCmd gUnknown_0860CF90[] = +{ + ANIMCMD_FRAME(20, 1), + ANIMCMD_END, +}; +static const union AnimCmd gUnknown_0860CF98[] = +{ + ANIMCMD_FRAME(24, 1), + ANIMCMD_END, +}; + +static const union AnimCmd * const gUnknown_0860CFA0[] = +{ + gUnknown_0860CF90, + gUnknown_0860CF98, +}; + +static const struct SpriteTemplate gUnknown_0860CFA8 = +{ + .tileTag = 0x0000, + .paletteTag = 0xffff, + .oam = &gUnknown_0860CF70, + .anims = gUnknown_0860CFA0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +static const union AnimCmd gUnknown_0860CFC0[] = +{ + ANIMCMD_FRAME(8, 1), + ANIMCMD_END, +}; + +static const union AnimCmd gUnknown_0860CFC8[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd * const gUnknown_0860CFD0[] = +{ + gUnknown_0860CFC0, + gUnknown_0860CFC8, +}; + +static const struct SpriteTemplate gUnknown_0860CFD8 = +{ + .tileTag = 0x0000, + .paletteTag = 0xffff, + .oam = &gUnknown_0860CF78, + .anims = gUnknown_0860CFD0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +static const union AnimCmd gUnknown_0860CFF0[] = +{ + ANIMCMD_FRAME(40, 1), + ANIMCMD_END, +}; + +static const union AnimCmd gUnknown_0860CFF8[] = +{ + ANIMCMD_FRAME(32, 1), + ANIMCMD_END, + }; + +static const union AnimCmd * const gUnknown_0860D000[] = +{ + gUnknown_0860CFF0, + gUnknown_0860CFF8, +}; + +static const struct SpriteTemplate gUnknown_0860D008 = +{ + .tileTag = 0x0000, + .paletteTag = 0xffff, + .oam = &gUnknown_0860CF78, + .anims = gUnknown_0860D000, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +static const union AnimCmd gUnknown_0860D020[] = +{ + ANIMCMD_FRAME(18, 1), + ANIMCMD_END, +}; + +static const union AnimCmd gUnknown_0860D028[] = +{ + ANIMCMD_FRAME(18, 129, .vFlip = TRUE), + ANIMCMD_END, + }; + +static const union AnimCmd gUnknown_0860D030[] = +{ + ANIMCMD_FRAME(16, 65, .hFlip = TRUE), + ANIMCMD_END, +}; + +static const union AnimCmd gUnknown_0860D038[] = +{ + ANIMCMD_FRAME(16, 1), + ANIMCMD_END, +}; + +static const union AnimCmd * const gUnknown_0860D040[] = +{ + gUnknown_0860D020, + gUnknown_0860D028, +}; + +static const union AnimCmd * const gUnknown_0860D048[] = +{ + gUnknown_0860D030, + gUnknown_0860D038, +}; + +static const struct SpriteTemplate gUnknown_0860D050 = +{ + .tileTag = 0x0000, + .paletteTag = 0xffff, + .oam = &gUnknown_0860CF88, + .anims = gUnknown_0860D048, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8190B40 +}; + +static const struct SpriteTemplate gUnknown_0860D068 = +{ + .tileTag = 0x0000, + .paletteTag = 0xffff, + .oam = &gUnknown_0860CF80, + .anims = gUnknown_0860D040, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8190C6C +}; + +static const u8 gUnknown_0860D080[DOME_TOURNAMENT_TRAINERS_COUNT] = +{ + 0x00, 0x08, 0x0c, 0x04, 0x07, 0x0f, 0x0b, 0x03, 0x02, 0x0a, 0x0e, 0x06, 0x05, 0x0d, 0x09, 0x01 +}; + +static void (* const gUnknown_0860D090[])(void) = +{ + sub_818E9CC, + sub_818EA84, + sub_818ED28, + sub_818F9B0, + sub_818F9E0, + sub_818FA20, + ShowDomeOpponentInfo, + sub_81938A4, + sub_81938E0, + sub_8190298, + sub_81902E4, + sub_8193D40, + sub_8193D7C, + sub_81902F8, + sub_819033C, + sub_8194D48, + sub_8194D68, + sub_8194E44, + sub_8194EB4, + sub_8194EC0, + sub_8194EF8, + sub_8194F58, + InitDomeTrainers, +}; + +static const u32 gUnknown_0860D0EC[][2] = +{ + {0x00000004, 0x00000008}, + {0x00100000, 0x00200000}, +}; + +static const u32 gUnknown_0860D0FC[][2] = +{ + {0xfffffffb, 0xfffffff7}, + {0xffefffff, 0xffdfffff}, +}; + +static const u8 sIdToOpponentId[DOME_TOURNAMENT_TRAINERS_COUNT][DOME_ROUNDS_COUNT] = +{ + [0] = {8, 0, 4, 8}, + [1] = {9, 12, 8, 0}, + [2] = {10, 8, 12, 0}, + [3] = {11, 4, 0, 8}, + [4] = {12, 0, 4, 8}, + [5] = {13, 12, 8, 0}, + [6] = {14, 8, 12, 0}, + [7] = {15, 4, 0, 8}, + [8] = {0, 0, 4, 8}, + [9] = {1, 12, 8, 0}, + [10] = {2, 8, 12, 0}, + [11] = {3, 4, 0, 8}, + [12] = {4, 0, 4, 8}, + [13] = {5, 12, 8, 0}, + [14] = {6, 8, 12, 0}, + [15] = {7, 4, 0, 8}, +}; + +static const u8 gUnknown_0860D14C[] = {0x00, 0x08, 0x04, 0x0c, 0x07, 0x0f, 0x03, 0x0b, 0x02, 0x0a, 0x06, 0x0e, 0x05, 0x0d, 0x01, 0x09}; + +static const u8 gUnknown_0860D15C[][4] = +{ + {0x00, 0x08, 0x0c, 0x0e}, + {0x00, 0x08, 0x0c, 0x0e}, + {0x01, 0x08, 0x0c, 0x0e}, + {0x01, 0x08, 0x0c, 0x0e}, + {0x02, 0x09, 0x0c, 0x0e}, + {0x02, 0x09, 0x0c, 0x0e}, + {0x03, 0x09, 0x0c, 0x0e}, + {0x03, 0x09, 0x0c, 0x0e}, + {0x04, 0x0a, 0x0d, 0x0e}, + {0x04, 0x0a, 0x0d, 0x0e}, + {0x05, 0x0a, 0x0d, 0x0e}, + {0x05, 0x0a, 0x0d, 0x0e}, + {0x06, 0x0b, 0x0d, 0x0e}, + {0x06, 0x0b, 0x0d, 0x0e}, + {0x07, 0x0b, 0x0d, 0x0e}, + {0x07, 0x0b, 0x0d, 0x0e}, +}; + +static const u8 gUnknown_0860D19C[] = {0x17, 0x1b, 0x1d, 0x1e}; + +static const u8 gUnknown_0860D1A0[][4] = +{ + {0x10, 0x18, 0x1c, 0x1e}, + {0x11, 0x18, 0x1c, 0x1e}, + {0x12, 0x19, 0x1c, 0x1e}, + {0x13, 0x19, 0x1c, 0x1e}, + {0x14, 0x1a, 0x1d, 0x1e}, + {0x15, 0x1a, 0x1d, 0x1e}, + {0x16, 0x1b, 0x1d, 0x1e}, + {0x17, 0x1b, 0x1d, 0x1e}, +}; + +static const u8 gUnknown_0860D1C0[] = {0x00, 0x0f, 0x08, 0x07, 0x03, 0x0c, 0x0b, 0x04, 0x01, 0x0e, 0x09, 0x06, 0x02, 0x0d, 0x0a, 0x05}; + +static const u8 *const gBattleDomePotentialPointers[] = +{ + gBattleDomeOpponentPotential1, + gBattleDomeOpponentPotential2, + gBattleDomeOpponentPotential3, + gBattleDomeOpponentPotential4, + gBattleDomeOpponentPotential5, + gBattleDomeOpponentPotential6, + gBattleDomeOpponentPotential7, + gBattleDomeOpponentPotential8, + gBattleDomeOpponentPotential9, + gBattleDomeOpponentPotential10, + gBattleDomeOpponentPotential11, + gBattleDomeOpponentPotential12, + gBattleDomeOpponentPotential13, + gBattleDomeOpponentPotential14, + gBattleDomeOpponentPotential15, + gBattleDomeOpponentPotential16, + gBattleDomeOpponentPotential17, +}; + +static const u8 *const gBattleDomeOpponentStylePointers[] = +{ + gBattleDomeOpponentStyle1, + gBattleDomeOpponentStyle2, + gBattleDomeOpponentStyle3, + gBattleDomeOpponentStyle4, + gBattleDomeOpponentStyle5, + gBattleDomeOpponentStyle6, + gBattleDomeOpponentStyle7, + gBattleDomeOpponentStyle8, + gBattleDomeOpponentStyle9, + gBattleDomeOpponentStyle10, + gBattleDomeOpponentStyle11, + gBattleDomeOpponentStyle12, + gBattleDomeOpponentStyle13, + gBattleDomeOpponentStyle14, + gBattleDomeOpponentStyle15, + gBattleDomeOpponentStyle16, + gBattleDomeOpponentStyle17, + gBattleDomeOpponentStyle18, + gBattleDomeOpponentStyle19, + gBattleDomeOpponentStyle20, + gBattleDomeOpponentStyle21, + gBattleDomeOpponentStyle22, + gBattleDomeOpponentStyle23, + gBattleDomeOpponentStyle24, + gBattleDomeOpponentStyle25, + gBattleDomeOpponentStyle26, + gBattleDomeOpponentStyle27, + gBattleDomeOpponentStyle28, + gBattleDomeOpponentStyleUnused1, + gBattleDomeOpponentStyleUnused2, + gBattleDomeOpponentStyleUnused3, + gBattleDomeOpponentStyleUnused4, +}; + +static const u8 *const gBattleDomeOpponentStatsPointers[] = +{ + gBattleDomeOpponentStats1, + gBattleDomeOpponentStats2, + gBattleDomeOpponentStats3, + gBattleDomeOpponentStats4, + gBattleDomeOpponentStats5, + gBattleDomeOpponentStats6, + gBattleDomeOpponentStats7, + gBattleDomeOpponentStats8, + gBattleDomeOpponentStats9, + gBattleDomeOpponentStats10, + gBattleDomeOpponentStats11, + gBattleDomeOpponentStats12, + gBattleDomeOpponentStats13, + gBattleDomeOpponentStats14, + gBattleDomeOpponentStats15, + gBattleDomeOpponentStats16, + gBattleDomeOpponentStats17, + gBattleDomeOpponentStats18, + gBattleDomeOpponentStats19, + gBattleDomeOpponentStats20, + gBattleDomeOpponentStats21, + gBattleDomeOpponentStats22, + gBattleDomeOpponentStats23, + gBattleDomeOpponentStats24, + gBattleDomeOpponentStats25, + gBattleDomeOpponentStats26, + gBattleDomeOpponentStats27, + gBattleDomeOpponentStats28, + gBattleDomeOpponentStats29, + gBattleDomeOpponentStats30, + gBattleDomeOpponentStats31, + gBattleDomeOpponentStats32, + gBattleDomeOpponentStats33, + gBattleDomeOpponentStats34, + gBattleDomeOpponentStats35, + gBattleDomeOpponentStats36, + gBattleDomeOpponentStats37, + gBattleDomeOpponentStats38, + gBattleDomeOpponentStats39, + gBattleDomeOpponentStats40, + gBattleDomeOpponentStats41, + gBattleDomeOpponentStats42, + gBattleDomeOpponentStats43, +}; + +static const u8 sInfoTrainerMonX[] = {0x68, 0x88, 0x68}; +static const u8 sInfoTrainerMonY[] = {0x26, 0x3e, 0x4e}; +static const u8 gUnknown_0860D346[] = {0x00, 0x04, 0x00}; + +static const u8 gUnknown_0860D349[] = {0x00, 0x05, 0x09, 0x0c, 0x0e, 0x00, 0x00}; + +static const u8 *const gBattleDomeMatchNumberPointers[] = +{ + gBattleDomeMatchNumber1, + gBattleDomeMatchNumber2, + gBattleDomeMatchNumber3, + gBattleDomeMatchNumber4, + gBattleDomeMatchNumber5, + gBattleDomeMatchNumber6, + gBattleDomeMatchNumber7, + gBattleDomeMatchNumber8, + gBattleDomeMatchNumber9, + gBattleDomeMatchNumber10, + gBattleDomeMatchNumber11, + gBattleDomeMatchNumber12, + gBattleDomeMatchNumber13, + gBattleDomeMatchNumber14, + gBattleDomeMatchNumber15, +}; + +static const u8 *const gBattleDomeWinStringsPointers[] = +{ + gBattleDomeWinStrings1, + gBattleDomeWinStrings2, + gBattleDomeWinStrings3, + gBattleDomeWinStrings4, + gBattleDomeWinStrings5, + gBattleDomeWinStrings6, + gBattleDomeWinStrings7, +}; + +static const u8 sFirstTrainerMonX[] = {0x60, 0x60, 0x60}; +static const u8 sFirstTrainerMonY[] = {0x38, 0x50, 0x68}; +static const u8 sSecondTrainerMonX[] = {0x90, 0x90, 0x90}; +static const u8 sSecondTrainerMonY[] = {0x38, 0x50, 0x68}; + +static const u8 gUnknown_0860D3B4[] = {0x00, 0x08, 0x0c, 0x04, 0x07, 0x0f, 0x0b, 0x03, 0x02, 0x0a, 0x0e, 0x06, 0x05, 0x0d, 0x09, 0x01}; + +static const u8 gUnknown_0860D3C4[][3] = +{ + {0x00, 0x02, 0x00}, + {0x02, 0x02, 0x00}, + {0x04, 0x02, 0x00}, + {0x06, 0x02, 0x00}, + {0x08, 0x02, 0x00}, + {0x0a, 0x02, 0x00}, + {0x0c, 0x02, 0x00}, + {0x0e, 0x02, 0x00}, + {0x00, 0x04, 0x01}, + {0x04, 0x04, 0x01}, + {0x08, 0x04, 0x01}, + {0x0c, 0x04, 0x01}, + {0x00, 0x08, 0x02}, + {0x08, 0x08, 0x02}, + {0x00, 0x10, 0x03}, +}; + +static const u8 gUnknown_0860D3F1[][2] = +{ + {0x00, 0x00}, + {0x01, 0x70}, + {0x01, 0x00}, + {0x00, 0x70}, + {0x00, 0x30}, + {0x01, 0x40}, + {0x01, 0x30}, + {0x00, 0x40}, + {0x00, 0x10}, + {0x01, 0x60}, + {0x01, 0x10}, + {0x00, 0x60}, + {0x00, 0x20}, + {0x01, 0x50}, + {0x01, 0x20}, + {0x00, 0x50}, +}; + +static const u8 gUnknown_0860D411[][2] = +{ + {0x44, 0x21}, + {0x44, 0x31}, + {0x44, 0x41}, + {0x44, 0x51}, + {0x44, 0x61}, + {0x44, 0x71}, + {0x44, 0x81}, + {0x44, 0x91}, + {0xac, 0x21}, + {0xac, 0x31}, + {0xac, 0x41}, + {0xac, 0x51}, + {0xac, 0x61}, + {0xac, 0x71}, + {0xac, 0x81}, + {0xac, 0x91}, + {0x57, 0x29}, + {0x57, 0x49}, + {0x57, 0x69}, + {0x57, 0x89}, + {0x99, 0x29}, + {0x99, 0x49}, + {0x99, 0x69}, + {0x99, 0x89}, + {0x5f, 0x39}, + {0x5f, 0x79}, + {0x91, 0x39}, + {0x91, 0x79}, + {0x67, 0x59}, + {0x89, 0x59}, + {0x78, 0x59}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d450[] = +{ + {.src = 0x6021, .y = 0x04, .x = 0x09}, + {.src = 0x6023, .y = 0x04, .x = 0x0a}, + {.src = 0x6047, .y = 0x05, .x = 0x0a}, + {.src = 0x6043, .y = 0x05, .x = 0x0b}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d460[] = +{ + {.src = 0x6021, .y = 0x04, .x = 0x09}, + {.src = 0x6023, .y = 0x04, .x = 0x0a}, + {.src = 0x6047, .y = 0x05, .x = 0x0a}, + {.src = 0x6023, .y = 0x05, .x = 0x0b}, + {.src = 0x6027, .y = 0x06, .x = 0x0b}, + {.src = 0x6047, .y = 0x07, .x = 0x0b}, + {.src = 0x6043, .y = 0x07, .x = 0x0c}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d47c[] = +{ + {.src = 0x6021, .y = 0x04, .x = 0x09}, + {.src = 0x6023, .y = 0x04, .x = 0x0a}, + {.src = 0x6047, .y = 0x05, .x = 0x0a}, + {.src = 0x6023, .y = 0x05, .x = 0x0b}, + {.src = 0x6027, .y = 0x06, .x = 0x0b}, + {.src = 0x6047, .y = 0x07, .x = 0x0b}, + {.src = 0x6023, .y = 0x07, .x = 0x0c}, + {.src = 0x6027, .y = 0x08, .x = 0x0c}, + {.src = 0x6027, .y = 0x09, .x = 0x0c}, + {.src = 0x6027, .y = 0x0a, .x = 0x0c}, + {.src = 0x603b, .y = 0x0b, .x = 0x0c}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d4a8[] = +{ + {.src = 0x6021, .y = 0x04, .x = 0x09}, + {.src = 0x6023, .y = 0x04, .x = 0x0a}, + {.src = 0x6047, .y = 0x05, .x = 0x0a}, + {.src = 0x6023, .y = 0x05, .x = 0x0b}, + {.src = 0x6027, .y = 0x06, .x = 0x0b}, + {.src = 0x6047, .y = 0x07, .x = 0x0b}, + {.src = 0x6023, .y = 0x07, .x = 0x0c}, + {.src = 0x6027, .y = 0x08, .x = 0x0c}, + {.src = 0x6027, .y = 0x09, .x = 0x0c}, + {.src = 0x6027, .y = 0x0a, .x = 0x0c}, + {.src = 0x603b, .y = 0x0b, .x = 0x0c}, + {.src = 0x602c, .y = 0x0b, .x = 0x0d}, + {.src = 0x602d, .y = 0x0b, .x = 0x0e}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d4dc[] = +{ + {.src = 0x6021, .y = 0x06, .x = 0x09}, + {.src = 0x6021, .y = 0x06, .x = 0x0a}, + {.src = 0x6027, .y = 0x05, .x = 0x0a}, + {.src = 0x6043, .y = 0x05, .x = 0x0b}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d4ec[] = +{ + {.src = 0x6021, .y = 0x06, .x = 0x09}, + {.src = 0x6021, .y = 0x06, .x = 0x0a}, + {.src = 0x6027, .y = 0x05, .x = 0x0a}, + {.src = 0x6023, .y = 0x05, .x = 0x0b}, + {.src = 0x6027, .y = 0x06, .x = 0x0b}, + {.src = 0x6047, .y = 0x07, .x = 0x0b}, + {.src = 0x6043, .y = 0x07, .x = 0x0c}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d508[] = +{ + {.src = 0x6021, .y = 0x06, .x = 0x09}, + {.src = 0x6021, .y = 0x06, .x = 0x0a}, + {.src = 0x6027, .y = 0x05, .x = 0x0a}, + {.src = 0x6023, .y = 0x05, .x = 0x0b}, + {.src = 0x6027, .y = 0x06, .x = 0x0b}, + {.src = 0x6047, .y = 0x07, .x = 0x0b}, + {.src = 0x6023, .y = 0x07, .x = 0x0c}, + {.src = 0x6027, .y = 0x08, .x = 0x0c}, + {.src = 0x6027, .y = 0x09, .x = 0x0c}, + {.src = 0x6027, .y = 0x0a, .x = 0x0c}, + {.src = 0x603b, .y = 0x0b, .x = 0x0c}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d534[] = +{ + {.src = 0x6021, .y = 0x06, .x = 0x09}, + {.src = 0x6021, .y = 0x06, .x = 0x0a}, + {.src = 0x6027, .y = 0x05, .x = 0x0a}, + {.src = 0x6023, .y = 0x05, .x = 0x0b}, + {.src = 0x6027, .y = 0x06, .x = 0x0b}, + {.src = 0x6047, .y = 0x07, .x = 0x0b}, + {.src = 0x6023, .y = 0x07, .x = 0x0c}, + {.src = 0x6027, .y = 0x08, .x = 0x0c}, + {.src = 0x6027, .y = 0x09, .x = 0x0c}, + {.src = 0x6027, .y = 0x0a, .x = 0x0c}, + {.src = 0x603b, .y = 0x0b, .x = 0x0c}, + {.src = 0x602c, .y = 0x0b, .x = 0x0d}, + {.src = 0x602d, .y = 0x0b, .x = 0x0e}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d568[] = +{ + {.src = 0x6021, .y = 0x08, .x = 0x09}, + {.src = 0x6023, .y = 0x08, .x = 0x0a}, + {.src = 0x6047, .y = 0x09, .x = 0x0a}, + {.src = 0x6021, .y = 0x09, .x = 0x0b}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d578[] = +{ + {.src = 0x6021, .y = 0x08, .x = 0x09}, + {.src = 0x6023, .y = 0x08, .x = 0x0a}, + {.src = 0x6047, .y = 0x09, .x = 0x0a}, + {.src = 0x6021, .y = 0x09, .x = 0x0b}, + {.src = 0x6027, .y = 0x08, .x = 0x0b}, + {.src = 0x6027, .y = 0x07, .x = 0x0b}, + {.src = 0x6043, .y = 0x07, .x = 0x0c}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d594[] = +{ + {.src = 0x6021, .y = 0x08, .x = 0x09}, + {.src = 0x6023, .y = 0x08, .x = 0x0a}, + {.src = 0x6047, .y = 0x09, .x = 0x0a}, + {.src = 0x6021, .y = 0x09, .x = 0x0b}, + {.src = 0x6027, .y = 0x08, .x = 0x0b}, + {.src = 0x6027, .y = 0x07, .x = 0x0b}, + {.src = 0x6023, .y = 0x07, .x = 0x0c}, + {.src = 0x6027, .y = 0x08, .x = 0x0c}, + {.src = 0x6027, .y = 0x09, .x = 0x0c}, + {.src = 0x6027, .y = 0x0a, .x = 0x0c}, + {.src = 0x603b, .y = 0x0b, .x = 0x0c}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d5c0[] = +{ + {.src = 0x6021, .y = 0x08, .x = 0x09}, + {.src = 0x6023, .y = 0x08, .x = 0x0a}, + {.src = 0x6047, .y = 0x09, .x = 0x0a}, + {.src = 0x6021, .y = 0x09, .x = 0x0b}, + {.src = 0x6027, .y = 0x08, .x = 0x0b}, + {.src = 0x6027, .y = 0x07, .x = 0x0b}, + {.src = 0x6023, .y = 0x07, .x = 0x0c}, + {.src = 0x6027, .y = 0x08, .x = 0x0c}, + {.src = 0x6027, .y = 0x09, .x = 0x0c}, + {.src = 0x6027, .y = 0x0a, .x = 0x0c}, + {.src = 0x603b, .y = 0x0b, .x = 0x0c}, + {.src = 0x602c, .y = 0x0b, .x = 0x0d}, + {.src = 0x602d, .y = 0x0b, .x = 0x0e}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d5f4[] = +{ + {.src = 0x6021, .y = 0x0a, .x = 0x09}, + {.src = 0x6021, .y = 0x0a, .x = 0x0a}, + {.src = 0x6027, .y = 0x09, .x = 0x0a}, + {.src = 0x6021, .y = 0x09, .x = 0x0b}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d604[] = +{ + {.src = 0x6021, .y = 0x0a, .x = 0x09}, + {.src = 0x6021, .y = 0x0a, .x = 0x0a}, + {.src = 0x6027, .y = 0x09, .x = 0x0a}, + {.src = 0x6021, .y = 0x09, .x = 0x0b}, + {.src = 0x6027, .y = 0x08, .x = 0x0b}, + {.src = 0x6027, .y = 0x07, .x = 0x0b}, + {.src = 0x6043, .y = 0x07, .x = 0x0c}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d620[] = +{ + {.src = 0x6021, .y = 0x0a, .x = 0x09}, + {.src = 0x6021, .y = 0x0a, .x = 0x0a}, + {.src = 0x6027, .y = 0x09, .x = 0x0a}, + {.src = 0x6021, .y = 0x09, .x = 0x0b}, + {.src = 0x6027, .y = 0x08, .x = 0x0b}, + {.src = 0x6027, .y = 0x07, .x = 0x0b}, + {.src = 0x6023, .y = 0x07, .x = 0x0c}, + {.src = 0x6027, .y = 0x08, .x = 0x0c}, + {.src = 0x6027, .y = 0x09, .x = 0x0c}, + {.src = 0x6027, .y = 0x0a, .x = 0x0c}, + {.src = 0x603b, .y = 0x0b, .x = 0x0c}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d64c[] = +{ + {.src = 0x6021, .y = 0x0a, .x = 0x09}, + {.src = 0x6021, .y = 0x0a, .x = 0x0a}, + {.src = 0x6027, .y = 0x09, .x = 0x0a}, + {.src = 0x6021, .y = 0x09, .x = 0x0b}, + {.src = 0x6027, .y = 0x08, .x = 0x0b}, + {.src = 0x6027, .y = 0x07, .x = 0x0b}, + {.src = 0x6023, .y = 0x07, .x = 0x0c}, + {.src = 0x6027, .y = 0x08, .x = 0x0c}, + {.src = 0x6027, .y = 0x09, .x = 0x0c}, + {.src = 0x6027, .y = 0x0a, .x = 0x0c}, + {.src = 0x603b, .y = 0x0b, .x = 0x0c}, + {.src = 0x602c, .y = 0x0b, .x = 0x0d}, + {.src = 0x602d, .y = 0x0b, .x = 0x0e}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d680[] = +{ + {.src = 0x6021, .y = 0x0c, .x = 0x09}, + {.src = 0x6023, .y = 0x0c, .x = 0x0a}, + {.src = 0x6047, .y = 0x0d, .x = 0x0a}, + {.src = 0x6043, .y = 0x0d, .x = 0x0b}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d690[] = +{ + {.src = 0x6021, .y = 0x0c, .x = 0x09}, + {.src = 0x6023, .y = 0x0c, .x = 0x0a}, + {.src = 0x6047, .y = 0x0d, .x = 0x0a}, + {.src = 0x6023, .y = 0x0d, .x = 0x0b}, + {.src = 0x6027, .y = 0x0e, .x = 0x0b}, + {.src = 0x6047, .y = 0x0f, .x = 0x0b}, + {.src = 0x6021, .y = 0x0f, .x = 0x0c}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d6ac[] = +{ + {.src = 0x6021, .y = 0x0c, .x = 0x09}, + {.src = 0x6023, .y = 0x0c, .x = 0x0a}, + {.src = 0x6047, .y = 0x0d, .x = 0x0a}, + {.src = 0x6023, .y = 0x0d, .x = 0x0b}, + {.src = 0x6027, .y = 0x0e, .x = 0x0b}, + {.src = 0x6047, .y = 0x0f, .x = 0x0b}, + {.src = 0x6021, .y = 0x0f, .x = 0x0c}, + {.src = 0x6033, .y = 0x0e, .x = 0x0c}, + {.src = 0x6032, .y = 0x0d, .x = 0x0c}, + {.src = 0x6031, .y = 0x0c, .x = 0x0c}, + {.src = 0x6030, .y = 0x0b, .x = 0x0c}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d6d8[] = +{ + {.src = 0x6021, .y = 0x0c, .x = 0x09}, + {.src = 0x6023, .y = 0x0c, .x = 0x0a}, + {.src = 0x6047, .y = 0x0d, .x = 0x0a}, + {.src = 0x6023, .y = 0x0d, .x = 0x0b}, + {.src = 0x6027, .y = 0x0e, .x = 0x0b}, + {.src = 0x6047, .y = 0x0f, .x = 0x0b}, + {.src = 0x6021, .y = 0x0f, .x = 0x0c}, + {.src = 0x6033, .y = 0x0e, .x = 0x0c}, + {.src = 0x6032, .y = 0x0d, .x = 0x0c}, + {.src = 0x6031, .y = 0x0c, .x = 0x0c}, + {.src = 0x6030, .y = 0x0b, .x = 0x0c}, + {.src = 0x602c, .y = 0x0b, .x = 0x0d}, + {.src = 0x602d, .y = 0x0b, .x = 0x0e}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d70c[] = +{ + {.src = 0x6021, .y = 0x0e, .x = 0x09}, + {.src = 0x6021, .y = 0x0e, .x = 0x0a}, + {.src = 0x6027, .y = 0x0d, .x = 0x0a}, + {.src = 0x6043, .y = 0x0d, .x = 0x0b}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d71c[] = +{ + {.src = 0x6021, .y = 0x0e, .x = 0x09}, + {.src = 0x6021, .y = 0x0e, .x = 0x0a}, + {.src = 0x6027, .y = 0x0d, .x = 0x0a}, + {.src = 0x6023, .y = 0x0d, .x = 0x0b}, + {.src = 0x6027, .y = 0x0e, .x = 0x0b}, + {.src = 0x6047, .y = 0x0f, .x = 0x0b}, + {.src = 0x6021, .y = 0x0f, .x = 0x0c}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d738[] = +{ + {.src = 0x6021, .y = 0x0e, .x = 0x09}, + {.src = 0x6021, .y = 0x0e, .x = 0x0a}, + {.src = 0x6027, .y = 0x0d, .x = 0x0a}, + {.src = 0x6023, .y = 0x0d, .x = 0x0b}, + {.src = 0x6027, .y = 0x0e, .x = 0x0b}, + {.src = 0x6047, .y = 0x0f, .x = 0x0b}, + {.src = 0x6021, .y = 0x0f, .x = 0x0c}, + {.src = 0x6033, .y = 0x0e, .x = 0x0c}, + {.src = 0x6032, .y = 0x0d, .x = 0x0c}, + {.src = 0x6031, .y = 0x0c, .x = 0x0c}, + {.src = 0x6030, .y = 0x0b, .x = 0x0c}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d764[] = +{ + {.src = 0x6021, .y = 0x0e, .x = 0x09}, + {.src = 0x6021, .y = 0x0e, .x = 0x0a}, + {.src = 0x6027, .y = 0x0d, .x = 0x0a}, + {.src = 0x6023, .y = 0x0d, .x = 0x0b}, + {.src = 0x6027, .y = 0x0e, .x = 0x0b}, + {.src = 0x6047, .y = 0x0f, .x = 0x0b}, + {.src = 0x6021, .y = 0x0f, .x = 0x0c}, + {.src = 0x6033, .y = 0x0e, .x = 0x0c}, + {.src = 0x6032, .y = 0x0d, .x = 0x0c}, + {.src = 0x6031, .y = 0x0c, .x = 0x0c}, + {.src = 0x6030, .y = 0x0b, .x = 0x0c}, + {.src = 0x602c, .y = 0x0b, .x = 0x0d}, + {.src = 0x602d, .y = 0x0b, .x = 0x0e}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d798[] = +{ + {.src = 0x6021, .y = 0x10, .x = 0x09}, + {.src = 0x6023, .y = 0x10, .x = 0x0a}, + {.src = 0x6047, .y = 0x11, .x = 0x0a}, + {.src = 0x6021, .y = 0x11, .x = 0x0b}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d7a8[] = +{ + {.src = 0x6021, .y = 0x10, .x = 0x09}, + {.src = 0x6023, .y = 0x10, .x = 0x0a}, + {.src = 0x6047, .y = 0x11, .x = 0x0a}, + {.src = 0x6021, .y = 0x11, .x = 0x0b}, + {.src = 0x6027, .y = 0x10, .x = 0x0b}, + {.src = 0x6027, .y = 0x0f, .x = 0x0b}, + {.src = 0x6021, .y = 0x0f, .x = 0x0c}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d7c4[] = +{ + {.src = 0x6021, .y = 0x10, .x = 0x09}, + {.src = 0x6023, .y = 0x10, .x = 0x0a}, + {.src = 0x6047, .y = 0x11, .x = 0x0a}, + {.src = 0x6021, .y = 0x11, .x = 0x0b}, + {.src = 0x6027, .y = 0x10, .x = 0x0b}, + {.src = 0x6027, .y = 0x0f, .x = 0x0b}, + {.src = 0x6021, .y = 0x0f, .x = 0x0c}, + {.src = 0x6033, .y = 0x0e, .x = 0x0c}, + {.src = 0x6032, .y = 0x0d, .x = 0x0c}, + {.src = 0x6031, .y = 0x0c, .x = 0x0c}, + {.src = 0x6030, .y = 0x0b, .x = 0x0c}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d7f0[] = +{ + {.src = 0x6021, .y = 0x10, .x = 0x09}, + {.src = 0x6023, .y = 0x10, .x = 0x0a}, + {.src = 0x6047, .y = 0x11, .x = 0x0a}, + {.src = 0x6021, .y = 0x11, .x = 0x0b}, + {.src = 0x6027, .y = 0x10, .x = 0x0b}, + {.src = 0x6027, .y = 0x0f, .x = 0x0b}, + {.src = 0x6021, .y = 0x0f, .x = 0x0c}, + {.src = 0x6033, .y = 0x0e, .x = 0x0c}, + {.src = 0x6032, .y = 0x0d, .x = 0x0c}, + {.src = 0x6031, .y = 0x0c, .x = 0x0c}, + {.src = 0x6030, .y = 0x0b, .x = 0x0c}, + {.src = 0x602c, .y = 0x0b, .x = 0x0d}, + {.src = 0x602d, .y = 0x0b, .x = 0x0e}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d824[] = +{ + {.src = 0x602b, .y = 0x12, .x = 0x09}, + {.src = 0x602b, .y = 0x12, .x = 0x0a}, + {.src = 0x6027, .y = 0x11, .x = 0x0a}, + {.src = 0x6021, .y = 0x11, .x = 0x0b}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d834[] = +{ + {.src = 0x602b, .y = 0x12, .x = 0x09}, + {.src = 0x602b, .y = 0x12, .x = 0x0a}, + {.src = 0x6027, .y = 0x11, .x = 0x0a}, + {.src = 0x6021, .y = 0x11, .x = 0x0b}, + {.src = 0x6027, .y = 0x10, .x = 0x0b}, + {.src = 0x6027, .y = 0x0f, .x = 0x0b}, + {.src = 0x6021, .y = 0x0f, .x = 0x0c}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d850[] = +{ + {.src = 0x602b, .y = 0x12, .x = 0x09}, + {.src = 0x602b, .y = 0x12, .x = 0x0a}, + {.src = 0x6027, .y = 0x11, .x = 0x0a}, + {.src = 0x6021, .y = 0x11, .x = 0x0b}, + {.src = 0x6027, .y = 0x10, .x = 0x0b}, + {.src = 0x6027, .y = 0x0f, .x = 0x0b}, + {.src = 0x6021, .y = 0x0f, .x = 0x0c}, + {.src = 0x6033, .y = 0x0e, .x = 0x0c}, + {.src = 0x6032, .y = 0x0d, .x = 0x0c}, + {.src = 0x6031, .y = 0x0c, .x = 0x0c}, + {.src = 0x6030, .y = 0x0b, .x = 0x0c}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d87c[] = +{ + {.src = 0x602b, .y = 0x12, .x = 0x09}, + {.src = 0x602b, .y = 0x12, .x = 0x0a}, + {.src = 0x6027, .y = 0x11, .x = 0x0a}, + {.src = 0x6021, .y = 0x11, .x = 0x0b}, + {.src = 0x6027, .y = 0x10, .x = 0x0b}, + {.src = 0x6027, .y = 0x0f, .x = 0x0b}, + {.src = 0x6021, .y = 0x0f, .x = 0x0c}, + {.src = 0x6033, .y = 0x0e, .x = 0x0c}, + {.src = 0x6032, .y = 0x0d, .x = 0x0c}, + {.src = 0x6031, .y = 0x0c, .x = 0x0c}, + {.src = 0x6030, .y = 0x0b, .x = 0x0c}, + {.src = 0x602c, .y = 0x0b, .x = 0x0d}, + {.src = 0x602d, .y = 0x0b, .x = 0x0e}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d8b0[] = +{ + {.src = 0x6021, .y = 0x04, .x = 0x14}, + {.src = 0x6025, .y = 0x04, .x = 0x13}, + {.src = 0x6049, .y = 0x05, .x = 0x13}, + {.src = 0x6045, .y = 0x05, .x = 0x12}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d8c0[] = +{ + {.src = 0x6021, .y = 0x04, .x = 0x14}, + {.src = 0x6025, .y = 0x04, .x = 0x13}, + {.src = 0x6049, .y = 0x05, .x = 0x13}, + {.src = 0x6025, .y = 0x05, .x = 0x12}, + {.src = 0x6029, .y = 0x06, .x = 0x12}, + {.src = 0x6049, .y = 0x07, .x = 0x12}, + {.src = 0x6045, .y = 0x07, .x = 0x11}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d8dc[] = +{ + {.src = 0x6021, .y = 0x04, .x = 0x14}, + {.src = 0x6025, .y = 0x04, .x = 0x13}, + {.src = 0x6049, .y = 0x05, .x = 0x13}, + {.src = 0x6025, .y = 0x05, .x = 0x12}, + {.src = 0x6029, .y = 0x06, .x = 0x12}, + {.src = 0x6049, .y = 0x07, .x = 0x12}, + {.src = 0x6025, .y = 0x07, .x = 0x11}, + {.src = 0x6029, .y = 0x08, .x = 0x11}, + {.src = 0x6029, .y = 0x09, .x = 0x11}, + {.src = 0x6029, .y = 0x0a, .x = 0x11}, + {.src = 0x603c, .y = 0x0b, .x = 0x11}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d908[] = +{ + {.src = 0x6021, .y = 0x04, .x = 0x14}, + {.src = 0x6025, .y = 0x04, .x = 0x13}, + {.src = 0x6049, .y = 0x05, .x = 0x13}, + {.src = 0x6025, .y = 0x05, .x = 0x12}, + {.src = 0x6029, .y = 0x06, .x = 0x12}, + {.src = 0x6049, .y = 0x07, .x = 0x12}, + {.src = 0x6025, .y = 0x07, .x = 0x11}, + {.src = 0x6029, .y = 0x08, .x = 0x11}, + {.src = 0x6029, .y = 0x09, .x = 0x11}, + {.src = 0x6029, .y = 0x0a, .x = 0x11}, + {.src = 0x603c, .y = 0x0b, .x = 0x11}, + {.src = 0x602f, .y = 0x0b, .x = 0x10}, + {.src = 0x602e, .y = 0x0b, .x = 0x0f}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d93c[] = +{ + {.src = 0x6021, .y = 0x06, .x = 0x14}, + {.src = 0x6021, .y = 0x06, .x = 0x13}, + {.src = 0x6029, .y = 0x05, .x = 0x13}, + {.src = 0x6045, .y = 0x05, .x = 0x12}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d94c[] = +{ + {.src = 0x6021, .y = 0x06, .x = 0x14}, + {.src = 0x6021, .y = 0x06, .x = 0x13}, + {.src = 0x6029, .y = 0x05, .x = 0x13}, + {.src = 0x6025, .y = 0x05, .x = 0x12}, + {.src = 0x6029, .y = 0x06, .x = 0x12}, + {.src = 0x6049, .y = 0x07, .x = 0x12}, + {.src = 0x6045, .y = 0x07, .x = 0x11}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d968[] = +{ + {.src = 0x6021, .y = 0x06, .x = 0x14}, + {.src = 0x6021, .y = 0x06, .x = 0x13}, + {.src = 0x6029, .y = 0x05, .x = 0x13}, + {.src = 0x6025, .y = 0x05, .x = 0x12}, + {.src = 0x6029, .y = 0x06, .x = 0x12}, + {.src = 0x6049, .y = 0x07, .x = 0x12}, + {.src = 0x6025, .y = 0x07, .x = 0x11}, + {.src = 0x6029, .y = 0x08, .x = 0x11}, + {.src = 0x6029, .y = 0x09, .x = 0x11}, + {.src = 0x6029, .y = 0x0a, .x = 0x11}, + {.src = 0x603c, .y = 0x0b, .x = 0x11}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d994[] = +{ + {.src = 0x6021, .y = 0x06, .x = 0x14}, + {.src = 0x6021, .y = 0x06, .x = 0x13}, + {.src = 0x6029, .y = 0x05, .x = 0x13}, + {.src = 0x6025, .y = 0x05, .x = 0x12}, + {.src = 0x6029, .y = 0x06, .x = 0x12}, + {.src = 0x6049, .y = 0x07, .x = 0x12}, + {.src = 0x6025, .y = 0x07, .x = 0x11}, + {.src = 0x6029, .y = 0x08, .x = 0x11}, + {.src = 0x6029, .y = 0x09, .x = 0x11}, + {.src = 0x6029, .y = 0x0a, .x = 0x11}, + {.src = 0x603c, .y = 0x0b, .x = 0x11}, + {.src = 0x602f, .y = 0x0b, .x = 0x10}, + {.src = 0x602e, .y = 0x0b, .x = 0x0f}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d9c8[] = +{ + {.src = 0x6021, .y = 0x08, .x = 0x14}, + {.src = 0x6025, .y = 0x08, .x = 0x13}, + {.src = 0x6049, .y = 0x09, .x = 0x13}, + {.src = 0x6021, .y = 0x09, .x = 0x12}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d9d8[] = +{ + {.src = 0x6021, .y = 0x08, .x = 0x14}, + {.src = 0x6025, .y = 0x08, .x = 0x13}, + {.src = 0x6049, .y = 0x09, .x = 0x13}, + {.src = 0x6021, .y = 0x09, .x = 0x12}, + {.src = 0x6029, .y = 0x08, .x = 0x12}, + {.src = 0x6029, .y = 0x07, .x = 0x12}, + {.src = 0x6045, .y = 0x07, .x = 0x11}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860d9f4[] = +{ + {.src = 0x6021, .y = 0x08, .x = 0x14}, + {.src = 0x6025, .y = 0x08, .x = 0x13}, + {.src = 0x6049, .y = 0x09, .x = 0x13}, + {.src = 0x6021, .y = 0x09, .x = 0x12}, + {.src = 0x6029, .y = 0x08, .x = 0x12}, + {.src = 0x6029, .y = 0x07, .x = 0x12}, + {.src = 0x6025, .y = 0x07, .x = 0x11}, + {.src = 0x6029, .y = 0x08, .x = 0x11}, + {.src = 0x6029, .y = 0x09, .x = 0x11}, + {.src = 0x6029, .y = 0x0a, .x = 0x11}, + {.src = 0x603c, .y = 0x0b, .x = 0x11}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860da20[] = +{ + {.src = 0x6021, .y = 0x08, .x = 0x14}, + {.src = 0x6025, .y = 0x08, .x = 0x13}, + {.src = 0x6049, .y = 0x09, .x = 0x13}, + {.src = 0x6021, .y = 0x09, .x = 0x12}, + {.src = 0x6029, .y = 0x08, .x = 0x12}, + {.src = 0x6029, .y = 0x07, .x = 0x12}, + {.src = 0x6025, .y = 0x07, .x = 0x11}, + {.src = 0x6029, .y = 0x08, .x = 0x11}, + {.src = 0x6029, .y = 0x09, .x = 0x11}, + {.src = 0x6029, .y = 0x0a, .x = 0x11}, + {.src = 0x603c, .y = 0x0b, .x = 0x11}, + {.src = 0x602f, .y = 0x0b, .x = 0x10}, + {.src = 0x602e, .y = 0x0b, .x = 0x0f}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860da54[] = +{ + {.src = 0x6021, .y = 0x0a, .x = 0x14}, + {.src = 0x6021, .y = 0x0a, .x = 0x13}, + {.src = 0x6029, .y = 0x09, .x = 0x13}, + {.src = 0x6021, .y = 0x09, .x = 0x12}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860da64[] = +{ + {.src = 0x6021, .y = 0x0a, .x = 0x14}, + {.src = 0x6021, .y = 0x0a, .x = 0x13}, + {.src = 0x6029, .y = 0x09, .x = 0x13}, + {.src = 0x6021, .y = 0x09, .x = 0x12}, + {.src = 0x6029, .y = 0x08, .x = 0x12}, + {.src = 0x6029, .y = 0x07, .x = 0x12}, + {.src = 0x6045, .y = 0x07, .x = 0x11}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860da80[] = +{ + {.src = 0x6021, .y = 0x0a, .x = 0x14}, + {.src = 0x6021, .y = 0x0a, .x = 0x13}, + {.src = 0x6029, .y = 0x09, .x = 0x13}, + {.src = 0x6021, .y = 0x09, .x = 0x12}, + {.src = 0x6029, .y = 0x08, .x = 0x12}, + {.src = 0x6029, .y = 0x07, .x = 0x12}, + {.src = 0x6025, .y = 0x07, .x = 0x11}, + {.src = 0x6029, .y = 0x08, .x = 0x11}, + {.src = 0x6029, .y = 0x09, .x = 0x11}, + {.src = 0x6029, .y = 0x0a, .x = 0x11}, + {.src = 0x603c, .y = 0x0b, .x = 0x11}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860daac[] = +{ + {.src = 0x6021, .y = 0x0a, .x = 0x14}, + {.src = 0x6021, .y = 0x0a, .x = 0x13}, + {.src = 0x6029, .y = 0x09, .x = 0x13}, + {.src = 0x6021, .y = 0x09, .x = 0x12}, + {.src = 0x6029, .y = 0x08, .x = 0x12}, + {.src = 0x6029, .y = 0x07, .x = 0x12}, + {.src = 0x6025, .y = 0x07, .x = 0x11}, + {.src = 0x6029, .y = 0x08, .x = 0x11}, + {.src = 0x6029, .y = 0x09, .x = 0x11}, + {.src = 0x6029, .y = 0x0a, .x = 0x11}, + {.src = 0x603c, .y = 0x0b, .x = 0x11}, + {.src = 0x602f, .y = 0x0b, .x = 0x10}, + {.src = 0x602e, .y = 0x0b, .x = 0x0f}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860dae0[] = +{ + {.src = 0x6021, .y = 0x0c, .x = 0x14}, + {.src = 0x6025, .y = 0x0c, .x = 0x13}, + {.src = 0x6049, .y = 0x0d, .x = 0x13}, + {.src = 0x6045, .y = 0x0d, .x = 0x12}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860daf0[] = +{ + {.src = 0x6021, .y = 0x0c, .x = 0x14}, + {.src = 0x6025, .y = 0x0c, .x = 0x13}, + {.src = 0x6049, .y = 0x0d, .x = 0x13}, + {.src = 0x6025, .y = 0x0d, .x = 0x12}, + {.src = 0x6029, .y = 0x0e, .x = 0x12}, + {.src = 0x6049, .y = 0x0f, .x = 0x12}, + {.src = 0x6021, .y = 0x0f, .x = 0x11}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860db0c[] = +{ + {.src = 0x6021, .y = 0x0c, .x = 0x14}, + {.src = 0x6025, .y = 0x0c, .x = 0x13}, + {.src = 0x6049, .y = 0x0d, .x = 0x13}, + {.src = 0x6025, .y = 0x0d, .x = 0x12}, + {.src = 0x6029, .y = 0x0e, .x = 0x12}, + {.src = 0x6049, .y = 0x0f, .x = 0x12}, + {.src = 0x6021, .y = 0x0f, .x = 0x11}, + {.src = 0x6038, .y = 0x0e, .x = 0x11}, + {.src = 0x6037, .y = 0x0d, .x = 0x11}, + {.src = 0x6036, .y = 0x0c, .x = 0x11}, + {.src = 0x6035, .y = 0x0b, .x = 0x11}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860db38[] = +{ + {.src = 0x6021, .y = 0x0c, .x = 0x14}, + {.src = 0x6025, .y = 0x0c, .x = 0x13}, + {.src = 0x6049, .y = 0x0d, .x = 0x13}, + {.src = 0x6025, .y = 0x0d, .x = 0x12}, + {.src = 0x6029, .y = 0x0e, .x = 0x12}, + {.src = 0x6049, .y = 0x0f, .x = 0x12}, + {.src = 0x6021, .y = 0x0f, .x = 0x11}, + {.src = 0x6038, .y = 0x0e, .x = 0x11}, + {.src = 0x6037, .y = 0x0d, .x = 0x11}, + {.src = 0x6036, .y = 0x0c, .x = 0x11}, + {.src = 0x6035, .y = 0x0b, .x = 0x11}, + {.src = 0x602f, .y = 0x0b, .x = 0x10}, + {.src = 0x602e, .y = 0x0b, .x = 0x0f}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860db6c[] = +{ + {.src = 0x6021, .y = 0x0e, .x = 0x14}, + {.src = 0x6021, .y = 0x0e, .x = 0x13}, + {.src = 0x6029, .y = 0x0d, .x = 0x13}, + {.src = 0x6045, .y = 0x0d, .x = 0x12}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860db7c[] = +{ + {.src = 0x6021, .y = 0x0e, .x = 0x14}, + {.src = 0x6021, .y = 0x0e, .x = 0x13}, + {.src = 0x6029, .y = 0x0d, .x = 0x13}, + {.src = 0x6025, .y = 0x0d, .x = 0x12}, + {.src = 0x6029, .y = 0x0e, .x = 0x12}, + {.src = 0x6049, .y = 0x0f, .x = 0x12}, + {.src = 0x6021, .y = 0x0f, .x = 0x11}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860db98[] = +{ + {.src = 0x6021, .y = 0x0e, .x = 0x14}, + {.src = 0x6021, .y = 0x0e, .x = 0x13}, + {.src = 0x6029, .y = 0x0d, .x = 0x13}, + {.src = 0x6025, .y = 0x0d, .x = 0x12}, + {.src = 0x6029, .y = 0x0e, .x = 0x12}, + {.src = 0x6049, .y = 0x0f, .x = 0x12}, + {.src = 0x6021, .y = 0x0f, .x = 0x11}, + {.src = 0x6038, .y = 0x0e, .x = 0x11}, + {.src = 0x6037, .y = 0x0d, .x = 0x11}, + {.src = 0x6036, .y = 0x0c, .x = 0x11}, + {.src = 0x6035, .y = 0x0b, .x = 0x11}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860dbc4[] = +{ + {.src = 0x6021, .y = 0x0e, .x = 0x14}, + {.src = 0x6021, .y = 0x0e, .x = 0x13}, + {.src = 0x6029, .y = 0x0d, .x = 0x13}, + {.src = 0x6025, .y = 0x0d, .x = 0x12}, + {.src = 0x6029, .y = 0x0e, .x = 0x12}, + {.src = 0x6049, .y = 0x0f, .x = 0x12}, + {.src = 0x6021, .y = 0x0f, .x = 0x11}, + {.src = 0x6038, .y = 0x0e, .x = 0x11}, + {.src = 0x6037, .y = 0x0d, .x = 0x11}, + {.src = 0x6036, .y = 0x0c, .x = 0x11}, + {.src = 0x6035, .y = 0x0b, .x = 0x11}, + {.src = 0x602f, .y = 0x0b, .x = 0x10}, + {.src = 0x602e, .y = 0x0b, .x = 0x0f}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860dbf8[] = +{ + {.src = 0x6021, .y = 0x10, .x = 0x14}, + {.src = 0x6025, .y = 0x10, .x = 0x13}, + {.src = 0x6049, .y = 0x11, .x = 0x13}, + {.src = 0x6021, .y = 0x11, .x = 0x12}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860dc08[] = +{ + {.src = 0x6021, .y = 0x10, .x = 0x14}, + {.src = 0x6025, .y = 0x10, .x = 0x13}, + {.src = 0x6049, .y = 0x11, .x = 0x13}, + {.src = 0x6021, .y = 0x11, .x = 0x12}, + {.src = 0x6029, .y = 0x10, .x = 0x12}, + {.src = 0x6029, .y = 0x0f, .x = 0x12}, + {.src = 0x6021, .y = 0x0f, .x = 0x11}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860dc24[] = +{ + {.src = 0x6021, .y = 0x10, .x = 0x14}, + {.src = 0x6025, .y = 0x10, .x = 0x13}, + {.src = 0x6049, .y = 0x11, .x = 0x13}, + {.src = 0x6021, .y = 0x11, .x = 0x12}, + {.src = 0x6029, .y = 0x10, .x = 0x12}, + {.src = 0x6029, .y = 0x0f, .x = 0x12}, + {.src = 0x6021, .y = 0x0f, .x = 0x11}, + {.src = 0x6038, .y = 0x0e, .x = 0x11}, + {.src = 0x6037, .y = 0x0d, .x = 0x11}, + {.src = 0x6036, .y = 0x0c, .x = 0x11}, + {.src = 0x6035, .y = 0x0b, .x = 0x11}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860dc50[] = +{ + {.src = 0x6021, .y = 0x10, .x = 0x14}, + {.src = 0x6025, .y = 0x10, .x = 0x13}, + {.src = 0x6049, .y = 0x11, .x = 0x13}, + {.src = 0x6021, .y = 0x11, .x = 0x12}, + {.src = 0x6029, .y = 0x10, .x = 0x12}, + {.src = 0x6029, .y = 0x0f, .x = 0x12}, + {.src = 0x6021, .y = 0x0f, .x = 0x11}, + {.src = 0x6038, .y = 0x0e, .x = 0x11}, + {.src = 0x6037, .y = 0x0d, .x = 0x11}, + {.src = 0x6036, .y = 0x0c, .x = 0x11}, + {.src = 0x6035, .y = 0x0b, .x = 0x11}, + {.src = 0x602f, .y = 0x0b, .x = 0x10}, + {.src = 0x602e, .y = 0x0b, .x = 0x0f}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860dc84[] = +{ + {.src = 0x602b, .y = 0x12, .x = 0x14}, + {.src = 0x602b, .y = 0x12, .x = 0x13}, + {.src = 0x6029, .y = 0x11, .x = 0x13}, + {.src = 0x6021, .y = 0x11, .x = 0x12}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860dc94[] = +{ + {.src = 0x602b, .y = 0x12, .x = 0x14}, + {.src = 0x602b, .y = 0x12, .x = 0x13}, + {.src = 0x6029, .y = 0x11, .x = 0x13}, + {.src = 0x6021, .y = 0x11, .x = 0x12}, + {.src = 0x6029, .y = 0x10, .x = 0x12}, + {.src = 0x6029, .y = 0x0f, .x = 0x12}, + {.src = 0x6021, .y = 0x0f, .x = 0x11}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860dcb0[] = +{ + {.src = 0x602b, .y = 0x12, .x = 0x14}, + {.src = 0x602b, .y = 0x12, .x = 0x13}, + {.src = 0x6029, .y = 0x11, .x = 0x13}, + {.src = 0x6021, .y = 0x11, .x = 0x12}, + {.src = 0x6029, .y = 0x10, .x = 0x12}, + {.src = 0x6029, .y = 0x0f, .x = 0x12}, + {.src = 0x6021, .y = 0x0f, .x = 0x11}, + {.src = 0x6038, .y = 0x0e, .x = 0x11}, + {.src = 0x6037, .y = 0x0d, .x = 0x11}, + {.src = 0x6036, .y = 0x0c, .x = 0x11}, + {.src = 0x6035, .y = 0x0b, .x = 0x11}, +}; + +static const struct UnkStruct_860DD10 gUnknown_0860dcdc[] = +{ + {.src = 0x602b, .y = 0x12, .x = 0x14}, + {.src = 0x602b, .y = 0x12, .x = 0x13}, + {.src = 0x6029, .y = 0x11, .x = 0x13}, + {.src = 0x6021, .y = 0x11, .x = 0x12}, + {.src = 0x6029, .y = 0x10, .x = 0x12}, + {.src = 0x6029, .y = 0x0f, .x = 0x12}, + {.src = 0x6021, .y = 0x0f, .x = 0x11}, + {.src = 0x6038, .y = 0x0e, .x = 0x11}, + {.src = 0x6037, .y = 0x0d, .x = 0x11}, + {.src = 0x6036, .y = 0x0c, .x = 0x11}, + {.src = 0x6035, .y = 0x0b, .x = 0x11}, + {.src = 0x602f, .y = 0x0b, .x = 0x10}, + {.src = 0x602e, .y = 0x0b, .x = 0x0f}, +}; + +static const struct UnkStruct_860DD10 * const gUnknown_0860DD10[DOME_TOURNAMENT_TRAINERS_COUNT][4] = +{ + {gUnknown_0860d450, gUnknown_0860d460, gUnknown_0860d47c, gUnknown_0860d4a8}, + {gUnknown_0860dc84, gUnknown_0860dc94, gUnknown_0860dcb0, gUnknown_0860dcdc}, + {gUnknown_0860d8b0, gUnknown_0860d8c0, gUnknown_0860d8dc, gUnknown_0860d908}, + {gUnknown_0860d824, gUnknown_0860d834, gUnknown_0860d850, gUnknown_0860d87c}, + {gUnknown_0860d5f4, gUnknown_0860d604, gUnknown_0860d620, gUnknown_0860d64c}, + {gUnknown_0860dae0, gUnknown_0860daf0, gUnknown_0860db0c, gUnknown_0860db38}, + {gUnknown_0860da54, gUnknown_0860da64, gUnknown_0860da80, gUnknown_0860daac}, + {gUnknown_0860d680, gUnknown_0860d690, gUnknown_0860d6ac, gUnknown_0860d6d8}, + {gUnknown_0860d4dc, gUnknown_0860d4ec, gUnknown_0860d508, gUnknown_0860d534}, + {gUnknown_0860dbf8, gUnknown_0860dc08, gUnknown_0860dc24, gUnknown_0860dc50}, + {gUnknown_0860d93c, gUnknown_0860d94c, gUnknown_0860d968, gUnknown_0860d994}, + {gUnknown_0860d798, gUnknown_0860d7a8, gUnknown_0860d7c4, gUnknown_0860d7f0}, + {gUnknown_0860d568, gUnknown_0860d578, gUnknown_0860d594, gUnknown_0860d5c0}, + {gUnknown_0860db6c, gUnknown_0860db7c, gUnknown_0860db98, gUnknown_0860dbc4}, + {gUnknown_0860d9c8, gUnknown_0860d9d8, gUnknown_0860d9f4, gUnknown_0860da20}, + {gUnknown_0860d70c, gUnknown_0860d71c, gUnknown_0860d738, gUnknown_0860d764}, +}; + +static const u8 gUnknown_0860DE10[DOME_TOURNAMENT_TRAINERS_COUNT][4] = +{ + {0x04, 0x07, 0x0b, 0x0d}, + {0x04, 0x07, 0x0b, 0x0d}, + {0x04, 0x07, 0x0b, 0x0d}, + {0x04, 0x07, 0x0b, 0x0d}, + {0x04, 0x07, 0x0b, 0x0d}, + {0x04, 0x07, 0x0b, 0x0d}, + {0x04, 0x07, 0x0b, 0x0d}, + {0x04, 0x07, 0x0b, 0x0d}, + {0x04, 0x07, 0x0b, 0x0d}, + {0x04, 0x07, 0x0b, 0x0d}, + {0x04, 0x07, 0x0b, 0x0d}, + {0x04, 0x07, 0x0b, 0x0d}, + {0x04, 0x07, 0x0b, 0x0d}, + {0x04, 0x07, 0x0b, 0x0d}, + {0x04, 0x07, 0x0b, 0x0d}, + {0x04, 0x07, 0x0b, 0x0d}, +}; + +// code +void CallBattleDomeFunction(void) +{ + gUnknown_0860D090[gSpecialVar_0x8004](); +} + +static void sub_818E9CC(void) +{ + u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; + u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); + + gSaveBlock2Ptr->frontier.field_CA8 = 0; + gSaveBlock2Ptr->frontier.field_CB2 = 0; + gSaveBlock2Ptr->frontier.field_CA9_a = 0; + gSaveBlock2Ptr->frontier.field_CA9_b = 0; + if (!(gSaveBlock2Ptr->frontier.field_CDC & gUnknown_0860D0EC[battleMode][lvlMode])) + gSaveBlock2Ptr->frontier.field_D0C[battleMode][lvlMode] = 0; + + saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1); + gTrainerBattleOpponent_A = 0; +} + +static void sub_818EA84(void) +{ + u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; + u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); + + switch (gSpecialVar_0x8005) + { + case 0: + gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D0C[battleMode][lvlMode]; + break; + case 1: + gSpecialVar_Result = ((gSaveBlock2Ptr->frontier.field_CDC & gUnknown_0860D0EC[battleMode][lvlMode]) != 0); + break; + case 2: + gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_0; + break; + case 3: + gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_1; + break; + case 4: + gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_2; + break; + case 5: + gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_3; + break; + case 6: + if (VarGet(VAR_FRONTIER_BATTLE_MODE) == FRONTIER_MODE_DOUBLES) + { + if (lvlMode) + gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_5; + else + gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_4; + } + else + { + if (lvlMode) + gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_1; + else + gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_0; + } + break; + case 7: + if (VarGet(VAR_FRONTIER_BATTLE_MODE) == FRONTIER_MODE_DOUBLES) + { + if (lvlMode) + gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_7; + else + gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_6; + } + else + { + if (lvlMode) + gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_3; + else + gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_2; + } + break; + case 8: + sub_81B8558(); + gUnknown_0203CEF8[0] = gSaveBlock2Ptr->frontier.field_CB0; + gUnknown_0203CEF8[1] = gSaveBlock2Ptr->frontier.field_CB0 >> 8; + break; + case 9: + gSpecialVar_Result = (gSaveBlock2Ptr->frontier.field_D0A * 2) - 3 + gSaveBlock2Ptr->frontier.field_D0B; + break; + } +} + +static void sub_818ED28(void) +{ + u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; + u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); + + switch (gSpecialVar_0x8005) + { + case 0: + gSaveBlock2Ptr->frontier.field_D0C[battleMode][lvlMode] = gSpecialVar_0x8006; + break; + case 1: + if (gSpecialVar_0x8006) + gSaveBlock2Ptr->frontier.field_CDC |= gUnknown_0860D0EC[battleMode][lvlMode]; + else + gSaveBlock2Ptr->frontier.field_CDC &= gUnknown_0860D0FC[battleMode][lvlMode]; + break; + case 2: + gSaveBlock2Ptr->frontier.field_D08_0 = gSpecialVar_0x8006; + break; + case 3: + gSaveBlock2Ptr->frontier.field_D08_1 = gSpecialVar_0x8006; + break; + case 4: + gSaveBlock2Ptr->frontier.field_D08_2 = gSpecialVar_0x8006; + break; + case 5: + gSaveBlock2Ptr->frontier.field_D08_3 = gSpecialVar_0x8006; + break; + case 6: + if (VarGet(VAR_FRONTIER_BATTLE_MODE) == FRONTIER_MODE_DOUBLES) + { + if (lvlMode) + gSaveBlock2Ptr->frontier.field_D08_5 = gSpecialVar_0x8006; + else + gSaveBlock2Ptr->frontier.field_D08_4 = gSpecialVar_0x8006; + } + else + { + if (lvlMode) + gSaveBlock2Ptr->frontier.field_D08_1 = gSpecialVar_0x8006; + else + gSaveBlock2Ptr->frontier.field_D08_0 = gSpecialVar_0x8006; + } + break; + case 7: + if (VarGet(VAR_FRONTIER_BATTLE_MODE) == FRONTIER_MODE_DOUBLES) + { + if (lvlMode) + gSaveBlock2Ptr->frontier.field_D08_7 = gSpecialVar_0x8006; + else + gSaveBlock2Ptr->frontier.field_D08_6 = gSpecialVar_0x8006; + } + else + { + if (lvlMode) + gSaveBlock2Ptr->frontier.field_D08_3 = gSpecialVar_0x8006; + else + gSaveBlock2Ptr->frontier.field_D08_2 = gSpecialVar_0x8006; + } + break; + case 8: + gSaveBlock2Ptr->frontier.field_CB0 = T1_READ_16(gUnknown_0203CEF8); + break; + } +} + +static void InitDomeTrainers(void) +{ + s32 i, j, k; + s32 monLevel; + s32 species[3]; + s32 monTypesBits, monTypesCount; + s32 trainerId; + s32 monTournamentId; + u16 *statSums; + s32 *statValues; + u8 ivs = 0; + + species[0] = 0; + species[1] = 0; + species[2] = 0; + statSums = AllocZeroed(sizeof(u16) * DOME_TOURNAMENT_TRAINERS_COUNT); + statValues = AllocZeroed(sizeof(s32) * 6); + + gSaveBlock2Ptr->frontier.field_D0A = gSaveBlock2Ptr->frontier.lvlMode + 1; + gSaveBlock2Ptr->frontier.field_D0B = VarGet(VAR_FRONTIER_BATTLE_MODE) + 1; + gSaveBlock2Ptr->frontier.domeTrainers[0].trainerId = TRAINER_PLAYER; + gSaveBlock2Ptr->frontier.domeTrainers[0].isEliminated = 0; + gSaveBlock2Ptr->frontier.domeTrainers[0].eliminatedAt = 0; + gSaveBlock2Ptr->frontier.domeTrainers[0].unk3 = 0; + + for (i = 0; i < 3; i++) + { + gSaveBlock2Ptr->frontier.domeMonId[0][i] = GetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.field_CAA[i] - 1], MON_DATA_SPECIES, NULL); + for (j = 0; j < 4; j++) + gSaveBlock2Ptr->frontier.field_EFC[i].moves[j] = GetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.field_CAA[i] - 1], MON_DATA_MOVE1 + j, NULL); + for (j = 0; j < 6; j++) + gSaveBlock2Ptr->frontier.field_EFC[i].evs[j] = GetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.field_CAA[i] - 1], MON_DATA_HP_EV + j, NULL); + + gSaveBlock2Ptr->frontier.field_EFC[i].nature = GetNature(&gPlayerParty[gSaveBlock2Ptr->frontier.field_CAA[i] - 1]); + } + + for (i = 1; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) + { + if (i > 5) + { + do + { + trainerId = sub_8162548(sub_81A39C4(), 0); + for (j = 1; j < i; j++) + { + if (gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId == trainerId) + break; + } + } while (j != i); + gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId = trainerId; + } + else + { + do + { + trainerId = sub_8162548(sub_81A39C4() + 1, 0); + for (j = 1; j < i; j++) + { + if (gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId == trainerId) + break; + } + } while (j != i); + gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId = trainerId; + } + + for (j = 0; j < 3; j++) + { + // Make sure the mon is valid. + do + { + monTournamentId = RandomizeFacilityTrainerMonId(trainerId); + for (k = 0; k < j; k++) + { + s32 checkingMonId = gSaveBlock2Ptr->frontier.domeMonId[i][k]; + if (checkingMonId == monTournamentId + || species[0] == gFacilityTrainerMons[monTournamentId].species + || species[1] == gFacilityTrainerMons[monTournamentId].species + || gFacilityTrainerMons[checkingMonId].itemTableId == gFacilityTrainerMons[monTournamentId].itemTableId) + break; + } + } while (k != j); + + gSaveBlock2Ptr->frontier.domeMonId[i][j] = monTournamentId; + species[j] = gFacilityTrainerMons[monTournamentId].species; + } + + gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated = 0; + gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt = 0; + gSaveBlock2Ptr->frontier.domeTrainers[i].unk3 = 0; + } + + monTypesBits = 0; + statSums[0] = 0; + for (i = 0; i < 3; i++) + { + trainerId = gSaveBlock2Ptr->frontier.field_CAA[i] - 1; // Great variable choice, gamefreak. + statSums[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_ATK, NULL); + statSums[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_DEF, NULL); + statSums[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_SPATK, NULL); + statSums[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_SPDEF, NULL); + statSums[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_SPEED, NULL); + statSums[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_MAX_HP, NULL); + monTypesBits |= gBitTable[gBaseStats[GetMonData(&gPlayerParty[trainerId], MON_DATA_SPECIES, NULL)].type1]; + monTypesBits |= gBitTable[gBaseStats[GetMonData(&gPlayerParty[trainerId], MON_DATA_SPECIES, NULL)].type2]; + } + + for (monTypesCount = 0, j = 0; j < 32; j++) + { + if (monTypesBits & 1) + monTypesCount++; + monTypesBits >>= 1; + } + + monLevel = GetFacilityEnemyMonLevel(); + statSums[0] += (monTypesCount * monLevel) / 20; + + for (i = 1; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) + { + monTypesBits = 0; + statSums[i] = 0; + ivs = GetDomeTrainerMonIvs(gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId); + for (j = 0; j < 3; j++) + { + CalcDomeMonStats(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].species, + monLevel, ivs, + gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].evSpread, + gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].nature, + statValues); + + statSums[i] += statValues[STAT_ATK]; + statSums[i] += statValues[STAT_DEF]; + statSums[i] += statValues[STAT_SPATK]; + statSums[i] += statValues[STAT_SPDEF]; + statSums[i] += statValues[STAT_SPEED]; + statSums[i] += statValues[STAT_HP]; + monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].species].type1]; + monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].species].type2]; + } + + for (monTypesCount = 0, j = 0; j < 32; j++) + { + if (monTypesBits & 1) + monTypesCount++; + monTypesBits >>= 1; + } + statSums[i] += (monTypesCount * monLevel) / 20; + } + + for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT - 1; i++) + { + for (j = i + 1; j < DOME_TOURNAMENT_TRAINERS_COUNT; j++) + { + if (statSums[i] < statSums[j]) + { + SwapDomeTrainers(i, j, statSums); + } + else + { + if (statSums[i] == statSums[j]) + { + if (gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId == TRAINER_PLAYER) + SwapDomeTrainers(i, j, statSums); + else if (gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId > gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId) + SwapDomeTrainers(i, j, statSums); + } + } + } + } + + if (sub_81A3610()) + { + for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) + { + if (gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId == TRAINER_PLAYER) + break; + } + + if (gUnknown_0860D3F1[i][0] != 0) + { + j = 0; + gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId = TRAINER_FRONTIER_BRAIN; + } + else + { + j = 1; + gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId = TRAINER_FRONTIER_BRAIN; + } + + for (i = 0; i < 3; i++) + gSaveBlock2Ptr->frontier.domeMonId[j][i] = sub_81A4FF0(i); + } + + Free(statSums); + Free(statValues); +} + +#define CALC_STAT(base, statIndex) \ +{ \ + u8 baseStat = gBaseStats[species].base; \ + stats[statIndex] = (((2 * baseStat + ivs + evs[statIndex] / 4) * level) / 100) + 5; \ + stats[statIndex] = (u8) ModifyStatByNature(nature, stats[statIndex], statIndex); \ +} + +static void CalcDomeMonStats(u16 species, s32 level, s32 ivs, u8 evBits, u8 nature, s32 *stats) +{ + s32 i, count; + u8 bits; + u16 resultingEvs; + s32 evs[6]; + + count = 0, bits = evBits; + for (i = 0; i < 6; bits >>= 1, i++) + { + if (bits & 1) + count++; + } + + resultingEvs = MAX_TOTAL_EVS / count; + for (i = 0; i < 6; bits <<= 1, i++) + { + evs[i] = 0; + if (evBits & bits) + evs[i] = resultingEvs; + } + + if (species == SPECIES_SHEDINJA) + { + stats[STAT_HP] = 1; + } + else + { + s32 n = 2 * gBaseStats[species].baseHP; + stats[STAT_HP] = (((n + ivs + evs[STAT_HP] / 4) * level) / 100) + level + 10; + } + + CALC_STAT(baseAttack, STAT_ATK); + CALC_STAT(baseDefense, STAT_DEF); + CALC_STAT(baseSpeed, STAT_SPEED); + CALC_STAT(baseSpAttack, STAT_SPATK); + CALC_STAT(baseSpDefense, STAT_SPDEF); +} + +static void SwapDomeTrainers(s32 id1, s32 id2, u16 *statsArray) +{ + s32 i; + u16 temp; + + SWAP(statsArray[id1], statsArray[id2], temp); + SWAP(gSaveBlock2Ptr->frontier.domeTrainers[id1].trainerId, gSaveBlock2Ptr->frontier.domeTrainers[id2].trainerId, temp); + + for (i = 0; i < 3; i++) + SWAP(gSaveBlock2Ptr->frontier.domeMonId[id1][i], gSaveBlock2Ptr->frontier.domeMonId[id2][i], temp); +} + +static void sub_818F9B0(void) +{ + StringCopy(gStringVar1, gRoundsStringTable[gSaveBlock2Ptr->frontier.field_CB2]); +} + +static void sub_818F9E0(void) +{ + StringCopy(gStringVar1, gRoundsStringTable[gSaveBlock2Ptr->frontier.field_CB2]); + CopyDomeTrainerName(gStringVar2, gTrainerBattleOpponent_A); +} + +static void sub_818FA20(void) +{ + gUnknown_0203CD70 = 0; + gUnknown_0203CD74 = GetMonData(&gPlayerParty[0], MON_DATA_MAX_HP, NULL); + gUnknown_0203CD74 += GetMonData(&gPlayerParty[1], MON_DATA_MAX_HP, NULL); + CalculatePlayerPartyCount(); + CreateDomeTrainerMons(TrainerIdToTournamentId(gTrainerBattleOpponent_A)); +} + +static void CreateDomeMon(u8 monPartyId, u16 tournamentTrainerId, u8 tournamentMonId, u32 otId) +{ + s32 i; + u8 happiness = 0xFF; + u8 fixedIv = GetDomeTrainerMonIvs(tournamentTrainerId); // BUG: Should be using trainerId instead of tournamentTrainerId. As a result, all Pokemon have ivs of 3. + u8 level = GetFacilityEnemyMonLevel(); + CreateMonWithEVSpreadPersonalityOTID(&gEnemyParty[monPartyId], + gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentTrainerId][tournamentMonId]].species, + level, + gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentTrainerId][tournamentMonId]].nature, + fixedIv, + gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentTrainerId][tournamentMonId]].evSpread, otId); + + happiness = 0xFF; + for (i = 0; i < 4; i++) + { + SetMonMoveSlot(&gEnemyParty[monPartyId], + gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentTrainerId][tournamentMonId]].moves[i], i); + if (gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentTrainerId][tournamentMonId]].moves[i] == MOVE_FRUSTRATION) + happiness = 0; + } + + SetMonData(&gEnemyParty[monPartyId], MON_DATA_FRIENDSHIP, &happiness); + SetMonData(&gEnemyParty[monPartyId], MON_DATA_HELD_ITEM, + &gBattleFrontierHeldItems[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentTrainerId][tournamentMonId]].itemTableId]); +} + +static void CreateDomeTrainerMons(u16 tournamentTrainerId) +{ + u8 monsCount = 0; + u32 otId = 0; + s32 i, bits; + + ZeroEnemyPartyMons(); + bits = GetTrainerMonCountInBits(tournamentTrainerId); + otId = Random32(); + if (Random() % 10 > 5) + { + for (i = 0; i < 3; i++) + { + if (bits & 1) + { + CreateDomeMon(monsCount, tournamentTrainerId, i, otId); + monsCount++; + } + bits >>= 1; + } + } + else + { + for (i = 2; i >= 0; i--) + { + if (bits & 4) + { + CreateDomeMon(monsCount, tournamentTrainerId, i, otId); + monsCount++; + } + bits <<= 1; + } + } +} + +s32 GetTrainerMonCountInBits(u16 tournamentTrainerId) +{ + s32 bits; + if (Random() & 1) + { + bits = sub_818FCBC(tournamentTrainerId, FALSE); + if (bits == 0) + bits = sub_818FDB8(tournamentTrainerId, TRUE); + } + else + { + bits = sub_818FDB8(tournamentTrainerId, FALSE); + if (bits == 0) + bits = sub_818FCBC(tournamentTrainerId, TRUE); + } + + return bits; +} + +static s32 sub_818FCBC(u16 tournamentTrainerId, bool8 arg1) +{ + s32 i, moveId, playerMonId; + s32 array[3]; + + for (i = 0; i < 3; i++) + { + array[i] = 0; + for (moveId = 0; moveId < 4; moveId++) + { + for (playerMonId = 0; playerMonId < 3; playerMonId++) + { + if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentTrainerId].trainerId == TRAINER_FRONTIER_BRAIN) + { + array[i] += GetTypeEffectivenessPoints(sub_81A5060(i, moveId), + GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), 0); + } + else + { + array[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentTrainerId][i]].moves[moveId], + GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), 0); + } + } + } + } + return sub_818FEB4(array, arg1); +} + +static s32 sub_818FDB8(u16 tournamentTrainerId, bool8 arg1) +{ + s32 i, moveId, playerMonId; + s32 array[3]; + + for (i = 0; i < 3; i++) + { + array[i] = 0; + for (moveId = 0; moveId < 4; moveId++) + { + for (playerMonId = 0; playerMonId < 3; playerMonId++) + { + if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentTrainerId].trainerId == TRAINER_FRONTIER_BRAIN) + { + array[i] += GetTypeEffectivenessPoints(sub_81A5060(i, moveId), + GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), 1); + } + else + { + array[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentTrainerId][i]].moves[moveId], + GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), 1); + } + } + } + } + return sub_818FEB4(array, arg1); +} + +static s32 sub_818FEB4(s32 *arr, bool8 arg1) +{ + s32 i, j; + s32 bits = 0; + s32 array[3]; + + for (i = 0; i < 3; i++) + array[i] = i; + + if (arr[0] == arr[1] && arr[0] == arr[2]) + { + if (arg1) + { + i = 0; + while (i != 2) + { + u32 rand = Random() & 3; + if (rand != 3 && !(bits & gBitTable[rand])) + { + bits |= gBitTable[rand]; + i++; + } + } + } + } + else + { + for (i = 0; i < 2; i++) + { + for (j = i + 1; j < 3; j++) + { + s32 temp; + + if (arr[i] < arr[j]) + { + temp = arr[i]; + arr[i] = arr[j]; + arr[j] = temp; + + temp = array[i]; + array[i] = array[j]; + array[j] = temp; + } + + if (arr[i] == arr[j] && (Random() & 1)) + { + temp = arr[i]; + arr[i] = arr[j]; + arr[j] = temp; + + temp = array[i]; + array[i] = array[j]; + array[j] = temp; + } + } + } + + for (i = 0; i < 2; i++) + { + bits |= gBitTable[array[i]]; + } + } + + return bits; +} + +#define TYPE_x0 0 +#define TYPE_x0_25 5 +#define TYPE_x0_50 10 +#define TYPE_x1 20 +#define TYPE_x2 40 +#define TYPE_x4 80 + +// Functionally equivalent, while loop is impossible to match. +#ifdef NONMATCHING +static s32 GetTypeEffectivenessPoints(s32 move, s32 targetSpecies, s32 arg2) +{ + s32 defType1, defType2, defAbility, moveType; + s32 i = 0; + s32 typePower = TYPE_x1; + + if (move == MOVE_NONE || move == 0xFFFF || gBattleMoves[move].power == 0) + return 0; + + defType1 = gBaseStats[targetSpecies].type1; + defType2 = gBaseStats[targetSpecies].type2; + defAbility = gBaseStats[targetSpecies].ability1; + moveType = gBattleMoves[move].type; + + if (defAbility == ABILITY_LEVITATE && moveType == TYPE_GROUND) + { + if (arg2 == 1) + typePower = 8; + } + else + { + while (gTypeEffectiveness[i + 0] != TYPE_ENDTABLE) + { + if (gTypeEffectiveness[i + 0] == TYPE_FORESIGHT) + { + i += 3; + } + else + { + u8 val = gTypeEffectiveness[i + 0]; + if (val == moveType) + { + // BUG: * 2 is not necessary and makes the condition always false if the ability is wonder guard. + if (gTypeEffectiveness[i + 1] == defType1 && (defAbility != ABILITY_WONDER_GUARD || gTypeEffectiveness[i + 2] == TYPE_MUL_SUPER_EFFECTIVE * 2)) + typePower = (gTypeEffectiveness[i + 2] * typePower) / 10; + if (gTypeEffectiveness[i + 1] == defType2 && defType1 != defType2 && (defAbility != ABILITY_WONDER_GUARD || gTypeEffectiveness[i + 2] == TYPE_MUL_SUPER_EFFECTIVE * 2)) + typePower = (gTypeEffectiveness[i + 2] * typePower) / 10; + } + i += 3; + } + } + } + + switch (arg2) + { + case 0: + switch (typePower) + { + case 10: + case 5: + case 0: + default: + typePower = 0; + break; + case 20: + typePower = 2; + break; + case 40: + typePower = 4; + break; + case 80: + typePower = 8; + break; + } + break; + case 1: + switch (typePower) + { + default: + case 20: + typePower = 0; + break; + case 5: + typePower = 4; + break; + case 0: + typePower = 8; + break; + case 10: + typePower = 2; + break; + case 40: + typePower = -2; + break; + case 80: + typePower = -4; + break; + } + break; + case 2: + switch (typePower) + { + case TYPE_x0: + typePower = -16; + break; + case TYPE_x0_25: + typePower = -8; + break; + case TYPE_x0_50: + default: + typePower = 0; + break; + case TYPE_x1: + typePower = 4; + break; + case TYPE_x2: + typePower = 12; + break; + case TYPE_x4: + typePower = 20; + break; + } + break; + } + + return typePower; +} +#else +NAKED +static s32 GetTypeEffectivenessPoints(s32 move, s32 species, s32 arg2) +{ + asm_unified("\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x8\n\ + adds r3, r0, 0\n\ + adds r4, r1, 0\n\ + str r2, [sp]\n\ + movs r6, 0\n\ + movs r2, 0x14\n\ + cmp r3, 0\n\ + beq _0818FFF0\n\ + ldr r0, =0x0000ffff\n\ + cmp r3, r0\n\ + beq _0818FFF0\n\ + ldr r0, =gBattleMoves\n\ + lsls r1, r3, 1\n\ + adds r1, r3\n\ + lsls r1, 2\n\ + adds r3, r1, r0\n\ + ldrb r0, [r3, 0x1]\n\ + cmp r0, 0\n\ + bne _0818FFFC\n\ +_0818FFF0:\n\ + movs r0, 0\n\ + b _08190156\n\ + .pool\n\ +_0818FFFC:\n\ + ldr r1, =gBaseStats\n\ + lsls r0, r4, 3\n\ + subs r0, r4\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r1, [r0, 0x6]\n\ + mov r10, r1\n\ + ldrb r1, [r0, 0x7]\n\ + mov r9, r1\n\ + ldrb r0, [r0, 0x16]\n\ + mov r8, r0\n\ + ldrb r3, [r3, 0x2]\n\ + str r3, [sp, 0x4]\n\ + cmp r0, 0x1A\n\ + bne _0819002C\n\ + cmp r3, 0x4\n\ + bne _0819002C\n\ + ldr r0, [sp]\n\ + cmp r0, 0x1\n\ + bne _081900AA\n\ + movs r2, 0x8\n\ + b _081900A4\n\ + .pool\n\ +_0819002C:\n\ + ldr r0, =gTypeEffectiveness\n\ + adds r1, r6, r0\n\ + ldrb r0, [r1]\n\ + ldr r7, =gTypeEffectiveness\n\ + cmp r0, 0xFF\n\ + beq _081900A4\n\ + adds r4, r1, 0\n\ +_0819003A:\n\ + ldrb r0, [r4]\n\ + cmp r0, 0xFE\n\ + beq _08190096\n\ + ldrb r0, [r4]\n\ + ldr r1, [sp, 0x4]\n\ + cmp r0, r1\n\ + bne _08190096\n\ + ldrb r0, [r4, 0x1]\n\ + adds r5, r6, 0x1\n\ + cmp r0, r10\n\ + bne _0819006C\n\ + adds r1, r6, 0x2\n\ + mov r0, r8\n\ + cmp r0, 0x19\n\ + bne _0819005E\n\ + ldrb r0, [r4, 0x2]\n\ + cmp r0, 0x28\n\ + bne _0819006C\n\ +_0819005E:\n\ + adds r0, r1, r7\n\ + ldrb r0, [r0]\n\ + muls r0, r2\n\ + movs r1, 0xA\n\ + bl __divsi3\n\ + adds r2, r0, 0\n\ +_0819006C:\n\ + adds r0, r5, r7\n\ + ldrb r0, [r0]\n\ + cmp r0, r9\n\ + bne _08190096\n\ + cmp r10, r9\n\ + beq _08190096\n\ + adds r1, r6, 0x2\n\ + mov r0, r8\n\ + cmp r0, 0x19\n\ + bne _08190088\n\ + adds r0, r1, r7\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x28\n\ + bne _08190096\n\ +_08190088:\n\ + adds r0, r1, r7\n\ + ldrb r0, [r0]\n\ + muls r0, r2\n\ + movs r1, 0xA\n\ + bl __divsi3\n\ + adds r2, r0, 0\n\ +_08190096:\n\ + adds r4, 0x3\n\ + adds r6, 0x3\n\ + ldr r1, =gTypeEffectiveness\n\ + adds r0, r6, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, 0xFF\n\ + bne _0819003A\n\ +_081900A4:\n\ + ldr r0, [sp]\n\ + cmp r0, 0x1\n\ + beq _081900E0\n\ +_081900AA:\n\ + ldr r1, [sp]\n\ + cmp r1, 0x1\n\ + bgt _081900BC\n\ + cmp r1, 0\n\ + beq _081900C4\n\ + b _08190154\n\ + .pool\n\ +_081900BC:\n\ + ldr r0, [sp]\n\ + cmp r0, 0x2\n\ + beq _08190114\n\ + b _08190154\n\ +_081900C4:\n\ + cmp r2, 0xA\n\ + beq _08190146\n\ + cmp r2, 0xA\n\ + ble _08190146\n\ + cmp r2, 0x28\n\ + beq _0819014A\n\ + cmp r2, 0x28\n\ + bgt _081900DA\n\ + cmp r2, 0x14\n\ + beq _08190104\n\ + b _08190146\n\ +_081900DA:\n\ + cmp r2, 0x50\n\ + bne _08190146\n\ + b _08190100\n\ +_081900E0:\n\ + cmp r2, 0xA\n\ + beq _08190104\n\ + cmp r2, 0xA\n\ + bgt _081900F2\n\ + cmp r2, 0\n\ + beq _08190100\n\ + cmp r2, 0x5\n\ + beq _0819014A\n\ + b _08190146\n\ +_081900F2:\n\ + cmp r2, 0x28\n\ + beq _08190108\n\ + cmp r2, 0x28\n\ + ble _08190146\n\ + cmp r2, 0x50\n\ + beq _0819010E\n\ + b _08190146\n\ +_08190100:\n\ + movs r2, 0x8\n\ + b _08190154\n\ +_08190104:\n\ + movs r2, 0x2\n\ + b _08190154\n\ +_08190108:\n\ + movs r2, 0x2\n\ + negs r2, r2\n\ + b _08190154\n\ +_0819010E:\n\ + movs r2, 0x4\n\ + negs r2, r2\n\ + b _08190154\n\ +_08190114:\n\ + cmp r2, 0xA\n\ + beq _08190146\n\ + cmp r2, 0xA\n\ + bgt _08190126\n\ + cmp r2, 0\n\ + beq _0819013A\n\ + cmp r2, 0x5\n\ + beq _08190140\n\ + b _08190146\n\ +_08190126:\n\ + cmp r2, 0x28\n\ + beq _0819014E\n\ + cmp r2, 0x28\n\ + bgt _08190134\n\ + cmp r2, 0x14\n\ + beq _0819014A\n\ + b _08190146\n\ +_08190134:\n\ + cmp r2, 0x50\n\ + beq _08190152\n\ + b _08190146\n\ +_0819013A:\n\ + movs r2, 0x10\n\ + negs r2, r2\n\ + b _08190154\n\ +_08190140:\n\ + movs r2, 0x8\n\ + negs r2, r2\n\ + b _08190154\n\ +_08190146:\n\ + movs r2, 0\n\ + b _08190154\n\ +_0819014A:\n\ + movs r2, 0x4\n\ + b _08190154\n\ +_0819014E:\n\ + movs r2, 0xC\n\ + b _08190154\n\ +_08190152:\n\ + movs r2, 0x14\n\ +_08190154:\n\ + adds r0, r2, 0\n\ +_08190156:\n\ + add sp, 0x8\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + "); +} +#endif // NONMATCHING + +static u8 GetDomeTrainerMonIvs(u16 trainerId) +{ + u8 fixedIv; + if (trainerId <= 99) + fixedIv = 3; + else if (trainerId <= 119) + fixedIv = 6; + else if (trainerId <= 139) + fixedIv = 9; + else if (trainerId <= 159) + fixedIv = 12; + else if (trainerId <= 179) + fixedIv = 15; + else if (trainerId <= 199) + fixedIv = 18; + else if (trainerId <= 219) + fixedIv = 21; + else + fixedIv = 31; + + return fixedIv; +} + +static s32 TournamentIdOfOpponent(s32 roundId, s32 trainerId) +{ + s32 i, j, val; + + for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) + { + if (gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId == trainerId) + break; + } + + if (roundId != DOME_ROUND1) + { + if (roundId == DOME_FINAL) + val = sIdToOpponentId[i][roundId] + 8; + else + val = sIdToOpponentId[i][roundId] + 4; + + for (j = sIdToOpponentId[i][roundId]; j < val; j++) + { + if (gUnknown_0860D14C[j] != i && !gSaveBlock2Ptr->frontier.domeTrainers[gUnknown_0860D14C[j]].isEliminated) + break; + } + + if (j != val) + return gUnknown_0860D14C[j]; + else + return 0xFF; + } + else + { + if (!gSaveBlock2Ptr->frontier.domeTrainers[sIdToOpponentId[i][roundId]].isEliminated) + return sIdToOpponentId[i][roundId]; + else + return 0xFF; + } +} + +static void sub_8190298(void) +{ + gTrainerBattleOpponent_A = TrainerIdOfPlayerOpponent(); +} + +static u16 TrainerIdOfPlayerOpponent(void) +{ + return gSaveBlock2Ptr->frontier.domeTrainers[TournamentIdOfOpponent(gSaveBlock2Ptr->frontier.field_CB2, TRAINER_PLAYER)].trainerId; +} + +static void sub_81902E4(void) +{ + sub_8162614(gTrainerBattleOpponent_A, 0); +} + +static void sub_81902F8(void) +{ + gSaveBlock2Ptr->frontier.field_CA8 = gSpecialVar_0x8005; + VarSet(VAR_TEMP_0, 0); + gSaveBlock2Ptr->frontier.field_CA9_a = 1; + sub_81A4C30(); +} + +static void sub_819033C(void) +{ + u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; + u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); + + if (gSaveBlock2Ptr->frontier.field_D0C[battleMode][lvlMode] < 999) + gSaveBlock2Ptr->frontier.field_D0C[battleMode][lvlMode]++; + if (gSaveBlock2Ptr->frontier.field_D1C[battleMode][lvlMode] < 999) + gSaveBlock2Ptr->frontier.field_D1C[battleMode][lvlMode]++; + + if (gSaveBlock2Ptr->frontier.field_D0C[battleMode][lvlMode] > gSaveBlock2Ptr->frontier.field_D14[battleMode][lvlMode]) + gSaveBlock2Ptr->frontier.field_D14[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.field_D0C[battleMode][lvlMode]; +} + +static void ShowDomeOpponentInfo(void) +{ + u8 taskId = CreateTask(sub_8190400, 0); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = TrainerIdToTournamentId(TrainerIdOfPlayerOpponent()); + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3] = 0; + + SetMainCallback2(CB2_BattleDome); +} + +static void sub_8190400(u8 taskId) +{ + s32 i; + s32 r5 = gTasks[taskId].data[1]; + s32 r9 = gTasks[taskId].data[2]; + s32 r7 = gTasks[taskId].data[3]; + + switch (gTasks[taskId].data[0]) + { + case 0: + SetHBlankCallback(NULL); + SetVBlankCallback(NULL); + EnableInterrupts(INTR_FLAG_VBLANK); + CpuFill32(0, (void *)VRAM, VRAM_SIZE); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_0860CE84, ARRAY_COUNT(gUnknown_0860CE84)); + InitWindows(gUnknown_0860CEB4); + DeactivateAllTextPrinters(); + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; + if (r9 == 2) + gBattle_BG2_X = 0, gBattle_BG2_Y = 0; + else + gBattle_BG2_X = 0, gBattle_BG2_Y = 160; + + gTasks[taskId].data[0]++; + break; + case 1: + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + SetGpuReg(REG_OFFSET_MOSAIC, 0); + SetGpuReg(REG_OFFSET_WIN0H, 0); + SetGpuReg(REG_OFFSET_WIN0V, 0); + SetGpuReg(REG_OFFSET_WIN1H, 0); + SetGpuReg(REG_OFFSET_WIN1V, 0); + SetGpuReg(REG_OFFSET_WININ, 0); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR); + ResetPaletteFade(); + ResetSpriteData(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 4; + gTasks[taskId].data[0]++; + break; + case 2: + DecompressAndLoadBgGfxUsingHeap(2, gUnknown_08D83D50, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(2, gUnknown_08D84970, 0x2000, 0, 1); + DecompressAndLoadBgGfxUsingHeap(3, gUnknown_08D84F00, 0x800, 0, 1); + LoadCompressedObjectPic(gUnknown_0860CF50); + LoadCompressedPalette(gUnknown_08D85358, 0, 0x200); + LoadCompressedPalette(gUnknown_08D85444, 0x100, 0x200); + LoadCompressedPalette(gUnknown_08D85600, 0xF0, 0x20); + if (r9 == 2) + LoadCompressedPalette(gUnknown_08D854C8, 0x50, 0x20); + CpuFill32(0, gPlttBufferFaded, 0x400); + ShowBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + gTasks[taskId].data[0]++; + break; + case 3: + SetVBlankCallback(VblankCb0_BattleDome); + sBattleDomeStruct = AllocZeroed(sizeof(*sBattleDomeStruct)); + for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) + sBattleDomeStruct->arr[i] |= 0xFF; + LoadMonIconPalettes(); + i = CreateTask(sub_8190CD4, 0); + gTasks[i].data[0] = 0; + gTasks[i].data[2] = 0; + gTasks[i].data[3] = r9; + gTasks[i].data[4] = r7; + if (r9 == 2) + { + DisplayMatchInfoOnCard(0, r5); + sBattleDomeStruct->unk_10 = 1; + } + else + { + DisplayTrainerInfoOnCard(0, r5); + } + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP); + if (r9 != 0) + { + r7 = CreateSprite(&gUnknown_0860D068, 120, 4, 0); + StartSpriteAnim(&gSprites[r7], 0); + gSprites[r7].data[0] = i; + + r7 = CreateSprite(&gUnknown_0860D068, 120, 156, 0); + StartSpriteAnim(&gSprites[r7], 1); + gSprites[r7].data[0] = i; + + r7 = CreateSprite(&gUnknown_0860D050, 6, 80, 0); + StartSpriteAnim(&gSprites[r7], 0); + gSprites[r7].data[0] = i; + gSprites[r7].data[1] = 0; + if (r9 == 1) + gSprites[r7].invisible = 1; + + r7 = CreateSprite(&gUnknown_0860D050, 234, 80, 0); + StartSpriteAnim(&gSprites[r7], 1); + gSprites[r7].data[0] = i; + gSprites[r7].data[1] = 1; + } + DestroyTask(taskId); + break; + } +} + +// Note: Card scrolling up means the current card goes down and another one appears from top. +// The same is true for scrolling left. +// That means that the sprite needs to move with the moving card in the opposite scrolling direction. + +static void SpriteCb_TrainerIconCardScrollUp(struct Sprite *sprite) +{ + sprite->pos1.y += 4; + if (sprite->data[0] != 0) + { + if (sprite->pos1.y >= -32) + sprite->invisible = 0; + if (++sprite->data[1] == 40) + sprite->callback = SpriteCallbackDummy; + } + else + { + if (sprite->pos1.y >= 192) + { + sBattleDomeStruct->arr[sprite->data[2]] = 0xFF; + FreeAndDestroyTrainerPicSprite(sprite->data[3]); + } + } +} + +static void SpriteCb_TrainerIconCardScrollDown(struct Sprite *sprite) +{ + sprite->pos1.y -= 4; + if (sprite->data[0] != 0) + { + if (sprite->pos1.y <= 192) + sprite->invisible = 0; + if (++sprite->data[1] == 40) + sprite->callback = SpriteCallbackDummy; + } + else + { + if (sprite->pos1.y <= -32) + { + sBattleDomeStruct->arr[sprite->data[2]] = 0xFF; + FreeAndDestroyTrainerPicSprite(sprite->data[3]); + } + } +} + +static void SpriteCb_TrainerIconCardScrollLeft(struct Sprite *sprite) +{ + sprite->pos1.x += 4; + if (sprite->data[0] != 0) + { + if (sprite->pos1.x >= -32) + sprite->invisible = 0; + if (++sprite->data[1] == 64) + sprite->callback = SpriteCallbackDummy; + } + else + { + if (sprite->pos1.x >= 272) + { + sBattleDomeStruct->arr[sprite->data[2]] = 0xFF; + FreeAndDestroyTrainerPicSprite(sprite->data[3]); + } + } +} + +static void SpriteCb_TrainerIconCardScrollRight(struct Sprite *sprite) +{ + sprite->pos1.x -= 4; + if (sprite->data[0] != 0) + { + if (sprite->pos1.x <= 272) + sprite->invisible = 0; + if (++sprite->data[1] == 64) + sprite->callback = SpriteCallbackDummy; + } + else + { + if (sprite->pos1.x <= -32) + { + sBattleDomeStruct->arr[sprite->data[2]] = 0xFF; + FreeAndDestroyTrainerPicSprite(sprite->data[3]); + } + } +} + +#define sMonIconStill data[3] + +static void SpriteCb_MonIcon(struct Sprite *sprite) +{ + if (!sprite->sMonIconStill) + UpdateMonIconFrame(sprite); +} + +static void SpriteCb_MonIconCardScrollUp(struct Sprite *sprite) +{ + if (!sprite->sMonIconStill) + UpdateMonIconFrame(sprite); + sprite->pos1.y += 4; + if (sprite->data[0] != 0) + { + if (sprite->pos1.y >= -16) + sprite->invisible = 0; + if (++sprite->data[1] == 40) + sprite->callback = SpriteCb_MonIcon; + } + else + { + if (sprite->pos1.y >= 176) + { + sBattleDomeStruct->arr[sprite->data[2]] = 0xFF; + sub_80D2EF8(sprite); + } + } +} + +static void SpriteCb_MonIconCardScrollDown(struct Sprite *sprite) +{ + if (!sprite->sMonIconStill) + UpdateMonIconFrame(sprite); + sprite->pos1.y -= 4; + if (sprite->data[0] != 0) + { + if (sprite->pos1.y <= 176) + sprite->invisible = 0; + if (++sprite->data[1] == 40) + sprite->callback = SpriteCb_MonIcon; + } + else + { + if (sprite->pos1.y <= -16) + { + sBattleDomeStruct->arr[sprite->data[2]] = 0xFF; + sub_80D2EF8(sprite); + } + } +} + +static void SpriteCb_MonIconCardScrollLeft(struct Sprite *sprite) +{ + if (!sprite->sMonIconStill) + UpdateMonIconFrame(sprite); + sprite->pos1.x += 4; + if (sprite->data[0] != 0) + { + if (sprite->pos1.x >= -16) + sprite->invisible = 0; + if (++sprite->data[1] == 64) + sprite->callback = SpriteCb_MonIcon; + } + else + { + if (sprite->pos1.x >= 256) + { + sBattleDomeStruct->arr[sprite->data[2]] = 0xFF; + sub_80D2EF8(sprite); + } + } +} + +static void SpriteCb_MonIconCardScrollRight(struct Sprite *sprite) +{ + if (!sprite->sMonIconStill) + UpdateMonIconFrame(sprite); + sprite->pos1.x -= 4; + if (sprite->data[0] != 0) + { + if (sprite->pos1.x <= 256) + sprite->invisible = 0; + if (++sprite->data[1] == 64) + sprite->callback = SpriteCb_MonIcon; + } + else + { + if (sprite->pos1.x <= -16) + { + sBattleDomeStruct->arr[sprite->data[2]] = 0xFF; + sub_80D2EF8(sprite); + } + } +} + +static void sub_8190B40(struct Sprite *sprite) +{ + s32 taskId1 = sprite->data[0]; + s32 arrId = gTasks[gTasks[taskId1].data[4]].data[1]; + s32 tournmanetTrainerId = gUnknown_0860D080[arrId]; + s32 r12 = gSaveBlock2Ptr->frontier.field_CB2; + + if (gTasks[taskId1].data[3] == 1) + { + if (sprite->data[1]) + { + if ((gSaveBlock2Ptr->frontier.domeTrainers[tournmanetTrainerId].isEliminated + && sBattleDomeStruct->unk_10 - 1 < gSaveBlock2Ptr->frontier.domeTrainers[tournmanetTrainerId].eliminatedAt)) + { + sprite->invisible = 0; + } + else if (!gSaveBlock2Ptr->frontier.domeTrainers[tournmanetTrainerId].isEliminated + && sBattleDomeStruct->unk_10 - 1 < r12) + { + sprite->invisible = 0; + } + else + { + if (gTasks[taskId1].data[0] == 2) + sprite->invisible = 1; + } + } + else + { + if (sBattleDomeStruct->unk_10 != 0) + { + sprite->invisible = 0; + } + else + { + if (gTasks[taskId1].data[0] == 2) + sprite->invisible = 1; + } + } + } + else + { + if (sprite->data[1]) + { + if (sBattleDomeStruct->unk_10 > 1) + { + if (gTasks[taskId1].data[0] == 2) + sprite->invisible = 1; + } + else + { + sprite->invisible = 0; + } + } + else + { + if (sBattleDomeStruct->unk_10 != 0) + { + sprite->invisible = 0; + } + else + { + if (gTasks[taskId1].data[0] == 2) + sprite->invisible = 1; + } + } + } +} + +static void sub_8190C6C(struct Sprite *sprite) +{ + s32 taskId1 = sprite->data[0]; + + if (gTasks[taskId1].data[3] == 1) + { + if (sBattleDomeStruct->unk_10 != 0) + { + if (gTasks[taskId1].data[0] == 2) + sprite->invisible = 1; + } + else + { + sprite->invisible = 0; + } + } + else + { + if (sBattleDomeStruct->unk_10 != 1) + { + if (gTasks[taskId1].data[0] == 2) + sprite->invisible = 1; + } + else + { + sprite->invisible = 0; + } + } +} + +static void sub_8190CD4(u8 taskId) +{ + s32 i; + s32 windowId = 0; + s32 r9 = gTasks[taskId].data[3]; + s32 taskId2 = gTasks[taskId].data[4]; + s32 trainerTournamentId = 0; + s32 matchNo = 0; + + switch (gTasks[taskId].data[0]) + { + case 0: + if (!gPaletteFade.active) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); + gTasks[taskId].data[0] = 1; + } + break; + case 1: + if (!gPaletteFade.active) + gTasks[taskId].data[0] = 2; + break; + case 2: + i = sub_819221C(taskId); + switch (i) + { + case 9: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + gTasks[taskId].data[0] = 8; + break; + case 1 ... 8: + gTasks[taskId].data[5] = i; + if (gTasks[taskId].data[2] != 0) + windowId = 9; + else + windowId = 0; + + for (i = windowId; i < windowId + 9; i++) + { + CopyWindowToVram(i, 2); + FillWindowPixelBuffer(i, 0); + } + gTasks[taskId].data[0] = 3; + break; + case 0: + break; + } + break; + case 3: + i = gTasks[taskId].data[5]; + switch (i) + { + case 1: + case 5: + if (gTasks[taskId].data[2]) + { + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattle_BG1_X = 0; + gBattle_BG1_Y = 160; + } + else + { + gBattle_BG0_X = 0; + gBattle_BG0_Y = 160; + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + } + + if (i == 1) + { + if (sBattleDomeStruct->unk_10 == 0) + { + gBattle_BG2_X = 0; + gBattle_BG2_Y = 320; + trainerTournamentId = gUnknown_0860D080[gTasks[taskId2].data[1]]; + DisplayTrainerInfoOnCard(gTasks[taskId].data[2] | 0x10, trainerTournamentId); + } + else + { + gBattle_BG2_X = 256; + gBattle_BG2_Y = 0; + trainerTournamentId = gUnknown_0860D080[gTasks[taskId2].data[1]]; + DisplayTrainerInfoOnCard(gTasks[taskId].data[2] | 0x10, trainerTournamentId); + sBattleDomeStruct->unk_10 = 0; + } + } + else + { + if (sBattleDomeStruct->unk_10 == 0) + { + matchNo = gTasks[taskId2].data[1] - 16; + sub_8192F08(matchNo, sBattleDomeStruct->unk_11); + gBattle_BG2_X = 0; + gBattle_BG2_Y = 320; + trainerTournamentId = sBattleDomeStruct->unk_11[0]; + DisplayTrainerInfoOnCard(gTasks[taskId].data[2] | 0x10, trainerTournamentId); + } + else if (sBattleDomeStruct->unk_10 == 2) + { + matchNo = gTasks[taskId2].data[1] - 16; + sub_8192F08(matchNo, sBattleDomeStruct->unk_11); + gBattle_BG2_X = 0; + gBattle_BG2_Y = 320; + trainerTournamentId = sBattleDomeStruct->unk_11[1]; + DisplayTrainerInfoOnCard(gTasks[taskId].data[2] | 0x10, trainerTournamentId); + } + else + { + gBattle_BG2_X = 256; + gBattle_BG2_Y = 160; + matchNo = gTasks[taskId2].data[1] - 16; + DisplayMatchInfoOnCard(gTasks[taskId].data[2] | 0x10, matchNo); + } + } + + for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT / 2; i++) + { + if (i < 2) + { + if (sBattleDomeStruct->arr[i] != 0xFF) + { + gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_TrainerIconCardScrollUp; + gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1; + gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; + gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + gSprites[sBattleDomeStruct->arr[i]].data[3] = sBattleDomeStruct->arr[i]; + } + } + else + { + if (sBattleDomeStruct->arr[i] != 0xFF) + { + gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_MonIconCardScrollUp; + gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1; + gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; + gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + } + } + } + for (i = DOME_TOURNAMENT_TRAINERS_COUNT / 2; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) + { + if (i < 10) + { + if (sBattleDomeStruct->arr[i] != 0xFF) + { + gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_TrainerIconCardScrollUp; + gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2]; + gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; + gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + gSprites[sBattleDomeStruct->arr[i]].data[3] = sBattleDomeStruct->arr[i]; + } + } + else + { + if (sBattleDomeStruct->arr[i] != 0xFF) + { + gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_MonIconCardScrollUp; + gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2]; + gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; + gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + } + } + } + + gTasks[taskId].data[0] = 4; + gTasks[taskId].data[5] = 0; + break; + case 2: + case 6: + if (gTasks[taskId].data[2]) + { + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattle_BG1_X = 0; + gBattle_BG1_Y = -160; + } + else + { + gBattle_BG0_X = 0; + gBattle_BG0_Y = -160; + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + } + + if (i == 2) + { + if (sBattleDomeStruct->unk_10 == 0) + { + gBattle_BG2_X = 0; + gBattle_BG2_Y = 160; + trainerTournamentId = gUnknown_0860D080[gTasks[taskId2].data[1]]; + DisplayTrainerInfoOnCard(gTasks[taskId].data[2] | 4, trainerTournamentId); + } + else + { + gBattle_BG2_X = 0; + gBattle_BG2_Y = 0; + trainerTournamentId = gUnknown_0860D080[gTasks[taskId2].data[1]]; + DisplayTrainerInfoOnCard(gTasks[taskId].data[2] | 4, trainerTournamentId); + sBattleDomeStruct->unk_10 = 0; + } + } + else + { + if (sBattleDomeStruct->unk_10 == 0) + { + matchNo = gTasks[taskId2].data[1] - 16; + sub_8192F08(matchNo, sBattleDomeStruct->unk_11); + gBattle_BG2_X = 0; + gBattle_BG2_Y = 160; + trainerTournamentId = sBattleDomeStruct->unk_11[0]; + DisplayTrainerInfoOnCard(gTasks[taskId].data[2] | 4, trainerTournamentId); + } + else if (sBattleDomeStruct->unk_10 == 2) + { + matchNo = gTasks[taskId2].data[1] - 16; + sub_8192F08(matchNo, sBattleDomeStruct->unk_11); + gBattle_BG2_X = 0; + gBattle_BG2_Y = 160; + trainerTournamentId = sBattleDomeStruct->unk_11[1]; + DisplayTrainerInfoOnCard(gTasks[taskId].data[2] | 4, trainerTournamentId); + } + else + { + gBattle_BG2_X = 256; + gBattle_BG2_Y = 0; + matchNo = gTasks[taskId2].data[1] - 16; + DisplayMatchInfoOnCard(gTasks[taskId].data[2] | 4, matchNo); + } + } + + for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT / 2; i++) + { + if (i < 2) + { + if (sBattleDomeStruct->arr[i] != 0xFF) + { + gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_TrainerIconCardScrollDown; + gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1; + gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; + gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + gSprites[sBattleDomeStruct->arr[i]].data[3] = sBattleDomeStruct->arr[i]; + } + } + else + { + if (sBattleDomeStruct->arr[i] != 0xFF) + { + gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_MonIconCardScrollDown; + gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1; + gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; + gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + } + } + } + for (i = DOME_TOURNAMENT_TRAINERS_COUNT / 2; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) + { + if (i < 10) + { + if (sBattleDomeStruct->arr[i] != 0xFF) + { + gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_TrainerIconCardScrollDown; + gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2]; + gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; + gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + gSprites[sBattleDomeStruct->arr[i]].data[3] = sBattleDomeStruct->arr[i]; + } + } + else + { + if (sBattleDomeStruct->arr[i] != 0xFF) + { + gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_MonIconCardScrollDown; + gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2]; + gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; + gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + } + } + } + + gTasks[taskId].data[0] = 5; + gTasks[taskId].data[5] = 0; + break; + case 3: + if (gTasks[taskId].data[2]) + { + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattle_BG1_X = 256; + gBattle_BG1_Y = 0; + } + else + { + gBattle_BG0_X = 256; + gBattle_BG0_Y = 0; + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + } + + if (sBattleDomeStruct->unk_10 == 0) + { + gBattle_BG2_X = 256; + gBattle_BG2_Y = 160; + trainerTournamentId = gUnknown_0860D080[gTasks[taskId2].data[1]]; + DisplayTrainerInfoOnCard(gTasks[taskId].data[2] | 8, trainerTournamentId); + } + else + { + gBattle_BG2_X = 256; + gBattle_BG2_Y = 0; + matchNo = gUnknown_0860D15C[gTasks[taskId2].data[1]][sBattleDomeStruct->unk_10 - 1]; + DisplayMatchInfoOnCard(gTasks[taskId].data[2] | 8, matchNo); + } + + for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT / 2; i++) + { + if (i < 2) + { + if (sBattleDomeStruct->arr[i] != 0xFF) + { + gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_TrainerIconCardScrollLeft; + gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1; + gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; + gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + gSprites[sBattleDomeStruct->arr[i]].data[3] = sBattleDomeStruct->arr[i]; + } + } + else + { + if (sBattleDomeStruct->arr[i] != 0xFF) + { + gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_MonIconCardScrollLeft; + gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1; + gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; + gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + } + } + } + for (i = DOME_TOURNAMENT_TRAINERS_COUNT / 2; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) + { + if (i < 10) + { + if (sBattleDomeStruct->arr[i] != 0xFF) + { + gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_TrainerIconCardScrollLeft; + gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2]; + gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; + gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + gSprites[sBattleDomeStruct->arr[i]].data[3] = sBattleDomeStruct->arr[i]; + } + } + else + { + if (sBattleDomeStruct->arr[i] != 0xFF) + { + gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_MonIconCardScrollLeft; + gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2]; + gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; + gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + } + } + } + + gTasks[taskId].data[0] = 6; + gTasks[taskId].data[5] = 0; + break; + case 7: + if (gTasks[taskId].data[2]) + { + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattle_BG1_X = 256; + gBattle_BG1_Y = 0; + } + else + { + gBattle_BG0_X = 256; + gBattle_BG0_Y = 0; + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + } + + if (sBattleDomeStruct->unk_10 == 0) + { + gBattle_BG2_X = 256; + gBattle_BG2_Y = 160; + trainerTournamentId = sBattleDomeStruct->unk_11[0]; + DisplayTrainerInfoOnCard(gTasks[taskId].data[2] | 8, trainerTournamentId); + } + else + { + gBattle_BG2_X = 0; + gBattle_BG2_Y = 160; + matchNo = gTasks[taskId2].data[1] - 16; + DisplayMatchInfoOnCard(gTasks[taskId].data[2] | 8, matchNo); + } + + for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT / 2; i++) + { + if (i < 2) + { + if (sBattleDomeStruct->arr[i] != 0xFF) + { + gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_TrainerIconCardScrollLeft; + gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1; + gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; + gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + gSprites[sBattleDomeStruct->arr[i]].data[3] = sBattleDomeStruct->arr[i]; + } + } + else + { + if (sBattleDomeStruct->arr[i] != 0xFF) + { + gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_MonIconCardScrollLeft; + gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1; + gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; + gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + } + } + } + for (i = DOME_TOURNAMENT_TRAINERS_COUNT / 2; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) + { + if (i < 10) + { + if (sBattleDomeStruct->arr[i] != 0xFF) + { + gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_TrainerIconCardScrollLeft; + gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2]; + gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; + gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + gSprites[sBattleDomeStruct->arr[i]].data[3] = sBattleDomeStruct->arr[i]; + } + } + else + { + if (sBattleDomeStruct->arr[i] != 0xFF) + { + gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_MonIconCardScrollLeft; + gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2]; + gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; + gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + } + } + } + + gTasks[taskId].data[0] = 6; + gTasks[taskId].data[5] = 0; + break; + case 4: + if (gTasks[taskId].data[2]) + { + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattle_BG1_X = -256; + gBattle_BG1_Y = 0; + } + else + { + gBattle_BG0_X = -256; + gBattle_BG0_Y = 0; + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + } + + if (sBattleDomeStruct->unk_10 == 1) + { + gBattle_BG2_X = 0; + gBattle_BG2_Y = 160; + } + else + { + gBattle_BG2_X = 0; + gBattle_BG2_Y = 0; + } + matchNo = gUnknown_0860D15C[gTasks[taskId2].data[1]][sBattleDomeStruct->unk_10 - 1]; + DisplayMatchInfoOnCard(gTasks[taskId].data[2] | 2, matchNo); + + for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT / 2; i++) + { + if (i < 2) + { + if (sBattleDomeStruct->arr[i] != 0xFF) + { + gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_TrainerIconCardScrollRight; + gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1; + gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; + gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + gSprites[sBattleDomeStruct->arr[i]].data[3] = sBattleDomeStruct->arr[i]; + } + } + else + { + if (sBattleDomeStruct->arr[i] != 0xFF) + { + gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_MonIconCardScrollRight; + gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1; + gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; + gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + } + } + } + for (i = DOME_TOURNAMENT_TRAINERS_COUNT / 2; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) + { + if (i < 10) + { + if (sBattleDomeStruct->arr[i] != 0xFF) + { + gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_TrainerIconCardScrollRight; + gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2]; + gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; + gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + gSprites[sBattleDomeStruct->arr[i]].data[3] = sBattleDomeStruct->arr[i]; + } + } + else + { + if (sBattleDomeStruct->arr[i] != 0xFF) + { + gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_MonIconCardScrollRight; + gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2]; + gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; + gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + } + } + } + + gTasks[taskId].data[0] = 7; + gTasks[taskId].data[5] = 0; + break; + case 8: + if (gTasks[taskId].data[2]) + { + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattle_BG1_X = -256; + gBattle_BG1_Y = 0; + } + else + { + gBattle_BG0_X = -256; + gBattle_BG0_Y = 0; + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + } + + if (sBattleDomeStruct->unk_10 == 2) + { + gBattle_BG2_X = 256; + gBattle_BG2_Y = 160; + trainerTournamentId = sBattleDomeStruct->unk_11[1]; + DisplayTrainerInfoOnCard(gTasks[taskId].data[2] | 2, trainerTournamentId); + } + else + { + gBattle_BG2_X = 0; + gBattle_BG2_Y = 160; + matchNo = gTasks[taskId2].data[1] - 16; + DisplayMatchInfoOnCard(gTasks[taskId].data[2] | 2, matchNo); + } + + for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT / 2; i++) + { + if (i < 2) + { + if (sBattleDomeStruct->arr[i] != 0xFF) + { + gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_TrainerIconCardScrollRight; + gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1; + gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; + gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + gSprites[sBattleDomeStruct->arr[i]].data[3] = sBattleDomeStruct->arr[i]; + } + } + else + { + if (sBattleDomeStruct->arr[i] != 0xFF) + { + gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_MonIconCardScrollRight; + gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1; + gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; + gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + } + } + } + for (i = DOME_TOURNAMENT_TRAINERS_COUNT / 2; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) + { + if (i < 10) + { + if (sBattleDomeStruct->arr[i] != 0xFF) + { + gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_TrainerIconCardScrollRight; + gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2]; + gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; + gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + gSprites[sBattleDomeStruct->arr[i]].data[3] = sBattleDomeStruct->arr[i]; + } + } + else + { + if (sBattleDomeStruct->arr[i] != 0xFF) + { + gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_MonIconCardScrollRight; + gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2]; + gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; + gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + } + } + } + + gTasks[taskId].data[0] = 7; + gTasks[taskId].data[5] = 0; + break; + } + break; + case 4: + if (++gTasks[taskId].data[5] != 41) + { + gBattle_BG0_Y -= 4; + gBattle_BG1_Y -= 4; + gBattle_BG2_Y -= 4; + } + else + { + gTasks[taskId].data[0] = 2; + } + break; + case 5: + if (++gTasks[taskId].data[5] != 41) + { + gBattle_BG0_Y += 4; + gBattle_BG1_Y += 4; + gBattle_BG2_Y += 4; + } + else + { + gTasks[taskId].data[0] = 2; + } + break; + case 6: + if (++gTasks[taskId].data[5] != 65) + { + gBattle_BG0_X -= 4; + gBattle_BG1_X -= 4; + gBattle_BG2_X -= 4; + } + else + { + gTasks[taskId].data[0] = 2; + } + break; + case 7: + if (++gTasks[taskId].data[5] != 65) + { + gBattle_BG0_X += 4; + gBattle_BG1_X += 4; + gBattle_BG2_X += 4; + } + else + { + gTasks[taskId].data[0] = 2; + } + break; + case 8: + if (!gPaletteFade.active) + { + for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT / 2; i++) + { + if (i < 2) + { + if (sBattleDomeStruct->arr[i] != 0xFF) + FreeAndDestroyTrainerPicSprite(sBattleDomeStruct->arr[i]); + } + else + { + if (sBattleDomeStruct->arr[i] != 0xFF) + sub_80D2EF8(&gSprites[sBattleDomeStruct->arr[i]]); + } + } + for (i = DOME_TOURNAMENT_TRAINERS_COUNT / 2; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) + { + if (i < 10) + { + if (sBattleDomeStruct->arr[i] != 0xFF) + FreeAndDestroyTrainerPicSprite(sBattleDomeStruct->arr[i]); + } + else + { + if (sBattleDomeStruct->arr[i] != 0xFF) + sub_80D2EF8(&gSprites[sBattleDomeStruct->arr[i]]); + } + } + + FreeMonIconPalettes(); + FREE_AND_SET_NULL(sBattleDomeStruct); + FreeAllWindowBuffers(); + if (r9 == 0) + { + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); + } + else + { + i = CreateTask(sub_8194220, 0); + gTasks[i].data[0] = 0; + gTasks[i].data[1] = 0; + gTasks[i].data[2] = 3; + gTasks[i].data[3] = gTasks[taskId].data[4]; + gTasks[i].data[4] = gTasks[taskId2].data[6]; + } + DestroyTask(taskId); + } + break; + } +} + +static u8 sub_819221C(u8 taskId) +{ + u8 retVal = 0; + s32 taskId2 = gTasks[taskId].data[4]; + s32 r5 = gTasks[taskId2].data[1]; + u8 r10 = gUnknown_0860D080[r5]; + u16 roundId = gSaveBlock2Ptr->frontier.field_CB2; + + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + retVal = 9; + + if (gTasks[taskId].data[3] == 0) + return retVal; + + if (gTasks[taskId].data[3] == 1) + { + if (gMain.newKeys & DPAD_UP && sBattleDomeStruct->unk_10 == 0) + { + if (r5 == 0) + r5 = 15; + else + r5--; + retVal = 1; + } + else if (gMain.newKeys & DPAD_DOWN && sBattleDomeStruct->unk_10 == 0) + { + if (r5 == 15) + r5 = 0; + else + r5++; + retVal = 2; + } + else if (gMain.newKeys & DPAD_LEFT && sBattleDomeStruct->unk_10 != 0) + { + sBattleDomeStruct->unk_10--; + retVal = 3; + } + else if (gMain.newKeys & DPAD_RIGHT) + { + if (gSaveBlock2Ptr->frontier.domeTrainers[r10].isEliminated && sBattleDomeStruct->unk_10 - 1 < gSaveBlock2Ptr->frontier.domeTrainers[r10].eliminatedAt) + { + sBattleDomeStruct->unk_10++; + retVal = 4; + } + if (!gSaveBlock2Ptr->frontier.domeTrainers[r10].isEliminated && sBattleDomeStruct->unk_10 - 1 < roundId) + { + sBattleDomeStruct->unk_10++; + retVal = 4; + } + } + + if (retVal == 9) + { + if (sBattleDomeStruct->unk_10 != 0) + gTasks[taskId2].data[1] = gUnknown_0860D1A0[r5 / 2][sBattleDomeStruct->unk_10 - 1]; + else + gTasks[taskId2].data[1] = r5; + } + } + else + { + if (gMain.newKeys & DPAD_UP && sBattleDomeStruct->unk_10 == 1) + { + if (r5 == 16) + r5 = gUnknown_0860D19C[roundId]; + else + r5--; + retVal = 5; + } + else if (gMain.newKeys & DPAD_DOWN && sBattleDomeStruct->unk_10 == 1) + { + if (r5 == gUnknown_0860D19C[roundId]) + r5 = 16; + else + r5++; + retVal = 6; + } + else if (gMain.newKeys & DPAD_LEFT && sBattleDomeStruct->unk_10 != 0) + { + retVal = 7; + sBattleDomeStruct->unk_10--; + } + else if (gMain.newKeys & DPAD_RIGHT && (sBattleDomeStruct->unk_10 == 0 || sBattleDomeStruct->unk_10 == 1)) + { + retVal = 8; + sBattleDomeStruct->unk_10++; + } + + if (retVal == 9) + { + if (sBattleDomeStruct->unk_10 == 0) + gTasks[taskId2].data[1] = gUnknown_0860D1C0[sBattleDomeStruct->unk_11[0]]; + else if (sBattleDomeStruct->unk_10 == 2) + gTasks[taskId2].data[1] = gUnknown_0860D1C0[sBattleDomeStruct->unk_11[1]]; + else + gTasks[taskId2].data[1] = r5; + } + } + + if (retVal != 0 && retVal != 9) + { + PlaySE(SE_SELECT); + gTasks[taskId2].data[1] = r5; + gTasks[taskId].data[2] ^= 1; + } + + return retVal; +} + +static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) +{ + struct TextSubPrinter textPrinter; + s32 i, j, k; + s32 trainerId = 0; + u8 nature = 0; + s32 arrId = 0; + s32 windowId = 0; + s32 x = 0, y = 0; + u8 palSlot = 0; + s16 *allocatedArray = AllocZeroed(sizeof(s16) * 18); + trainerId = gSaveBlock2Ptr->frontier.domeTrainers[trainerTournamentId].trainerId; + + if (flags & 1) + arrId = 8, windowId = 9, palSlot = 2; + if (flags & 2) + x = 256; + if (flags & 4) + y = 160; + if (flags & 8) + x = -256; + if (flags & 0x10) + y = -160; + + if (trainerId == TRAINER_PLAYER) + sBattleDomeStruct->arr[arrId] = CreateTrainerPicSprite(PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender), TRUE, x + 48, y + 64, palSlot + 12, 0xFFFF); + else if (trainerId == TRAINER_FRONTIER_BRAIN) + sBattleDomeStruct->arr[arrId] = CreateTrainerPicSprite(GetDomeBrainTrainerPicId(), TRUE, x + 48, y + 64, palSlot + 12, 0xFFFF); + else + sBattleDomeStruct->arr[arrId] = CreateTrainerPicSprite(GetFrontierTrainerFrontSpriteId(trainerId), TRUE, x + 48, y + 64, palSlot + 12, 0xFFFF); + + if (flags & 0x1E) + gSprites[sBattleDomeStruct->arr[arrId]].invisible = 1; + + for (i = 0; i < 3; i++) + { + if (trainerId == TRAINER_PLAYER) + { + sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i], + SpriteCb_MonIcon, + x | sInfoTrainerMonX[i], + y + sInfoTrainerMonY[i], + 0, 0, TRUE); + gSprites[sBattleDomeStruct->arr[2 + i + arrId]].oam.priority = 0; + } + else if (trainerId == TRAINER_FRONTIER_BRAIN) + { + sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i], + SpriteCb_MonIcon, + x | sInfoTrainerMonX[i], + y + sInfoTrainerMonY[i], + 0, 0, TRUE); + gSprites[sBattleDomeStruct->arr[2 + i + arrId]].oam.priority = 0; + } + else + { + sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i]].species, + SpriteCb_MonIcon, + x | sInfoTrainerMonX[i], + y + sInfoTrainerMonY[i], + 0, 0, TRUE); + gSprites[sBattleDomeStruct->arr[2 + i + arrId]].oam.priority = 0; + } + + if (flags & 0x1E) + gSprites[sBattleDomeStruct->arr[2 + i + arrId]].invisible = 1; + } + textPrinter.fontId = 2; + textPrinter.x = 0; + textPrinter.y = 0; + textPrinter.currentX = textPrinter.x; + textPrinter.currentY = textPrinter.y; + textPrinter.letterSpacing = 2; + textPrinter.lineSpacing = 0; + textPrinter.fontColor_l = 0; + textPrinter.fgColor = 14; + textPrinter.bgColor = 0; + textPrinter.shadowColor = 13; + + i = 0; + if (trainerId == TRAINER_PLAYER) + j = gFacilityClassToTrainerClass[FACILITY_CLASS_PKMN_TRAINER_BRENDAN]; + else if (trainerId == TRAINER_FRONTIER_BRAIN) + j = GetDomeBrainTrainerClass(); + else + j = GetFrontierOpponentClass(trainerId); + + for (;gTrainerClassNames[j][i] != EOS; i++) + gStringVar1[i] = gTrainerClassNames[j][i]; + gStringVar1[i] = CHAR_SPACE; + gStringVar1[i + 1] = EOS; + + if (trainerId == TRAINER_PLAYER) + { + StringAppend(gStringVar1, gSaveBlock2Ptr->playerName); + } + else if (trainerId == TRAINER_FRONTIER_BRAIN) + { + CopyDomeBrainTrainerName(gStringVar2); + StringAppend(gStringVar1, gStringVar2); + } + else + { + CopyDomeTrainerName(gStringVar2, trainerId); + StringAppend(gStringVar1, gStringVar2); + } + + textPrinter.currentX = GetStringCenterAlignXOffsetWithLetterSpacing(textPrinter.fontId, gStringVar1, 0xD0, textPrinter.letterSpacing); + textPrinter.current_text_offset = gStringVar1; + textPrinter.windowId = windowId; + PutWindowTilemap(windowId); + CopyWindowToVram(windowId, 3); + AddTextPrinter(&textPrinter, 0, NULL); + textPrinter.letterSpacing = 0; + + for (i = 0; i < 3; i++) + { + textPrinter.currentY = gUnknown_0860D346[i]; + if (trainerId == TRAINER_PLAYER) + textPrinter.current_text_offset = gSpeciesNames[gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i]]; + else if (trainerId == TRAINER_FRONTIER_BRAIN) + textPrinter.current_text_offset = gSpeciesNames[gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i]]; + else + textPrinter.current_text_offset = gSpeciesNames[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i]].species]; + + textPrinter.windowId = 1 + i + windowId; + if (i == 1) + textPrinter.currentX = 7; + else + textPrinter.currentX = 0; + + PutWindowTilemap(1 + i + windowId); + CopyWindowToVram(1 + i + windowId, 3); + AddTextPrinter(&textPrinter, 0, NULL); + } + + PutWindowTilemap(windowId + 4); + CopyWindowToVram(windowId + 4, 3); + if (trainerId == TRAINER_FRONTIER_BRAIN) + textPrinter.current_text_offset = gBattleDomePotentialPointers[16]; + else + textPrinter.current_text_offset = gBattleDomePotentialPointers[trainerTournamentId]; + + textPrinter.fontId = 1; + textPrinter.windowId = windowId + 4; + textPrinter.currentX = 0; + textPrinter.y = 4; + textPrinter.currentY = 4; + AddTextPrinter(&textPrinter, 0, NULL); + + for (i = 0; i < 3; i++) + { + for (j = 0; j < 4; j++) + { + for (k = 0; k < DOME_TOURNAMENT_TRAINERS_COUNT; k++) + { + if (trainerId == TRAINER_FRONTIER_BRAIN) + allocatedArray[k] += sMovePointsForDomeTrainers[sub_81A5060(i, j)][k]; + else if (trainerId == TRAINER_PLAYER) + allocatedArray[k] += sMovePointsForDomeTrainers[gSaveBlock2Ptr->frontier.field_EFC[i].moves[j]][k]; + else + allocatedArray[k] += sMovePointsForDomeTrainers[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i]].moves[j]][k]; + } + } + } + + for (i = 0; i < ARRAY_COUNT(gUnknown_0860C988); i++) + { + s32 r4 = 0; + + for (k = 0, j = 0; j < DOME_TOURNAMENT_TRAINERS_COUNT; j++) + { + if (gUnknown_0860C988[i][j] != 0) + { + r4++; + if (allocatedArray[j] != 0 && allocatedArray[j] >= gUnknown_0860C988[i][j]) + k++; + } + } + if (r4 == k) + break; + } + + textPrinter.current_text_offset = gBattleDomeOpponentStylePointers[i]; + textPrinter.y = 20; + textPrinter.currentY = 20; + AddTextPrinter(&textPrinter, 0, NULL); + + for (i = 0; i < 18; i++) + allocatedArray[i] = 0; + + if (trainerId == TRAINER_FRONTIER_BRAIN || trainerId == TRAINER_PLAYER) + { + for (i = 0; i < 3; i++) + { + for (j = 0; j < 6; j++) + { + if (trainerId == TRAINER_FRONTIER_BRAIN) + allocatedArray[j] = sub_81A50F0(i, j); + else + allocatedArray[j] = gSaveBlock2Ptr->frontier.field_EFC[i].evs[j]; + } + allocatedArray[6] += allocatedArray[0]; + for (j = 0; j < 5; j++) + { + if (trainerId == TRAINER_FRONTIER_BRAIN) + nature = sub_81A50B0(i); + else + nature = gSaveBlock2Ptr->frontier.field_EFC[i].nature; + + if (gNatureStatTable[nature][j] > 0) + { + allocatedArray[j + 7] += (allocatedArray[j + 1] * 110) / 100; + } + else if (gNatureStatTable[nature][j] < 0) + { + allocatedArray[j + 7] += (allocatedArray[j + 1] * 90) / 100; + allocatedArray[j + 13]++; + } + else + { + allocatedArray[j + 7] += allocatedArray[j + 1]; + } + } + } + for (j = 0, i = 0; i < 6; i++) + j += allocatedArray[6 + i]; + for (i = 0; i < 6; i++) + allocatedArray[i] = (allocatedArray[6 + i] * 100) / j; + } + else + { + for (i = 0; i < 3; i++) + { + s32 evBits = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i]].evSpread; + for (k = 0, j = 0; j < 6; j++) + { + allocatedArray[j] = 0; + if (evBits & 1) + k++; + evBits >>= 1; + } + k = MAX_TOTAL_EVS / k; + evBits = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i]].evSpread; + for (j = 0; j < 6; j++) + { + if (evBits & 1) + allocatedArray[j] = k; + evBits >>= 1; + } + + allocatedArray[6] += allocatedArray[0]; + for (j = 0; j < 5; j++) + { + nature = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i]].nature; + if (gNatureStatTable[nature][j] > 0) + { + allocatedArray[j + 7] += (allocatedArray[j + 1] * 110) / 100; + } + else if (gNatureStatTable[nature][j] < 0) + { + allocatedArray[j + 7] += (allocatedArray[j + 1] * 90) / 100; + allocatedArray[j + 13]++; + } + else + { + allocatedArray[j + 7] += allocatedArray[j + 1]; + } + } + } + for (j = 0, i = 0; i < 6; i++) + j += allocatedArray[i + 6]; + for (i = 0; i < 6; i++) + allocatedArray[i] = (allocatedArray[6 + i] * 100) / j; + } + + for (i = 0, j = 0, k = 0; k < 6; k++) + { + if (allocatedArray[k] > 29) + { + if (i == 2) + { + if (allocatedArray[6] < allocatedArray[k]) + { + if (allocatedArray[7] < allocatedArray[k]) + { + if (allocatedArray[6] < allocatedArray[7]) + { + allocatedArray[6] = allocatedArray[7]; + allocatedArray[7] = k; + } + else + { + allocatedArray[7] = k; + } + } + else + { + allocatedArray[6] = allocatedArray[7]; + allocatedArray[7] = k; + } + } + else + { + if (allocatedArray[7] < allocatedArray[k]) + allocatedArray[7] = k; + } + } + else + { + allocatedArray[i + 6] = k; + i++; + } + } + if (allocatedArray[k] == 0) + { + if (j == 2) + { + if (allocatedArray[k + 12] >= 2 + || ((allocatedArray[k + 12] == 1 && allocatedArray[12 + allocatedArray[8]] == 0 && allocatedArray[12 + allocatedArray[9]] == 0) + ) + ) + { + allocatedArray[8] = allocatedArray[9]; + allocatedArray[9] = k; + } + else if (allocatedArray[k + 12] == 1 && allocatedArray[12 + allocatedArray[8]] == 0) + { + allocatedArray[8] = allocatedArray[9]; + allocatedArray[9] = k; + } + else if (allocatedArray[k + 12] == 1 && allocatedArray[12 + allocatedArray[9]] == 0) + { + allocatedArray[9] = k; + } + } + else + { + allocatedArray[j + 8] = k; + j++; + } + } + } + + if (i == 2) + i = gUnknown_0860D349[allocatedArray[6]] + (allocatedArray[7] - (allocatedArray[6] + 1)); + else if (i == 1) + i = allocatedArray[6] + 15; + else if (j == 2) + i = gUnknown_0860D349[allocatedArray[8]] + (allocatedArray[9] - (allocatedArray[8] + 1)) + 21; + else if (j == 1) + i = allocatedArray[8] + 36; + else + i = 42; + + textPrinter.current_text_offset = gBattleDomeOpponentStatsPointers[i]; + textPrinter.y = 36; + textPrinter.currentY = 36; + AddTextPrinter(&textPrinter, 0, NULL); + Free(allocatedArray); +} + +static s32 sub_8192F08(u8 arg0, u8 *arg1) +{ + s32 i; + u8 tournamentId; + s32 retVal = 0; + s32 count = 0; + + for (i = gUnknown_0860D3C4[arg0][0]; i < gUnknown_0860D3C4[arg0][0] + gUnknown_0860D3C4[arg0][1]; i++) + { + tournamentId = gUnknown_0860D3B4[i]; + if (!gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].isEliminated) + { + arg1[count] = tournamentId; + if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].trainerId == TRAINER_PLAYER) + StringCopy(gStringVar1, gSaveBlock2Ptr->playerName); + else if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].trainerId == TRAINER_FRONTIER_BRAIN) + CopyDomeBrainTrainerName(gStringVar1); + else + CopyDomeTrainerName(gStringVar1, gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].trainerId); + count++; + } + } + + if (count == 2) + return 0; + + for (i = gUnknown_0860D3C4[arg0][0]; i < gUnknown_0860D3C4[arg0][0] + gUnknown_0860D3C4[arg0][1]; i++) + { + tournamentId = gUnknown_0860D3B4[i]; + if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].isEliminated + && gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].eliminatedAt >= gUnknown_0860D3C4[arg0][2]) + { + arg1[count] = tournamentId; + count++; + if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].eliminatedAt == gUnknown_0860D3C4[arg0][2]) + { + StringCopy(gStringVar2, gMoveNames[gSaveBlock2Ptr->frontier.field_EC0[tournamentId]]); + retVal = gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].unk3 * 2; + if (gSaveBlock2Ptr->frontier.field_EC0[tournamentId] == 0 && gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].unk3 == 0) + retVal = 4; + } + else + { + if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].trainerId == TRAINER_PLAYER) + StringCopy(gStringVar1, gSaveBlock2Ptr->playerName); + else if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].trainerId == TRAINER_FRONTIER_BRAIN) + CopyDomeBrainTrainerName(gStringVar1); + else + CopyDomeTrainerName(gStringVar1, gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].trainerId); + } + } + + if (count == 2) + break; + } + + if (arg0 == 14) + return retVal + 2; + else + return retVal + 1; +} + +static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) +{ + struct TextSubPrinter textPrinter; + s32 tournamentIds[2]; + s32 trainerIds[2]; + bool32 lost[2]; + s32 i; + s32 winStringId = 0; + s32 arrId = 0; + s32 windowId = 0; + s32 x = 0, y = 0; + u8 palSlot = 0; + + if (flags & 1) + arrId = 8, windowId = 9, palSlot = 2; + if (flags & 2) + x = 256; + if (flags & 4) + y = 160; + if (flags & 8) + x = -256; + if (flags & 0x10) + y = -160; + + // Copy trainers information to handy arrays. + winStringId = sub_8192F08(matchNo, sBattleDomeStruct->unk_11); + for (i = 0; i < 2; i++) + { + tournamentIds[i] = sBattleDomeStruct->unk_11[i]; + trainerIds[i] = gSaveBlock2Ptr->frontier.domeTrainers[tournamentIds[i]].trainerId; + if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentIds[i]].eliminatedAt <= gUnknown_0860D3C4[matchNo][2] + && gSaveBlock2Ptr->frontier.domeTrainers[tournamentIds[i]].isEliminated) + lost[i] = TRUE; + else + lost[i] = FALSE; + } + + // Draw first trainer sprite. + if (trainerIds[0] == TRAINER_PLAYER) + sBattleDomeStruct->arr[arrId] = CreateTrainerPicSprite(PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender), TRUE, x + 48, y + 88, palSlot + 12, 0xFFFF); + else if (trainerIds[0] == TRAINER_FRONTIER_BRAIN) + sBattleDomeStruct->arr[arrId] = CreateTrainerPicSprite(GetDomeBrainTrainerPicId(), TRUE, x + 48, y + 88, palSlot + 12, 0xFFFF); + else + sBattleDomeStruct->arr[arrId] = CreateTrainerPicSprite(GetFrontierTrainerFrontSpriteId(trainerIds[0]), TRUE, x + 48, y + 88, palSlot + 12, 0xFFFF); + + if (flags & 0x1E) + gSprites[sBattleDomeStruct->arr[arrId]].invisible = 1; + if (lost[0]) + gSprites[sBattleDomeStruct->arr[arrId]].oam.paletteNum = 3; + + // Draw second trainer sprite. + if (trainerIds[1] == TRAINER_PLAYER) + sBattleDomeStruct->arr[1 + arrId] = CreateTrainerPicSprite(PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender), TRUE, x + 192, y + 88, palSlot + 13, 0xFFFF); + else if (trainerIds[1] == TRAINER_FRONTIER_BRAIN) + sBattleDomeStruct->arr[1 + arrId] = CreateTrainerPicSprite(GetDomeBrainTrainerPicId(), TRUE, x + 192, y + 88, palSlot + 13, 0xFFFF); + else + sBattleDomeStruct->arr[1 + arrId] = CreateTrainerPicSprite(GetFrontierTrainerFrontSpriteId(trainerIds[1]), TRUE, x + 192, y + 88, palSlot + 13, 0xFFFF); + + if (flags & 0x1E) + gSprites[sBattleDomeStruct->arr[1 + arrId]].invisible = 1; + if (lost[1]) + gSprites[sBattleDomeStruct->arr[1 + arrId]].oam.paletteNum = 3; + + // Draw first trainer's pokemon icons. + for (i = 0; i < 3; i++) + { + if (trainerIds[0] == TRAINER_PLAYER) + { + sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonId[tournamentIds[0]][i], + SpriteCb_MonIcon, + x | sFirstTrainerMonX[i], + y + sFirstTrainerMonY[i], + 0, 0, TRUE); + gSprites[sBattleDomeStruct->arr[2 + i + arrId]].oam.priority = 0; + } + else if (trainerIds[0] == TRAINER_FRONTIER_BRAIN) + { + sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonId[tournamentIds[0]][i], + SpriteCb_MonIcon, + x | sFirstTrainerMonX[i], + y + sFirstTrainerMonY[i], + 0, 0, TRUE); + gSprites[sBattleDomeStruct->arr[2 + i + arrId]].oam.priority = 0; + } + else + { + sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentIds[0]][i]].species, + SpriteCb_MonIcon, + x | sFirstTrainerMonX[i], + y + sFirstTrainerMonY[i], + 0, 0, TRUE); + gSprites[sBattleDomeStruct->arr[2 + i + arrId]].oam.priority = 0; + } + + if (flags & 0x1E) + gSprites[sBattleDomeStruct->arr[2 + i + arrId]].invisible = 1; + if (lost[0]) + { + gSprites[sBattleDomeStruct->arr[2 + i + arrId]].oam.paletteNum = 3; + gSprites[sBattleDomeStruct->arr[2 + i + arrId]].sMonIconStill = TRUE; + } + } + + // Draw second trainer's pokemon icons. + for (i = 0; i < 3; i++) + { + if (trainerIds[1] == TRAINER_PLAYER) + { + sBattleDomeStruct->arr[5 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonId[tournamentIds[1]][i], + SpriteCb_MonIcon, + x | sSecondTrainerMonX[i], + y + sSecondTrainerMonY[i], + 0, 0, TRUE); + gSprites[sBattleDomeStruct->arr[5 + i + arrId]].oam.priority = 0; + } + else if (trainerIds[1] == TRAINER_FRONTIER_BRAIN) + { + sBattleDomeStruct->arr[5 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonId[tournamentIds[1]][i], + SpriteCb_MonIcon, + x | sSecondTrainerMonX[i], + y + sSecondTrainerMonY[i], + 0, 0, TRUE); + gSprites[sBattleDomeStruct->arr[5 + i + arrId]].oam.priority = 0; + } + else + { + sBattleDomeStruct->arr[5 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentIds[1]][i]].species, + SpriteCb_MonIcon, + x | sSecondTrainerMonX[i], + y + sSecondTrainerMonY[i], + 0, 0, TRUE); + gSprites[sBattleDomeStruct->arr[5 + i + arrId]].oam.priority = 0; + } + + if (flags & 0x1E) + gSprites[sBattleDomeStruct->arr[5 + i + arrId]].invisible = 1; + if (lost[1]) + { + gSprites[sBattleDomeStruct->arr[5 + i + arrId]].oam.paletteNum = 3; + gSprites[sBattleDomeStruct->arr[5 + i + arrId]].sMonIconStill = TRUE; + } + } + + // Print the win string (or 'Let the battle begin!' one). + textPrinter.x = 0; + textPrinter.y = 2; + textPrinter.currentX = textPrinter.x; + textPrinter.currentY = textPrinter.y; + textPrinter.letterSpacing = 0; + textPrinter.lineSpacing = 0; + textPrinter.fontColor_l = 0; + textPrinter.fgColor = 14; + textPrinter.bgColor = 0; + textPrinter.shadowColor = 13; + StringExpandPlaceholders(gStringVar4, gBattleDomeWinStringsPointers[winStringId]); + textPrinter.current_text_offset = gStringVar4; + textPrinter.windowId = windowId + 8; + textPrinter.fontId = 1; + PutWindowTilemap(windowId + 8); + CopyWindowToVram(windowId + 8, 3); + textPrinter.currentX = 0; + textPrinter.currentY = textPrinter.y = 0; + AddTextPrinter(&textPrinter, 0, NULL); + + // Print first trainer's name. + if (trainerIds[0] == TRAINER_PLAYER) + StringCopy(gStringVar1, gSaveBlock2Ptr->playerName); + else if (trainerIds[0] == TRAINER_FRONTIER_BRAIN) + CopyDomeBrainTrainerName(gStringVar1); + else + CopyDomeTrainerName(gStringVar1, trainerIds[0]); + + textPrinter.fontId = 2; + textPrinter.letterSpacing = 2; + textPrinter.current_text_offset = gStringVar1; + textPrinter.windowId = windowId + 6; + textPrinter.currentX = GetStringCenterAlignXOffsetWithLetterSpacing(textPrinter.fontId, textPrinter.current_text_offset, 0x40, textPrinter.letterSpacing); + textPrinter.currentY = textPrinter.y = 2; + PutWindowTilemap(windowId + 6); + CopyWindowToVram(windowId + 6, 3); + AddTextPrinter(&textPrinter, 0, NULL); + + // Print second trainer's name. + if (trainerIds[1] == TRAINER_PLAYER) + StringCopy(gStringVar1, gSaveBlock2Ptr->playerName); + else if (trainerIds[1] == TRAINER_FRONTIER_BRAIN) + CopyDomeBrainTrainerName(gStringVar1); + else + CopyDomeTrainerName(gStringVar1, trainerIds[1]); + + textPrinter.current_text_offset = gStringVar1; + textPrinter.windowId = windowId + 7; + textPrinter.currentX = GetStringCenterAlignXOffsetWithLetterSpacing(textPrinter.fontId, textPrinter.current_text_offset, 0x40, textPrinter.letterSpacing); + textPrinter.currentY = textPrinter.y = 2; + PutWindowTilemap(windowId + 7); + CopyWindowToVram(windowId + 7, 3); + AddTextPrinter(&textPrinter, 0, NULL); + + // Print match number. + textPrinter.letterSpacing = 0; + textPrinter.current_text_offset = gBattleDomeMatchNumberPointers[matchNo]; + textPrinter.windowId = windowId + 5; + textPrinter.currentX = GetStringCenterAlignXOffsetWithLetterSpacing(textPrinter.fontId, textPrinter.current_text_offset, 0xA0, textPrinter.letterSpacing); + textPrinter.currentY = textPrinter.y = 2; + PutWindowTilemap(windowId + 5); + CopyWindowToVram(windowId + 5, 3); + AddTextPrinter(&textPrinter, 0, NULL); +} + +static void sub_81938A4(void) +{ + u8 taskId = CreateTask(sub_8194220, 0); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = 2; + gTasks[taskId].data[4] = 0; + SetMainCallback2(CB2_BattleDome); +} + +static void sub_81938E0(void) +{ + u8 taskId; + + sub_8194D48(); + gSaveBlock2Ptr->frontier.lvlMode = gSaveBlock2Ptr->frontier.field_D0A - 1; + gSaveBlock2Ptr->frontier.field_CB2 = 3; + taskId = CreateTask(sub_8194220, 0); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = 2; + gTasks[taskId].data[4] = 1; + SetMainCallback2(CB2_BattleDome); +} + +static void sub_819395C(u8 taskId) +{ + u8 newTaskId = 0; + s32 spriteId = gTasks[taskId].data[1]; + + switch (gTasks[taskId].data[0]) + { + case 0: + if (!gPaletteFade.active) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); + gTasks[taskId].data[0] = 1; + StartSpriteAnim(&gSprites[spriteId], 1); + } + break; + case 1: + if (!gPaletteFade.active) + gTasks[taskId].data[0] = 2; + break; + case 2: + switch (sub_8193BDC(taskId)) + { + case 0: + default: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + gTasks[taskId].data[0] = 7; + break; + case 1: + break; + case 2: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + gTasks[taskId].data[0] = 3; + break; + case 3: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + gTasks[taskId].data[0] = 5; + break; + } + break; + case 3: + if (!gPaletteFade.active) + { + FreeAllWindowBuffers(); + ScanlineEffect_Stop(); + FREE_AND_SET_NULL(sTilemapBuffer); + newTaskId = CreateTask(sub_8190400, 0); + gTasks[newTaskId].data[0] = 0; + gTasks[newTaskId].data[1] = gUnknown_0860D080[spriteId]; + gTasks[newTaskId].data[2] = 1; + gTasks[newTaskId].data[3] = taskId; + + gTasks[taskId].data[0] = 4; + sBattleDomeStruct->unk_10 = 0; + } + break; + case 4: + break; + case 5: + if (!gPaletteFade.active) + { + FreeAllWindowBuffers(); + ScanlineEffect_Stop(); + FREE_AND_SET_NULL(sTilemapBuffer); + newTaskId = CreateTask(sub_8190400, 0); + gTasks[newTaskId].data[0] = 0; + gTasks[newTaskId].data[1] = spriteId - 16; + gTasks[newTaskId].data[2] = 2; + gTasks[newTaskId].data[3] = taskId; + + gTasks[taskId].data[0] = 6; + } + break; + case 6: + break; + case 7: + if (!gPaletteFade.active) + { + FreeAllWindowBuffers(); + ScanlineEffect_Stop(); + FREE_AND_SET_NULL(sTilemapBuffer); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); + DestroyTask(gTasks[taskId].data[7]); + DestroyTask(taskId); + } + break; + } +} + +static u8 sub_8193BDC(u8 taskId) +{ + u8 retVal = 1; + s32 arrId = 4; + s32 spriteId = gTasks[taskId].data[1]; + s32 roundId = gSaveBlock2Ptr->frontier.field_CB2; + + if (gMain.newKeys == B_BUTTON || (gMain.newKeys & A_BUTTON && spriteId == 31)) + { + PlaySE(SE_SELECT); + retVal = 0; + } + else if (gMain.newKeys & A_BUTTON) + { + if (spriteId < 16) + { + PlaySE(SE_SELECT); + retVal = 2; + } + else + { + PlaySE(SE_SELECT); + retVal = 3; + } + } + else + { + if (gMain.newKeys == DPAD_UP && gUnknown_0860CBF1[spriteId][roundId][0] != 0xFF) + arrId = 0; + else if (gMain.newKeys == DPAD_DOWN && gUnknown_0860CBF1[spriteId][roundId][1] != 0xFF) + arrId = 1; + else if (gMain.newKeys == DPAD_LEFT && gUnknown_0860CBF1[spriteId][roundId][2] != 0xFF) + arrId = 2; + else if (gMain.newKeys == DPAD_RIGHT && gUnknown_0860CBF1[spriteId][roundId][3] != 0xFF) + arrId = 3; + } + + if (arrId != 4) + { + PlaySE(SE_SELECT); + StartSpriteAnim(&gSprites[spriteId], 0); + spriteId = gUnknown_0860CBF1[spriteId][roundId][arrId]; + StartSpriteAnim(&gSprites[spriteId], 1); + gTasks[taskId].data[1] = spriteId; + } + + return retVal; +} + +static void sub_8193D40(void) +{ + u8 taskId = CreateTask(sub_8194220, 0); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 1; + gTasks[taskId].data[2] = 2; + gTasks[taskId].data[4] = 0; + SetMainCallback2(CB2_BattleDome); +} + +static void sub_8193D7C(void) +{ + s32 i; + + if (gSpecialVar_0x8005 == 1) + { + gSaveBlock2Ptr->frontier.domeTrainers[TrainerIdToTournamentId(gTrainerBattleOpponent_A)].isEliminated = 1; + gSaveBlock2Ptr->frontier.domeTrainers[TrainerIdToTournamentId(gTrainerBattleOpponent_A)].eliminatedAt = gSaveBlock2Ptr->frontier.field_CB2; + gSaveBlock2Ptr->frontier.field_EC0[TrainerIdToTournamentId(gTrainerBattleOpponent_A)] = gBattleResults.lastUsedMovePlayer; + if (gSaveBlock2Ptr->frontier.field_CB2 < DOME_FINAL) + DecideRoundWinners(gSaveBlock2Ptr->frontier.field_CB2); + } + else + { + gSaveBlock2Ptr->frontier.domeTrainers[TrainerIdToTournamentId(TRAINER_PLAYER)].isEliminated = 1; + gSaveBlock2Ptr->frontier.domeTrainers[TrainerIdToTournamentId(TRAINER_PLAYER)].eliminatedAt = gSaveBlock2Ptr->frontier.field_CB2; + gSaveBlock2Ptr->frontier.field_EC0[TrainerIdToTournamentId(TRAINER_PLAYER)] = gBattleResults.lastUsedMoveOpponent; + if (gBattleOutcome == B_OUTCOME_FORFEITED || gSpecialVar_0x8005 == 9) + gSaveBlock2Ptr->frontier.domeTrainers[TrainerIdToTournamentId(TRAINER_PLAYER)].unk3 = 1; + for (i = gSaveBlock2Ptr->frontier.field_CB2; i < DOME_ROUNDS_COUNT; i++) + DecideRoundWinners(i); + } +} + +static u16 GetWinningMove(s32 winnerTournamentId, s32 loserTournamentId, u8 roundId) +{ + s32 i, j, k; + s32 moveScores[4 * 3]; + u16 moveIds[4 * 3]; + u16 bestScore = 0; + u16 bestId = 0; + s32 movePower = 0; + GetFacilityEnemyMonLevel(); // Unused return variable. + + // Calc move points of all 4 moves for all 3 pokemon hitting all 3 target mons. + for (i = 0; i < 3; i++) + { + for (j = 0; j < 4; j++) + { + moveScores[i * 4 + j] = 0; + if (gSaveBlock2Ptr->frontier.domeTrainers[winnerTournamentId].trainerId == TRAINER_FRONTIER_BRAIN) + moveIds[i * 4 + j] = sub_81A5060(i, j); + else + moveIds[i * 4 + j] = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[winnerTournamentId][i]].moves[j]; + + movePower = gBattleMoves[moveIds[i * 4 + j]].power; + if (movePower == 0) + movePower = 40; + else if (movePower == 1) + movePower = 60; + else if (moveIds[i * 4 + j] == MOVE_SELF_DESTRUCT || moveIds[i * 4 + j] == MOVE_EXPLOSION) + movePower /= 2; + + for (k = 0; k < 3; k++) + { + u32 var = 0; + u32 targetSpecies = 0; + u32 targetAbility = 0; + do + { + var = Random32(); + } while (gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[loserTournamentId][k]].nature != GetNatureFromPersonality(var)); + + targetSpecies = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[loserTournamentId][k]].species; + if (var & 1) + targetAbility = gBaseStats[targetSpecies].ability2; + else + targetAbility = gBaseStats[targetSpecies].ability1; + + var = AI_TypeCalc(moveIds[i * 4 + j], targetSpecies, targetAbility); + if (var & MOVE_RESULT_NOT_VERY_EFFECTIVE && var & MOVE_RESULT_SUPER_EFFECTIVE) + moveScores[i * 4 + j] += movePower; + else if (var & MOVE_RESULT_NO_EFFECT) + moveScores[i * 4 + j] += 0; + else if (var & MOVE_RESULT_SUPER_EFFECTIVE) + moveScores[i * 4 + j] += movePower * 2; + else if (var & MOVE_RESULT_NOT_VERY_EFFECTIVE) + moveScores[i * 4 + j] += movePower / 2; + else + moveScores[i * 4 + j] += movePower; + } + + if (bestScore < moveScores[i * 4 + j]) + { + bestId = i * 4 + j; + bestScore = moveScores[i * 4 + j]; + } + else if (bestScore == moveScores[i * 4 + j]) + { + if (moveIds[bestId] < moveIds[i * 4 + j]) // Why not use (Random() & 1) instead of promoting moves with a higher id? + bestId = i * 4 + j; + } + } + } + + j = bestId; + goto LABEL; + while (j != 0) + { + for (j = 0, k = 0; k < 4 * 3; k++) + { + if (bestScore < moveScores[k]) + { + j = k; + bestScore = moveScores[k]; + } + else if (bestScore == moveScores[k] && moveIds[j] < moveIds[k]) + { + j = k; + } + } + if (i == roundId - 1) + break; + LABEL: + { + for (i = 0; i < roundId - 1; i++) + { + if (gSaveBlock2Ptr->frontier.field_EC0[sub_81953E8(winnerTournamentId, i)] == moveIds[j]) + break; + } + if (i == roundId - 1) + break; + + moveScores[j] = 0; + bestScore = 0; + j = 0; + for (k = 0; k < 4 * 3; k++) + j += moveScores[k]; + } + } + + if (moveScores[j] == 0) + j = bestId; + + return moveIds[j]; +} + +static void sub_8194220(u8 taskId) +{ + s32 i; + struct TextSubPrinter textPrinter; + s32 r10 = gTasks[taskId].data[1]; + s32 r4 = gTasks[taskId].data[2]; + + switch (gTasks[taskId].data[0]) + { + case 0: + SetHBlankCallback(NULL); + SetVBlankCallback(NULL); + EnableInterrupts(INTR_FLAG_HBLANK | INTR_FLAG_VBLANK); + CpuFill32(0, (void *)VRAM, VRAM_SIZE); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_0860CE74, ARRAY_COUNT(gUnknown_0860CE74)); + InitWindows(gUnknown_0860CE94); + DeactivateAllTextPrinters(); + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + ChangeBgX(2, 0, 0); + ChangeBgY(2, 0, 0); + ChangeBgX(3, 0, 0); + ChangeBgY(3, 0xB00, 0); + gTasks[taskId].data[0]++; + break; + case 1: + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + SetGpuReg(REG_OFFSET_MOSAIC, 0); + SetGpuReg(REG_OFFSET_WIN0H, 0x5860); + SetGpuReg(REG_OFFSET_WIN0V, 0x9F); + SetGpuReg(REG_OFFSET_WIN1H, 0x9098); + SetGpuReg(REG_OFFSET_WIN1V, 0x9F); + SetGpuReg(REG_OFFSET_WININ, 0); + SetGpuReg(REG_OFFSET_WINOUT, 0x3F); + ResetPaletteFade(); + ResetSpriteData(); + FreeAllSpritePalettes(); + gTasks[taskId].data[0]++; + break; + case 2: + sTilemapBuffer = AllocZeroed(0x800); + LZDecompressWram(gUnknown_08D83900, sTilemapBuffer); + SetBgTilemapBuffer(1, sTilemapBuffer); + CopyBgTilemapBufferToVram(1); + DecompressAndLoadBgGfxUsingHeap(1, gUnknown_08D82F10, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(2, gUnknown_08D834FC, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(2, gUnknown_08D83B2C, 0x2000, 0, 1); + DecompressAndLoadBgGfxUsingHeap(3, gUnknown_08D83C3C, 0x2000, 0, 1); + LoadCompressedPalette(gUnknown_08D85358, 0, 0x200); + LoadCompressedPalette(gUnknown_08D85444, 0x100, 0x200); + LoadCompressedPalette(gUnknown_08D85600, 0xF0, 0x20); + CpuFill32(0, gPlttBufferFaded, 0x400); + ShowBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + gTasks[taskId].data[0]++; + break; + case 3: + LoadCompressedObjectPic(gUnknown_0860CF50); + if (r10 == 0) + { + for (i = 0; i < (unsigned) 31; i++) + CreateSprite(&gUnknown_0860CFA8, gUnknown_0860D411[i][0], gUnknown_0860D411[i][1], 0); + if (gTasks[taskId].data[4]) + CreateSprite(&gUnknown_0860D008, 218, 12, 0); + else + CreateSprite(&gUnknown_0860CFD8, 218, 12, 0); + } + + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON | DISPCNT_OBJ_1D_MAP); + gTasks[taskId].data[0]++; + break; + case 4: + textPrinter.fontId = 2; + textPrinter.current_text_offset = gText_BattleTourney; + textPrinter.windowId = 2; + textPrinter.x = 0; + textPrinter.y = 0; + textPrinter.letterSpacing = 2; + textPrinter.lineSpacing = 0; + textPrinter.currentX = GetStringCenterAlignXOffsetWithLetterSpacing(textPrinter.fontId, textPrinter.current_text_offset, 0x70, textPrinter.letterSpacing); + textPrinter.currentY = 1; + textPrinter.fontColor_l = 0; + textPrinter.fgColor = 14; + textPrinter.bgColor = 0; + textPrinter.shadowColor = 13; + AddTextPrinter(&textPrinter, 0, NULL); + for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) + { + s32 var, var2; + + CopyDomeTrainerName(gDisplayedStringBattle, gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId); + if (r10 == 1) + { + if (gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated) + { + if (gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt != 0) + { + var2 = gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt - 1; + sub_81948EC(i, var2); + } + } + else if (gSaveBlock2Ptr->frontier.field_CB2 != DOME_ROUND2) + { + sub_81948EC(i, gSaveBlock2Ptr->frontier.field_CB2 - 2); + } + } + else if (r10 == 0) + { + if (gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated) + { + if (gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt != 0) + { + var2 = gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt - 1; + sub_81948EC(i, var2); + } + } + else if (gSaveBlock2Ptr->frontier.field_CB2 != DOME_ROUND1) + { + if (gTasks[taskId].data[4]) + var2 = gSaveBlock2Ptr->frontier.field_CB2; + else + var2 = gSaveBlock2Ptr->frontier.field_CB2 - 1; + sub_81948EC(i, var2); + } + } + + if (gTasks[taskId].data[4]) + var = gSaveBlock2Ptr->frontier.field_CB2; + else + var = gSaveBlock2Ptr->frontier.field_CB2 - 1; + + if ( ((r10 == 1 && gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt < gSaveBlock2Ptr->frontier.field_CB2 - 1) + || (r10 == 0 && gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt <= var)) + && gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated) + { + if (gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId == TRAINER_PLAYER) + { + textPrinter.fgColor = 3; + textPrinter.shadowColor = 4; + } + else + { + textPrinter.fgColor = 11; + textPrinter.shadowColor = 13; + } + } + else + { + if (gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId == TRAINER_PLAYER) + { + textPrinter.fgColor = 3; + textPrinter.shadowColor = 4; + } + else + { + textPrinter.fgColor = 14; + textPrinter.shadowColor = 13; + } + } + + if (gUnknown_0860D3F1[i][0] == 0) + textPrinter.currentX = GetStringWidthDifference(textPrinter.fontId, gDisplayedStringBattle, 0x3D, textPrinter.letterSpacing); + else + textPrinter.currentX = 3; + textPrinter.current_text_offset = gDisplayedStringBattle; + textPrinter.windowId = gUnknown_0860D3F1[i][0]; + textPrinter.currentY = gUnknown_0860D3F1[i][1]; + AddTextPrinter(&textPrinter, 0, NULL); + } + gTasks[taskId].data[0]++; + break; + case 5: + PutWindowTilemap(0); + PutWindowTilemap(1); + PutWindowTilemap(2); + CopyWindowToVram(0, 3); + CopyWindowToVram(1, 3); + CopyWindowToVram(2, 3); + SetHBlankCallback(HblankCb_BattleDome); + SetVBlankCallback(VblankCb1_BattleDome); + if (r4 == 2) + { + if (r10 == 0) + { + i = CreateTask(sub_819395C, 0); + gTasks[i].data[0] = r10; + gTasks[i].data[1] = r10; + gTasks[i].data[6] = gTasks[taskId].data[4]; + } + else + { + i = CreateTask(sub_8194950, 0); + gTasks[i].data[0] = 0; + } + } + else + { + i = gTasks[taskId].data[3]; + gTasks[i].data[0] = 0; + } + ScanlineEffect_Clear(); + for (i = 0; i < 91; i++) + { + gScanlineEffectRegBuffers[0][i] = 0x1F0A; + gScanlineEffectRegBuffers[1][i] = 0x1F0A; + } + for (i = 91; i < 160; i++) + { + asm(""::"r"(i)); + gScanlineEffectRegBuffers[0][i] = 0x1F09; + gScanlineEffectRegBuffers[1][i] = 0x1F09; + } + ScanlineEffect_SetParams(gUnknown_0860CF44); + DestroyTask(taskId); + break; + } +} + +static void sub_81948EC(u8 tournamentId, u8 arg1) +{ + s32 i; + const struct UnkStruct_860DD10 *structPtr = gUnknown_0860DD10[tournamentId][arg1]; + + for (i = 0; i < gUnknown_0860DE10[tournamentId][arg1]; i++) + CopyToBgTilemapBufferRect_ChangePalette(1, &structPtr[i].src, structPtr[i].x, structPtr[i].y, 1, 1, 0x11); + + CopyBgTilemapBufferToVram(1); +} + +static void sub_8194950(u8 taskId) +{ + s32 i; + struct TextSubPrinter textPrinter; + + switch (gTasks[taskId].data[0]) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); + gTasks[taskId].data[0] = 1; + break; + case 1: + if (!gPaletteFade.active) + { + gTasks[taskId].data[0] = 2; + gTasks[taskId].data[3] = 64; + textPrinter.fontId = 2; + textPrinter.x = 0; + textPrinter.y = 0; + textPrinter.letterSpacing = 2; + textPrinter.lineSpacing = 0; + textPrinter.fontColor_l = 0; + textPrinter.fgColor = 11; + textPrinter.bgColor = 0; + textPrinter.shadowColor = 13; + for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) + { + CopyDomeTrainerName(gDisplayedStringBattle, gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId); + if (gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt == gSaveBlock2Ptr->frontier.field_CB2 - 1 + && gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated) + { + if (gUnknown_0860D3F1[i][0] == 0) + textPrinter.currentX = GetStringWidthDifference(textPrinter.fontId, gDisplayedStringBattle, 0x3D, textPrinter.letterSpacing); + else + textPrinter.currentX = 3; + + textPrinter.current_text_offset = gDisplayedStringBattle; + textPrinter.windowId = gUnknown_0860D3F1[i][0]; + textPrinter.currentY = gUnknown_0860D3F1[i][1]; + AddTextPrinter(&textPrinter, 0, NULL); + } + if (!gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated) + { + s32 var = gSaveBlock2Ptr->frontier.field_CB2 - 1; + sub_81948EC(i, var); + } + } + } + break; + case 2: + if (--gTasks[taskId].data[3] == 0) + gTasks[taskId].data[0] = 3; + break; + case 3: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + gTasks[taskId].data[0] = 4; + } + break; + case 4: + if (!gPaletteFade.active) + { + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); + DestroyTask(taskId); + } + break; + } +} + +static void CB2_BattleDome(void) +{ + AnimateSprites(); + BuildOamBuffer(); + RunTextPrinters(); + UpdatePaletteFade(); + RunTasks(); +} + +static void VblankCb0_BattleDome(void) +{ + ChangeBgX(3, 0x80, 1); + ChangeBgY(3, 0x80, 2); + SetGpuReg(REG_OFFSET_BG0HOFS, gBattle_BG0_X); + SetGpuReg(REG_OFFSET_BG0VOFS, gBattle_BG0_Y); + SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X); + SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); + SetGpuReg(REG_OFFSET_BG2HOFS, gBattle_BG2_X); + SetGpuReg(REG_OFFSET_BG2VOFS, gBattle_BG2_Y); + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +#define SET_WIN0H_WIN1H(win0H, win1H) \ +{ \ + *(vu32*)(REG_ADDR_WIN0H) = ((win0H << 16) | (win1H)); \ +} + +static void HblankCb_BattleDome(void) +{ + register u32 vCount asm("r0") = REG_VCOUNT; + register u32 vCount_ asm("r1") = vCount; + if (vCount > 41) + { + if (vCount < 50) + { + REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR; + SET_WIN0H_WIN1H(WINHV_COORDS(152, 155), WINHV_COORDS(85, 88)); + return; + } + else if (vCount > 57) + { + if (vCount < 75) + { + REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR; + SET_WIN0H_WIN1H(WINHV_COORDS(144, 152), WINHV_COORDS(88, 96)); + return; + } + else if (vCount < 82) + { + REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR; + SET_WIN0H_WIN1H(WINHV_COORDS(152, 155), WINHV_COORDS(85, 88)); + return; + } + else if (vCount > 94) + { + if (vCount < 103) + { + REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_OBJ | WININ_WIN1_CLR; + SET_WIN0H_WIN1H(WINHV_COORDS(152, 155), WINHV_COORDS(85, 88)); + return; + } + else if (vCount < 119) + { + REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_OBJ | WININ_WIN1_CLR; + SET_WIN0H_WIN1H(WINHV_COORDS(144, 152), WINHV_COORDS(88, 96)); + return; + } + else if (vCount > 126) + { + if (vCount_ < 135) + { + REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_OBJ | WININ_WIN1_CLR; + SET_WIN0H_WIN1H(WINHV_COORDS(152, 155), WINHV_COORDS(85, 88)); + return; + } + } + } + } + } + + REG_WININ = WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ | WININ_WIN1_BG_ALL | WININ_WIN1_CLR | WININ_WIN1_OBJ; + SET_WIN0H_WIN1H(0, 0); +} + +static void VblankCb1_BattleDome(void) +{ + SetGpuReg(REG_OFFSET_BG0HOFS, gBattle_BG0_X); + SetGpuReg(REG_OFFSET_BG0VOFS, gBattle_BG0_Y); + SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X); + SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); + ChangeBgY(2, 0x80, 2); + ChangeBgY(3, 0x80, 1); + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + ScanlineEffect_InitHBlankDmaTransfer(); +} + +static void sub_8194D48(void) +{ + gFacilityTrainerMons = gBattleFrontierMons; + gFacilityTrainers = gBattleFrontierTrainers; +} + +static void sub_8194D68(void) +{ + s32 i, moveSlot; + + for (i = 0; i < 2; i++) + { + s32 playerMonId = gSaveBlock2Ptr->frontier.field_CAA[gUnknown_0203CEF8[i] - 1] - 1; + s32 count; + + for (moveSlot = 0; moveSlot < 4; moveSlot++) + { + count = 0; + while (count < 4) + { + if (GetMonData(&gSaveBlock1Ptr->playerParty[playerMonId], MON_DATA_MOVE1 + count, NULL) == GetMonData(&gPlayerParty[i], MON_DATA_MOVE1 + moveSlot, NULL)) + break; + count++; + } + if (count == 4) + SetMonMoveSlot(&gPlayerParty[i], MOVE_SKETCH, moveSlot); + } + + gSaveBlock1Ptr->playerParty[playerMonId] = gPlayerParty[i]; + } +} + +static void sub_8194E44(void) +{ + s32 i; + + for (i = 0; i < 2; i++) + { + s32 playerMonId = gSaveBlock2Ptr->frontier.field_CAA[gUnknown_0203CEF8[i] - 1] - 1; + u16 item = GetMonData(&gSaveBlock1Ptr->playerParty[playerMonId], MON_DATA_HELD_ITEM, NULL); + SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &item); + } +} + +static void sub_8194EB4(void) +{ + sub_80F94E8(); +} + +static void sub_8194EC0(void) +{ + if (TrainerIdToTournamentId(gTrainerBattleOpponent_A) > TrainerIdToTournamentId(TRAINER_PLAYER)) + gSpecialVar_Result = 1; + else + gSpecialVar_Result = 2; +} + +static void sub_8194EF8(void) +{ + s32 i; + + sub_8194D48(); + for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) + { + if (!gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated) + break; + } + CopyDomeTrainerName(gStringVar1, gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId); +} + +static void sub_8194F58(void) +{ + s32 i, j, k; + s32 monLevel; + s32 species[3]; + s32 monTypesBits; + s32 trainerId; + s32 monTournamentId; + u8 lvlMode; + u16 *statSums; + s32 *statValues; + u8 ivs = 0; + + species[0] = 0; + species[1] = 0; + species[2] = 0; + if ((gSaveBlock2Ptr->frontier.field_D0A != -gSaveBlock2Ptr->frontier.field_D0B) && gSaveBlock2Ptr->frontier.field_CA8 != 1) + return; + + statSums = AllocZeroed(sizeof(u16) * DOME_TOURNAMENT_TRAINERS_COUNT); + statValues = AllocZeroed(sizeof(s32) * 6); + lvlMode = gSaveBlock2Ptr->frontier.lvlMode; + gSaveBlock2Ptr->frontier.lvlMode = 0; + // This one, I'd like to call a 'C fakematching'. + { + u8 one; + gSaveBlock2Ptr->frontier.field_D0A = (one = 1); + gSaveBlock2Ptr->frontier.field_D0B = one; + } + + for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) + { + do + { + if (i < 5) + trainerId = Random() % 10; + else if (i < 15) + trainerId = Random() % 20 + 10; + else + trainerId = Random() % 10 + 30; + + for (j = 0; j < i; j++) + { + if (gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId == trainerId) + break; + } + } while (j != i); + + gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId = trainerId; + for (j = 0; j < 3; j++) + { + // Make sure the mon is valid. + do + { + monTournamentId = RandomizeFacilityTrainerMonId(trainerId); + for (k = 0; k < j; k++) + { + s32 checkingMonId = gSaveBlock2Ptr->frontier.domeMonId[i][k]; + if (checkingMonId == monTournamentId + || species[0] == gFacilityTrainerMons[monTournamentId].species + || species[1] == gFacilityTrainerMons[monTournamentId].species + || gFacilityTrainerMons[checkingMonId].itemTableId == gFacilityTrainerMons[monTournamentId].itemTableId) + break; + } + } while (k != j); + + gSaveBlock2Ptr->frontier.domeMonId[i][j] = monTournamentId; + species[j] = gFacilityTrainerMons[monTournamentId].species; + } + gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated = 0; + gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt = 0; + gSaveBlock2Ptr->frontier.domeTrainers[i].unk3 = 0; + } + + monLevel = 50; + for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) + { + monTypesBits = 0; + statSums[i] = 0; + ivs = GetDomeTrainerMonIvs(gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId); + for (j = 0; j < 3; j++) + { + CalcDomeMonStats(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].species, + monLevel, ivs, + gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].evSpread, + gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].nature, + statValues); + + statSums[i] += statValues[STAT_ATK]; + statSums[i] += statValues[STAT_DEF]; + statSums[i] += statValues[STAT_SPATK]; + statSums[i] += statValues[STAT_SPDEF]; + statSums[i] += statValues[STAT_SPEED]; + statSums[i] += statValues[STAT_HP]; + monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].species].type1]; + monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].species].type2]; + } + + // Because GF hates temporary vars, trainerId acts like monTypesCount here. + for (trainerId = 0, j = 0; j < 32; j++) + { + if (monTypesBits & 1) + trainerId++; + monTypesBits >>= 1; + } + statSums[i] += (trainerId * monLevel) / 20; + } + + for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT - 1; i++) + { + for (j = i + 1; j < DOME_TOURNAMENT_TRAINERS_COUNT; j++) + { + if (statSums[i] < statSums[j]) + { + SwapDomeTrainers(i, j, statSums); + } + else if (statSums[i] == statSums[j]) + { + if (gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId > gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId) + SwapDomeTrainers(i, j, statSums); + } + } + } + + Free(statSums); + Free(statValues); + + for (i = 0; i < 4; i++) + DecideRoundWinners(i); + + gSaveBlock2Ptr->frontier.lvlMode = lvlMode; +} + +static s32 TrainerIdToTournamentId(u16 trainerId) +{ + s32 i; + + for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) + { + if (gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId == trainerId) + break; + } + + return i; +} + +// The same as the above one, but has global scope. +s32 TrainerIdToDomeTournamentId(u16 trainerId) +{ + s32 i; + + for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) + { + if (gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId == trainerId) + break; + } + + return i; +} + +static u8 sub_81953E8(u8 tournamentId, u8 arg1) +{ + u8 arr[2]; + sub_8192F08(gUnknown_0860D1A0[gUnknown_0860D1C0[tournamentId] / 2][arg1] - 16, arr); + if (tournamentId == arr[0]) + return arr[1]; + else + return arr[0]; +} + +static void DecideRoundWinners(u8 roundId) +{ + s32 i; + s32 moveSlot, monId1, monId2; + s32 tournamentId1, tournamentId2; + s32 species; + s32 points1 = 0, points2 = 0; + + for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) + { + if (gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated || gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId == TRAINER_PLAYER) + continue; + + tournamentId1 = i; + tournamentId2 = TournamentIdOfOpponent(roundId, gSaveBlock2Ptr->frontier.domeTrainers[tournamentId1].trainerId); + // Frontier Brain always wins, check tournamentId1. + if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentId1].trainerId == TRAINER_FRONTIER_BRAIN && tournamentId2 != 0xFF) + { + gSaveBlock2Ptr->frontier.domeTrainers[tournamentId2].isEliminated = 1; + gSaveBlock2Ptr->frontier.domeTrainers[tournamentId2].eliminatedAt = roundId; + gSaveBlock2Ptr->frontier.field_EC0[tournamentId2] = GetWinningMove(tournamentId1, tournamentId2, roundId); + } + // Frontier Brain always wins, check tournamentId2. + else if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentId2].trainerId == TRAINER_FRONTIER_BRAIN && tournamentId1 != 0xFF) + { + gSaveBlock2Ptr->frontier.domeTrainers[tournamentId1].isEliminated = 1; + gSaveBlock2Ptr->frontier.domeTrainers[tournamentId1].eliminatedAt = roundId; + gSaveBlock2Ptr->frontier.field_EC0[tournamentId1] = GetWinningMove(tournamentId2, tournamentId1, roundId); + } + // Decide which one of two trainers wins! + else if (tournamentId2 != 0xFF) + { + // BUG: points1 and points2 are not cleared at the beginning of the loop resulting in not fair results. + + // Calculate points for both trainers. + for (monId1 = 0; monId1 < 3; monId1++) + { + for (moveSlot = 0; moveSlot < 4; moveSlot++) + { + for (monId2 = 0; monId2 < 3; monId2++) + { + points1 += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentId1][monId1]].moves[moveSlot], + gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentId2][monId2]].species, 2); + } + } + species = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentId1][monId1]].species; + points1 += ( gBaseStats[species].baseHP + + gBaseStats[species].baseAttack + + gBaseStats[species].baseDefense + + gBaseStats[species].baseSpeed + + gBaseStats[species].baseSpAttack + + gBaseStats[species].baseSpDefense) / 10; + } + // Random part of the formula. + points1 += (Random() & 0x1F); + // Favor trainers with higher id; + points1 += tournamentId1; + + for (monId1 = 0; monId1 < 3; monId1++) + { + for (moveSlot = 0; moveSlot < 4; moveSlot++) + { + for (monId2 = 0; monId2 < 3; monId2++) + { + points2 += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentId2][monId1]].moves[moveSlot], + gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentId1][monId2]].species, 2); + } + } + species = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentId2][monId1]].species; + points2 += ( gBaseStats[species].baseHP + + gBaseStats[species].baseAttack + + gBaseStats[species].baseDefense + + gBaseStats[species].baseSpeed + + gBaseStats[species].baseSpAttack + + gBaseStats[species].baseSpDefense) / 10; + } + // Random part of the formula. + points2 += (Random() & 0x1F); + // Favor trainers with higher id; + points2 += tournamentId2; + + if (points1 > points2) + { + gSaveBlock2Ptr->frontier.domeTrainers[tournamentId2].isEliminated = 1; + gSaveBlock2Ptr->frontier.domeTrainers[tournamentId2].eliminatedAt = roundId; + gSaveBlock2Ptr->frontier.field_EC0[tournamentId2] = GetWinningMove(tournamentId1, tournamentId2, roundId); + } + else if (points1 < points2) + { + gSaveBlock2Ptr->frontier.domeTrainers[tournamentId1].isEliminated = 1; + gSaveBlock2Ptr->frontier.domeTrainers[tournamentId1].eliminatedAt = roundId; + gSaveBlock2Ptr->frontier.field_EC0[tournamentId1] = GetWinningMove(tournamentId2, tournamentId1, roundId); + } + // Points are the same, so we favor the one with the higher id. + else if (tournamentId1 > tournamentId2) + { + gSaveBlock2Ptr->frontier.domeTrainers[tournamentId2].isEliminated = 1; + gSaveBlock2Ptr->frontier.domeTrainers[tournamentId2].eliminatedAt = roundId; + gSaveBlock2Ptr->frontier.field_EC0[tournamentId2] = GetWinningMove(tournamentId1, tournamentId2, roundId); + } + else + { + gSaveBlock2Ptr->frontier.domeTrainers[tournamentId1].isEliminated = 1; + gSaveBlock2Ptr->frontier.domeTrainers[tournamentId1].eliminatedAt = roundId; + gSaveBlock2Ptr->frontier.field_EC0[tournamentId1] = GetWinningMove(tournamentId2, tournamentId1, roundId); + } + } + } +} + +static void CopyDomeTrainerName(u8 *dst, u16 trainerId) +{ + s32 i = 0; + GetFacilityEnemyMonLevel(); // Unused return value. + + if (trainerId == TRAINER_FRONTIER_BRAIN) + { + CopyDomeBrainTrainerName(dst); + } + else + { + if (trainerId == TRAINER_PLAYER) + { + for (i = 0; i < PLAYER_NAME_LENGTH; i++) + dst[i] = gSaveBlock2Ptr->playerName[i]; + } + else if (trainerId < 300) + { + for (i = 0; i < FRONTIER_TRAINER_NAME_LENGTH; i++) + dst[i] = gFacilityTrainers[trainerId].trainerName[i]; + } + dst[i] = EOS; + } +} + +static u8 GetDomeBrainTrainerPicId(void) +{ + return gTrainers[TRAINER_TUCKER].trainerPic; +} + +static u8 GetDomeBrainTrainerClass(void) +{ + return gTrainers[TRAINER_TUCKER].trainerClass; +} + +static void CopyDomeBrainTrainerName(u8 *dst) +{ + s32 i; + + for (i = 0; i < FRONTIER_TRAINER_NAME_LENGTH; i++) + dst[i] = gTrainers[TRAINER_TUCKER].trainerName[i]; + dst[i] = EOS; +} diff --git a/src/battle_frontier_1.c b/src/battle_frontier_1.c new file mode 100644 index 000000000..ee8a42954 --- /dev/null +++ b/src/battle_frontier_1.c @@ -0,0 +1,118 @@ +#include "global.h" +#include "event_data.h" +#include "battle_setup.h" +#include "overworld.h" +#include "random.h" +#include "battle_tower.h" + +extern void sub_8162614(u16, u8); + +extern void (* const gUnknown_0860DE50[])(void); +extern const u32 gUnknown_0860DE98[][2]; +extern const u32 gUnknown_0860DEA8[][2]; + +// code +void sub_8195960(void) +{ + gUnknown_0860DE50[gSpecialVar_0x8004](); +} + +void sub_8195980(void) +{ + u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; + u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); + + gSaveBlock2Ptr->frontier.field_CA8 = 0; + gSaveBlock2Ptr->frontier.field_CB2 = 0; + gSaveBlock2Ptr->frontier.field_CA9_a = 0; + gSaveBlock2Ptr->frontier.field_CA9_b = 0; + if (!(gSaveBlock2Ptr->frontier.field_CDC & gUnknown_0860DE98[battleMode][lvlMode])) + gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode] = 0; + + saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1); + gTrainerBattleOpponent_A = 0; +} + +void sub_8195A38(void) +{ + u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; + u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); + + switch (gSpecialVar_0x8005) + { + case 0: + gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_DC4[1]; + break; + case 1: + gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode]; + break; + case 2: + gSpecialVar_Result = ((gSaveBlock2Ptr->frontier.field_CDC & gUnknown_0860DE98[battleMode][lvlMode]) != 0); + break; + } +} + +void sub_8195AE4(void) +{ + u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; + u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); + + switch (gSpecialVar_0x8005) + { + case 0: + gSaveBlock2Ptr->frontier.field_DC4[1] = gSpecialVar_0x8006; + break; + case 1: + gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode] = gSpecialVar_0x8006; + break; + case 2: + if (gSpecialVar_0x8006) + gSaveBlock2Ptr->frontier.field_CDC |= gUnknown_0860DE98[battleMode][lvlMode]; + else + gSaveBlock2Ptr->frontier.field_CDC &= gUnknown_0860DEA8[battleMode][lvlMode]; + break; + } +} + +void sub_8195BB0(void) +{ + u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); + u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; + + if (gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode] < 50) + gSpecialVar_Result = Random() % 3; + else if (gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode] < 99) + gSpecialVar_Result = 3; + else + gSpecialVar_Result = 4; +} + +void sub_8195C20(void) +{ + gTrainerBattleOpponent_A = 5 *(Random() % 255) / 64u; + sub_8162614(gTrainerBattleOpponent_A, 0); +} + +void sub_8195C50(void) +{ + if (gTrainerBattleOpponent_A < 300) + ConvertBattleFrontierTrainerSpeechToString(gFacilityTrainers[gTrainerBattleOpponent_A].speechBefore); +} + +/* +void sub_8195C7C(void) +{ + u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; + u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); + + if (gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode] < 9999) + { + u16 wat = 0; + gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode]++; + if (lvlMode < gSaveBlock2Ptr->frontier.field_DD0[battleMode][lvlMode]) + wat = 1; + if (gSaveBlock2Ptr->frontier.field_DC8[battleMode][wat] != 0) + gSaveBlock2Ptr->frontier.field_DD0[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode]; + } +} +*/ diff --git a/src/battle_main.c b/src/battle_main.c index 86937f85f..1a1f6f61a 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -734,7 +734,7 @@ static void SetPlayerBerryDataInBattleStruct(void) if (IsEnigmaBerryValid() == TRUE) { - for (i = 0; i < BERRY_NAME_COUNT - 1; i++) + for (i = 0; i < BERRY_NAME_LENGTH; i++) battleBerry->name[i] = gSaveBlock1Ptr->enigmaBerry.berry.name[i]; battleBerry->name[i] = EOS; @@ -748,7 +748,7 @@ static void SetPlayerBerryDataInBattleStruct(void) { const struct Berry *berryData = GetBerryInfo(ItemIdToBerryType(ITEM_ENIGMA_BERRY)); - for (i = 0; i < BERRY_NAME_COUNT - 1; i++) + for (i = 0; i < BERRY_NAME_LENGTH; i++) battleBerry->name[i] = berryData->name[i]; battleBerry->name[i] = EOS; @@ -769,7 +769,7 @@ static void SetAllPlayersBerryData(void) { if (IsEnigmaBerryValid() == TRUE) { - for (i = 0; i < BERRY_NAME_COUNT - 1; i++) + for (i = 0; i < BERRY_NAME_LENGTH; i++) { gEnigmaBerries[0].name[i] = gSaveBlock1Ptr->enigmaBerry.berry.name[i]; gEnigmaBerries[2].name[i] = gSaveBlock1Ptr->enigmaBerry.berry.name[i]; @@ -792,7 +792,7 @@ static void SetAllPlayersBerryData(void) { const struct Berry *berryData = GetBerryInfo(ItemIdToBerryType(ITEM_ENIGMA_BERRY)); - for (i = 0; i < BERRY_NAME_COUNT - 1; i++) + for (i = 0; i < BERRY_NAME_LENGTH; i++) { gEnigmaBerries[0].name[i] = berryData->name[i]; gEnigmaBerries[2].name[i] = berryData->name[i]; @@ -830,7 +830,7 @@ static void SetAllPlayersBerryData(void) src = (struct BattleEnigmaBerry *)(gBlockRecvBuffer[i] + 2); battlerId = gLinkPlayers[i].id; - for (j = 0; j < BERRY_NAME_COUNT - 1; j++) + for (j = 0; j < BERRY_NAME_LENGTH; j++) gEnigmaBerries[battlerId].name[j] = src->name[j]; gEnigmaBerries[battlerId].name[j] = EOS; @@ -847,7 +847,7 @@ static void SetAllPlayersBerryData(void) { src = (struct BattleEnigmaBerry *)(gBlockRecvBuffer[i] + 2); - for (j = 0; j < BERRY_NAME_COUNT - 1; j++) + for (j = 0; j < BERRY_NAME_LENGTH; j++) { gEnigmaBerries[i].name[j] = src->name[j]; gEnigmaBerries[i + 2].name[j] = src->name[j]; @@ -3888,7 +3888,7 @@ static void TryDoEventsBeforeFirstTurn(void) // Check all switch in items having effect from the fastest mon to slowest. while (gBattleStruct->switchInItemsCounter < gBattlersCount) { - if (ItemBattleEffects(ITEMEFFECT_ON_SWITCH_IN, gBattlerByTurnOrder[gBattleStruct->switchInItemsCounter], 0) != 0) + if (ItemBattleEffects(ITEMEFFECT_ON_SWITCH_IN, gBattlerByTurnOrder[gBattleStruct->switchInItemsCounter], FALSE)) effect++; gBattleStruct->switchInItemsCounter++; @@ -3929,7 +3929,7 @@ static void TryDoEventsBeforeFirstTurn(void) if (gBattleTypeFlags & BATTLE_TYPE_ARENA) { StopCryAndClearCrySongs(); - BattleScriptExecute(BattleScript_82DB8BE); + BattleScriptExecute(BattleScript_ArenaTurnBeginning); } } @@ -4019,7 +4019,7 @@ void BattleTurnPassed(void) if (gBattleTypeFlags & BATTLE_TYPE_PALACE) BattleScriptExecute(BattleScript_82DB881); else if (gBattleTypeFlags & BATTLE_TYPE_ARENA && gBattleStruct->field_DA == 0) - BattleScriptExecute(BattleScript_82DB8BE); + BattleScriptExecute(BattleScript_ArenaTurnBeginning); } u8 IsRunningFromBattleImpossible(void) @@ -4596,13 +4596,10 @@ static void sub_803CDF8(void) void SwapTurnOrder(u8 id1, u8 id2) { - u32 temp = gActionsByTurnOrder[id1]; - gActionsByTurnOrder[id1] = gActionsByTurnOrder[id2]; - gActionsByTurnOrder[id2] = temp; - - temp = gBattlerByTurnOrder[id1]; - gBattlerByTurnOrder[id1] = gBattlerByTurnOrder[id2]; - gBattlerByTurnOrder[id2] = temp; + u32 temp; + + SWAP(gActionsByTurnOrder[id1], gActionsByTurnOrder[id2], temp); + SWAP(gBattlerByTurnOrder[id1], gBattlerByTurnOrder[id2], temp); } u8 GetWhoStrikesFirst(u8 battler1, u8 battler2, bool8 ignoreChosenMoves) diff --git a/src/battle_message.c b/src/battle_message.c index 13502d6f2..78b9ac53b 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -1248,7 +1248,7 @@ static const u8 sText_Round2[] = _("Round 2"); static const u8 sText_Semifinal[] = _("Semifinal"); static const u8 sText_Final[] = _("Final"); -const u8 * const gRoundsStringTable[] = +const u8 *const gRoundsStringTable[] = { sText_Round1, sText_Round2, diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c new file mode 100644 index 000000000..6629e6a0a --- /dev/null +++ b/src/battle_pyramid_bag.c @@ -0,0 +1,1506 @@ +#include "global.h" +#include "battle_pyramid_bag.h" +#include "main.h" +#include "battle_controllers.h" +#include "bg.h" +#include "field_effect.h" +#include "field_weather.h" +#include "gpu_regs.h" +#include "malloc.h" +#include "menu.h" +#include "overworld.h" +#include "menu_helpers.h" +#include "overworld.h" +#include "palette.h" +#include "party_menu.h" +#include "scanline_effect.h" +#include "script.h" +#include "task.h" +#include "decompress.h" +#include "graphics.h" +#include "string_util.h" +#include "list_menu.h" +#include "strings.h" +#include "item.h" +#include "sound.h" +#include "item_menu.h" +#include "mail.h" +#include "item_use.h" +#include "event_data.h" +#include "text_window.h" +#include "international_string_util.h" +#include "item_icon.h" +#include "constants/items.h" +#include "constants/rgb.h" +#include "constants/songs.h" + +EWRAM_DATA struct PyramidBagResources *gPyramidBagResources = NULL; +EWRAM_DATA struct PyramidBagCursorData gPyramidBagCursorData = {0}; + +// gfx +extern const u8 gUnknown_08D9ADD0[]; +extern const u8 gUnknown_08D9AE04[]; +extern const u8 gUnknown_08D9AF44[]; +extern const u16 gUnknown_0860F074[]; + +// This file's functions. +static void Task_HandlePyramidBagInput(u8 taskId); +static void sub_81C4F44(u8 taskId); +static void sub_81C5B4C(u8 taskId); +static void Task_BeginItemSwap(u8 taskId); +static void sub_81C5D20(u8 taskId); +static void sub_81C674C(u8 taskId); +static void HandleMenuActionInput(u8 taskId); +static void HandleFewMenuActionsInput(u8 taskId); +static void sub_81C66EC(u8 taskId); +static void SetTaskToMainPyramidBagInputHandler(u8 taskId); +static void sub_81C6350(u8 taskId); +static void sub_81C64B4(u8 taskId); +static void sub_81C65CC(u8 taskId); +static void sub_81C66AC(u8 taskId); +static void PerformItemSwap(u8 taskId); +static void Task_ItemSwapHandleInput(u8 taskId); +static void sub_81C6A14(u8 taskId); +static void SetBagItemsListTemplate(void); +static void sub_81C504C(void); +static void sub_81C51DC(void); +static void AddScrollArrow(void); +static void sub_81C56F8(void); +static void sub_81C5A20(void); +static void sub_81C6BD8(void); +static void sub_81C6EF4(void); +static void sub_81C700C(void); +static void sub_81C6E98(void); +static void sub_81C6F20(void); +static void sub_81C6404(void); +static void sub_81C6E1C(void); +static bool8 sub_81C5238(void); +static bool8 sub_81C5078(void); +static void ShowItemImage(u16 itemId, u8 itemSpriteArrayId); +static void PyramidBag_CopyItemName(u8 *dst, u16 itemId); +static void sub_81C6FF8(u8 arg0); +static void PrintItemDescription(s32 listMenuId); +static void sub_81C5AB8(u8 y, u8 arg1); +static void PrintOnWindow_Font1(u8 windowId, const u8 *src, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorTableId); +static void PrintOnWindow_Font7(u8 windowId, const u8 *src, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorTableId); +static u8 sub_81C6D24(u8 windowArrayId); +static void sub_81C6D6C(u8 windowArrayId); +static void sub_81C5EAC(u8 windowId); +static void sub_81C5F08(u8 windowId, u8 horizontalCount, u8 verticalCount); +static bool8 IsValidMenuAction(s8 arg0); +static void sub_81C6DAC(u8 taskId, const struct YesNoFuncTable *yesNoTable); +static void sub_81C6CEC(u8 windowId); +static void sub_81C704C(u8 y); +static void sub_81C7028(bool8 invisible); +static void sub_81C6F68(struct Sprite *sprite); +static void BagAction_UseOnField(u8 taskId); +static void BagAction_Toss(u8 taskId); +static void BagAction_Give(u8 taskId); +static void BagAction_Cancel(u8 taskId); +static void BagAction_UseInBattle(u8 taskId); +static void PyramidBagMoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list); +static void PrintItemQuantity(u8 windowId, s32 itemIndex, u8 y); +static void TossItem(u8 taskId); +static void DontTossItem(u8 taskId); + +// Const rom data. +static const struct BgTemplate gUnknown_0861F2B4[] = +{ + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0 + }, + { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0 + }, + { + .bg = 2, + .charBaseIndex = 3, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0 + }, +}; + +static const struct ListMenuTemplate gUnknown_0861F2C0 = +{ + .items = NULL, + .moveCursorFunc = PyramidBagMoveCursorFunc, + .itemPrintFunc = PrintItemQuantity, + .totalItems = 0, + .maxShowed = 0, + .windowId = 0, + .header_X = 0, + .item_X = 8, + .cursor_X = 0, + .upText_Y = 1, + .cursorPal = 2, + .fillValue = 0, + .cursorShadowPal = 3, + .lettersSpacing = 0, + .itemVerticalPadding = 0, + .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, + .fontId = 7, + .cursorKind = 0 +}; + +#define ACTION_USE_FIELD 0 +#define ACTION_TOSS 1 +#define ACTION_GIVE 2 +#define ACTION_CANCEL 3 +#define ACTION_USE_BATTLE 4 +#define ACTION_DUMMY 5 + +static const struct MenuAction sMenuActions[] = +{ + [ACTION_USE_FIELD] = { gMenuText_Use, BagAction_UseOnField }, + [ACTION_TOSS] = { gMenuText_Toss, BagAction_Toss }, + [ACTION_GIVE] = { gMenuText_Give, BagAction_Give }, + [ACTION_CANCEL] = { gText_Cancel2, BagAction_Cancel }, + [ACTION_USE_BATTLE] = { gMenuText_Use, BagAction_UseInBattle }, + [ACTION_DUMMY] = { gText_EmptyString2, NULL }, +}; + +static const u8 sFieldMenuActionIds[] = {ACTION_USE_FIELD, ACTION_GIVE, ACTION_TOSS, ACTION_CANCEL}; +static const u8 gUnknown_0861F30C[] = {ACTION_TOSS, ACTION_CANCEL}; +static const u8 sBattleMenuActionIds[] = {ACTION_USE_BATTLE, ACTION_CANCEL}; +static const u8 gUnknown_0861F310[] = {ACTION_CANCEL}; + +static const struct YesNoFuncTable sYesNoTossFuncions = +{ + TossItem, DontTossItem +}; + +static const u8 sColorTable[][3] = +{ + {0, 2, 3}, + {0, 3, 1}, + {1, 2, 3}, +}; + +static const struct WindowTemplate gUnknown_0861F328[] = +{ + { + .priority = 0, + .tilemapLeft = 14, + .tilemapTop = 2, + .width = 15, + .height = 16, + .paletteNum = 15, + .baseBlock = 30 + }, + { + .priority = 0, + .tilemapLeft = 0, + .tilemapTop = 13, + .width = 14, + .height = 6, + .paletteNum = 15, + .baseBlock = 270 + }, + { + .priority = 1, + .tilemapLeft = 2, + .tilemapTop = 15, + .width = 27, + .height = 4, + .paletteNum = 15, + .baseBlock = 354 + }, + { + .priority = 1, + .tilemapLeft = 24, + .tilemapTop = 17, + .width = 5, + .height = 2, + .paletteNum = 15, + .baseBlock = 462 + }, + DUMMY_WIN_TEMPLATE, +}; + +static const struct WindowTemplate gUnknown_0861F350[] = +{ + { + .priority = 1, + .tilemapLeft = 22, + .tilemapTop = 17, + .width = 7, + .height = 2, + .paletteNum = 15, + .baseBlock = 472 + }, + { + .priority = 1, + .tilemapLeft = 22, + .tilemapTop = 15, + .width = 7, + .height = 4, + .paletteNum = 15, + .baseBlock = 472 + }, + { + .priority = 1, + .tilemapLeft = 15, + .tilemapTop = 15, + .width = 14, + .height = 4, + .paletteNum = 15, + .baseBlock = 472 + }, + { + .priority = 1, + .tilemapLeft = 15, + .tilemapTop = 13, + .width = 14, + .height = 6, + .paletteNum = 15, + .baseBlock = 472 + }, + { + .priority = 1, + .tilemapLeft = 24, + .tilemapTop = 15, + .width = 5, + .height = 4, + .paletteNum = 15, + .baseBlock = 472 + }, +}; + +extern const struct CompressedSpriteSheet gUnknown_0861F3CC; +extern const struct SpriteTemplate gUnknown_0861F3D4; + +// code +void sub_81C4EEC(void) +{ + gPyramidBagCursorData.cursorPosition = 0; + gPyramidBagCursorData.scrollPosition = 0; +} + +void CB2_PyramidBagMenuFromStartMenu(void) +{ + sub_81C4F98(0, CB2_ReturnToFieldWithOpenMenu); +} + +static void sub_81C4F10(void) +{ + sub_81C4F98(1, SetCB2ToReshowScreenAfterMenu2); +} + +void sub_81C4F24(void) +{ + ScriptContext2_Enable(); + FadeScreen(1, 0); + CreateTask(sub_81C4F44, 10); +} + +static void sub_81C4F44(u8 taskId) +{ + if (!gPaletteFade.active) + { + overworld_free_bg_tilemaps(); + gFieldCallback2 = hm_add_c3_without_phase_2; + sub_81C4F98(3, CB2_ReturnToField); + DestroyTask(taskId); + } +} + +void sub_81C4F84(void) +{ + sub_81C4F98(4, gPyramidBagCursorData.callback); +} + +void sub_81C4F98(u8 a0, void (*callback)(void)) +{ + gPyramidBagResources = AllocZeroed(sizeof(*gPyramidBagResources)); + + if (a0 != 4) + gPyramidBagCursorData.unk4 = a0; + + if (callback != NULL) + gPyramidBagCursorData.callback = callback; + + gPyramidBagResources->callback2 = NULL; + gPyramidBagResources->unk814 = 0xFF; + gPyramidBagResources->scrollArrowSpriteId = 0xFF; + + memset(gPyramidBagResources->itemsSpriteIds, 0xFF, sizeof(gPyramidBagResources->itemsSpriteIds)); + memset(gPyramidBagResources->windowIds, 0xFF, sizeof(gPyramidBagResources->windowIds)); + + SetMainCallback2(sub_81C504C); +} + +static void sub_81C501C(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + do_scheduled_bg_tilemap_copies_to_vram(); + UpdatePaletteFade(); +} + +static void sub_81C5038(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static void sub_81C504C(void) +{ + while (sub_81221EC() != TRUE && sub_81C5078() != TRUE && sub_81221AC() != TRUE); +} + +static bool8 sub_81C5078(void) +{ + switch (gMain.state) + { + case 0: + SetVBlankHBlankCallbacksToNull(); + clear_scheduled_bg_copies_to_vram(); + gMain.state++; + break; + case 1: + ScanlineEffect_Stop(); + gMain.state++; + break; + case 2: + FreeAllSpritePalettes(); + gMain.state++; + break; + case 3: + ResetPaletteFade(); + gPaletteFade.bufferTransferDisabled = TRUE; + gMain.state++; + break; + case 4: + ResetSpriteData(); + gMain.state++; + break; + case 5: + if (!sub_81221AC()) + { + ResetTasks(); + } + gMain.state++; + break; + case 6: + sub_81C51DC(); + gPyramidBagResources->state = 0; + gMain.state++; + break; + case 7: + if (sub_81C5238()) + { + gMain.state++; + } + break; + case 8: + sub_81C6BD8(); + gMain.state++; + break; + case 9: + sub_81C5924(); + sub_81C59BC(); + sub_81C5A20(); + gMain.state++; + break; + case 10: + SetBagItemsListTemplate(); + gMain.state++; + break; + case 11: + sub_81C56F8(); + gMain.state++; + break; + case 12: + sub_81C6EF4(); + gMain.state++; + break; + case 13: + AddScrollArrow(); + gMain.state++; + break; + case 14: + sub_81C700C(); + gMain.state++; + break; + case 15: + BlendPalettes(0xFFFFFFFF, 0x10, 0); + gMain.state++; + break; + case 16: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); + gPaletteFade.bufferTransferDisabled = FALSE; + gMain.state++; + break; + default: + SetVBlankCallback(sub_81C5038); + SetMainCallback2(sub_81C501C); + return TRUE; + } + return FALSE; +} + +static void sub_81C51DC(void) +{ + ResetVramOamAndBgCntRegs(); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_0861F2B4, ARRAY_COUNT(gUnknown_0861F2B4)); + SetBgTilemapBuffer(2, gPyramidBagResources->tilemapBuffer); + ResetAllBgsCoordinates(); + schedule_bg_copy_tilemap_to_vram(2); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | + DISPCNT_OBJ_1D_MAP | + DISPCNT_OBJ_ON); + ShowBg(0); + ShowBg(1); + ShowBg(2); + SetGpuReg(REG_OFFSET_BLDCNT, 0); +} + +static bool8 sub_81C5238(void) +{ + switch (gPyramidBagResources->state) + { + case 0: + reset_temp_tile_data_buffers(); + decompress_and_copy_tile_data_to_vram(2, gBagScreen_Gfx, 0, 0, 0); + gPyramidBagResources->state++; + break; + case 1: + if (free_temp_tile_data_buffers_if_possible() != TRUE) + { + LZDecompressWram(gUnknown_08D9AE04, gPyramidBagResources->tilemapBuffer); + gPyramidBagResources->state++; + } + break; + case 2: + LoadCompressedPalette(gUnknown_08D9AF44, 0, 0x20); + gPyramidBagResources->state++; + break; + case 3: + LoadCompressedObjectPic(&gUnknown_0861F3CC); + gPyramidBagResources->state++; + break; + case 4: + sub_81C6E98(); + gPyramidBagResources->state++; + break; + default: + LoadListMenuArrowsGfx(); + gPyramidBagResources->state = 0; + return TRUE; + } + + return FALSE; +} + +static void SetBagItemsListTemplate(void) +{ + u16 i; + u16 *pyramidItems = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode]; + + for (i = 0; i < gPyramidBagResources->listMenuCount - 1; i++) + { + PyramidBag_CopyItemName(gPyramidBagResources->itemStrings[i], pyramidItems[i]); + gPyramidBagResources->bagListItems[i].name = gPyramidBagResources->itemStrings[i]; + gPyramidBagResources->bagListItems[i].id = i; + } + StringCopy(gPyramidBagResources->itemStrings[i], gText_CloseBag); + gPyramidBagResources->bagListItems[i].name = gPyramidBagResources->itemStrings[i]; + gPyramidBagResources->bagListItems[i].id = LIST_B_PRESSED; + gMultiuseListMenuTemplate = gUnknown_0861F2C0; + gMultiuseListMenuTemplate.totalItems = gPyramidBagResources->listMenuCount; + gMultiuseListMenuTemplate.items = gPyramidBagResources->bagListItems; + gMultiuseListMenuTemplate.maxShowed = gPyramidBagResources->listMenuMaxShown; +} + +static void PyramidBag_CopyItemName(u8 *dst, u16 itemId) +{ + if (ItemId_GetPocket(itemId) == POCKET_BERRIES) + { + ConvertIntToDecimalStringN(gStringVar1, ITEM_TO_BERRY(itemId), STR_CONV_MODE_LEADING_ZEROS, 2); + CopyItemName(itemId, gStringVar2); + StringExpandPlaceholders(dst, gText_UnkF908Var1Clear7Var2); + } + else + { + CopyItemName(itemId, dst); + } +} + +static void PyramidBagMoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list) +{ + if (onInit != TRUE) + { + PlaySE(SE_SELECT); + sub_81C6F20(); + } + if (gPyramidBagResources->unk814 == 0xFF) + { + sub_81C6FF8(gPyramidBagResources->unk815 ^ 1); + if (itemIndex != LIST_B_PRESSED) + ShowItemImage(gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode][itemIndex], gPyramidBagResources->unk815); + else + ShowItemImage(0xFFFF, gPyramidBagResources->unk815); + gPyramidBagResources->unk815 ^= 1; + PrintItemDescription(itemIndex); + } +} + +static void PrintItemQuantity(u8 windowId, s32 itemIndex, u8 y) +{ + s32 xAlign; + if (itemIndex == LIST_B_PRESSED) + return; + + if (gPyramidBagResources->unk814 != 0xFF) + { + if (gPyramidBagResources->unk814 == (u8)(itemIndex)) + sub_81C5AB8(y, 1); + else + sub_81C5AB8(y, 0xFF); + } + ConvertIntToDecimalStringN(gStringVar1, + gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode][itemIndex], + STR_CONV_MODE_RIGHT_ALIGN, + 2); + StringExpandPlaceholders(gStringVar4, gText_xVar1); + xAlign = GetStringRightAlignXOffset(7, gStringVar4, 0x77); + PrintOnWindow_Font7(windowId, gStringVar4, xAlign, y, 0, 0, TEXT_SPEED_FF, 0); +} + +static void PrintItemDescription(s32 listMenuId) +{ + const u8 *desc; + if (listMenuId != LIST_B_PRESSED) + { + desc = ItemId_GetDescription(gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode][listMenuId]); + } + else + { + StringCopy(gStringVar1, gReturnToXStringsTable2[gPyramidBagCursorData.unk4]); + StringExpandPlaceholders(gStringVar4, gText_ReturnToVar1); + desc = gStringVar4; + } + FillWindowPixelBuffer(1, 0); + PrintOnWindow_Font1(1, desc, 3, 0, 0, 1, 0, 0); +} + +static void AddScrollArrow(void) +{ + if (gPyramidBagResources->scrollArrowSpriteId == 0xFF) + gPyramidBagResources->scrollArrowSpriteId = AddScrollIndicatorArrowPairParameterized(2, 172, 12, 148, gPyramidBagResources->listMenuCount - gPyramidBagResources->listMenuMaxShown, 0xB5E, 0xB5E, &gPyramidBagCursorData.scrollPosition); +} + +static void RemoveScrollArrow(void) +{ + if (gPyramidBagResources->scrollArrowSpriteId != 0xFF) + { + RemoveScrollIndicatorArrowPair(gPyramidBagResources->scrollArrowSpriteId); + gPyramidBagResources->scrollArrowSpriteId = 0xFF; + } +} + +static void sub_81C56F8(void) +{ + u8 taskId = CreateTask(Task_HandlePyramidBagInput, 0); + s16 *data = gTasks[taskId].data; + data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gPyramidBagCursorData.scrollPosition, gPyramidBagCursorData.cursorPosition); +} + +static void SwapItems(u8 id1, u8 id2) +{ + u16 temp; + u16 *itemIds = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode]; + u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode]; + + SWAP(itemIds[id1], itemIds[id2], temp); + SWAP(quantities[id1], quantities[id2], temp); +} + +static void MovePyramidBagItemSlotInList(u8 from, u8 to) +{ + u16 *itemIds = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode]; + u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode]; + + if (from != to) + { + s16 i; + u16 firstSlotItemId = itemIds[from]; + u8 firstSlotQuantity = quantities[from]; + + if (to > from) + { + to--; + for (i = from; i < to; i++) + { + itemIds[i] = itemIds[i + 1]; + quantities[i] = quantities[i + 1]; + } + } + else + { + for (i = from; i > to; i--) + { + itemIds[i] = itemIds[i - 1]; + quantities[i] = quantities[i - 1]; + } + } + itemIds[to] = firstSlotItemId; + quantities[to] = firstSlotQuantity; + } +} + +static void CompactItems(void) +{ + u8 i, j; + u16 *itemIds = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode]; + u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode]; + + for (i = 0; i < PYRAMID_BAG_ITEMS_COUNT; i++) + { + if (itemIds[i] == 0 || quantities[i] == 0) + { + itemIds[i] = 0; + quantities[i] = 0; + } + } + for (i = 0; i < PYRAMID_BAG_ITEMS_COUNT - 1; i++) + { + for (j = i + 1; j < PYRAMID_BAG_ITEMS_COUNT; j++) + { + if (itemIds[i] == 0 || quantities[i] == 0) + SwapItems(i, j); + } + } +} + +void sub_81C5924(void) +{ + u16 i; + u16 *itemIds = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode]; + + CompactItems(); + gPyramidBagResources->listMenuCount = 0; + for (i = 0; i < PYRAMID_BAG_ITEMS_COUNT; i++) + { + if (itemIds[i] != 0) + gPyramidBagResources->listMenuCount++; + } + gPyramidBagResources->listMenuCount++; + if (gPyramidBagResources->listMenuCount > 8) + gPyramidBagResources->listMenuMaxShown = 8; + else + gPyramidBagResources->listMenuMaxShown = gPyramidBagResources->listMenuCount; +} + +void sub_81C59BC(void) +{ + if (gPyramidBagCursorData.scrollPosition != 0 && gPyramidBagCursorData.scrollPosition + gPyramidBagResources->listMenuMaxShown > gPyramidBagResources->listMenuCount) + gPyramidBagCursorData.scrollPosition = gPyramidBagResources->listMenuCount - gPyramidBagResources->listMenuMaxShown; + if (gPyramidBagCursorData.scrollPosition + gPyramidBagCursorData.cursorPosition >= gPyramidBagResources->listMenuCount) + { + if (gPyramidBagResources->listMenuCount == 0) + gPyramidBagCursorData.cursorPosition = 0; + else + gPyramidBagCursorData.cursorPosition = gPyramidBagResources->listMenuCount - 1; + } +} + +static void sub_81C5A20(void) +{ + u8 i; + + if (gPyramidBagCursorData.cursorPosition > 4) + { + for (i = 0; i <= gPyramidBagCursorData.cursorPosition - 4; i++) + { + if (gPyramidBagCursorData.scrollPosition + gPyramidBagResources->listMenuMaxShown == gPyramidBagResources->listMenuCount) + { + // daycare.c sends its regards. + break; + } + gPyramidBagCursorData.cursorPosition--; + gPyramidBagCursorData.scrollPosition++; + } + } +} + +static void sub_81C5A98(u8 listMenuTaskId, u8 arg1) +{ + u8 y = ListMenuGetYCoordForPrintingArrowCursor(listMenuTaskId); + sub_81C5AB8(y, arg1); +} + +static void sub_81C5AB8(u8 y, u8 arg1) +{ + if (arg1 == 0xFF) + FillWindowPixelRect(0, 0, 0, y, GetMenuCursorDimensionByFont(1, 0), GetMenuCursorDimensionByFont(1, 1)); + else + PrintOnWindow_Font1(0, gText_SelectorArrow2, 0, y, 0, 0, 0, arg1); +} + +void sub_81C5B14(u8 taskId) +{ + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + gTasks[taskId].func = sub_81C5B4C; +} + +static void sub_81C5B4C(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + if (!gPaletteFade.active) + { + DestroyListMenuTask(data[0], &gPyramidBagCursorData.scrollPosition, &gPyramidBagCursorData.cursorPosition); + if (gPyramidBagResources->callback2 != NULL) + SetMainCallback2(gPyramidBagResources->callback2); + else + SetMainCallback2(gPyramidBagCursorData.callback); + RemoveScrollArrow(); + ResetSpriteData(); + FreeAllSpritePalettes(); + FreeAllWindowBuffers(); + Free(gPyramidBagResources); + DestroyTask(taskId); + } +} + +static void Task_HandlePyramidBagInput(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + if (sub_81221EC() != TRUE && !gPaletteFade.active) + { + if (gMain.newKeys & SELECT_BUTTON) + { + if (gPyramidBagCursorData.unk4 != 2) + { + ListMenuGetScrollAndRow(data[0], &gPyramidBagCursorData.scrollPosition, &gPyramidBagCursorData.cursorPosition); + if (gPyramidBagCursorData.scrollPosition + gPyramidBagCursorData.cursorPosition != gPyramidBagResources->listMenuCount - 1) + { + PlaySE(SE_SELECT); + Task_BeginItemSwap(taskId); + } + } + } + else + { + s32 listId = ListMenuHandleInputGetItemId(data[0]); + ListMenuGetScrollAndRow(data[0], &gPyramidBagCursorData.scrollPosition, &gPyramidBagCursorData.cursorPosition); + switch (listId) + { + case LIST_NOTHING_CHOSEN: + break; + case LIST_B_PRESSED: + PlaySE(SE_SELECT); + gSpecialVar_ItemId = 0; + sub_81C5B14(taskId); + break; + default: + PlaySE(SE_SELECT); + gSpecialVar_ItemId = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode][listId]; + data[1] = listId; + data[2] = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode][listId]; + if (gPyramidBagCursorData.unk4 == 2) + sub_81C674C(taskId); + else + sub_81C5D20(taskId); + break; + } + } + } +} + +static void sub_81C5D20(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + RemoveScrollArrow(); + sub_81C5A98(data[0], 1); + switch (gPyramidBagCursorData.unk4) + { + default: + gPyramidBagResources->menuActionIds = sFieldMenuActionIds; + gPyramidBagResources->menuActionsCount = ARRAY_COUNT(sFieldMenuActionIds); + break; + case 1: + if (ItemId_GetBattleUsage(gSpecialVar_ItemId)) + { + gPyramidBagResources->menuActionIds = sBattleMenuActionIds; + gPyramidBagResources->menuActionsCount = ARRAY_COUNT(sBattleMenuActionIds); + } + else + { + gPyramidBagResources->menuActionIds = gUnknown_0861F310; + gPyramidBagResources->menuActionsCount = ARRAY_COUNT(gUnknown_0861F310); + } + break; + case 3: + gPyramidBagResources->menuActionIds = gUnknown_0861F30C; + gPyramidBagResources->menuActionsCount = ARRAY_COUNT(gUnknown_0861F30C); + break; + } + + CopyItemName(gSpecialVar_ItemId, gStringVar1); + StringExpandPlaceholders(gStringVar4, gText_Var1IsSelected); + FillWindowPixelBuffer(1, 0); + PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0); + if (gPyramidBagResources->menuActionsCount == 1) + sub_81C5EAC(sub_81C6D24(0)); + else if (gPyramidBagResources->menuActionsCount == 2) + sub_81C5EAC(sub_81C6D24(1)); + else + sub_81C5F08(sub_81C6D24(2), 2, 2); + + if (gPyramidBagResources->menuActionsCount == 4) + gTasks[taskId].func = HandleMenuActionInput; + else + gTasks[taskId].func = HandleFewMenuActionsInput; +} + +static void sub_81C5EAC(u8 windowId) +{ + AddItemMenuActionTextPrinters(windowId, 7, 8, 1, 0, 0x10, gPyramidBagResources->menuActionsCount, sMenuActions, gPyramidBagResources->menuActionIds); + InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, gPyramidBagResources->menuActionsCount, 0); +} + +static void sub_81C5F08(u8 windowId, u8 horizontalCount, u8 verticalCount) +{ + sub_8198DBC(windowId, 7, 8, 1, 0x38, horizontalCount, verticalCount, sMenuActions, gPyramidBagResources->menuActionIds); + sub_8199944(windowId, 0x38, horizontalCount, verticalCount, 0); +} + +static void HandleFewMenuActionsInput(u8 taskId) +{ + if (sub_81221EC() != TRUE) + { + s32 id = Menu_ProcessInputNoWrapAround(); + switch (id) + { + case -2: + break; + case -1: + PlaySE(SE_SELECT); + sMenuActions[ACTION_CANCEL].func.void_u8(taskId); + break; + default: + PlaySE(SE_SELECT); + if (sMenuActions[gPyramidBagResources->menuActionIds[id]].func.void_u8 != NULL) + sMenuActions[gPyramidBagResources->menuActionIds[id]].func.void_u8(taskId); + break; + } + } +} + +static void HandleMenuActionInput(u8 taskId) +{ + if (sub_81221EC() != TRUE) + { + s8 id = GetMenuCursorPos(); + if (gMain.newKeys & DPAD_UP) + { + if (id > 0 && IsValidMenuAction(id - 2)) + { + PlaySE(SE_SELECT); + sub_8199134(0, -1); + } + } + else if (gMain.newKeys & DPAD_DOWN) + { + if (id < gPyramidBagResources->menuActionsCount - 2 && IsValidMenuAction(id + 2)) + { + PlaySE(SE_SELECT); + sub_8199134(0, 1); + } + } + else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1) + { + if (id & 1 && IsValidMenuAction(id - 1)) + { + PlaySE(SE_SELECT); + sub_8199134(-1, 0); + } + } + else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysState() == 2) + { + if (!(id & 1) && IsValidMenuAction(id + 1)) + { + PlaySE(SE_SELECT); + sub_8199134(1, 0); + } + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (sMenuActions[gPyramidBagResources->menuActionIds[id]].func.void_u8 != NULL) + sMenuActions[gPyramidBagResources->menuActionIds[id]].func.void_u8(taskId); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sMenuActions[ACTION_CANCEL].func.void_u8(taskId); + } + } +} + +static bool8 IsValidMenuAction(s8 actionTableId) +{ + if (actionTableId < 0) + return FALSE; + else if (actionTableId > gPyramidBagResources->menuActionsCount) + return FALSE; + else if (gPyramidBagResources->menuActionIds[actionTableId] == ACTION_DUMMY) + return FALSE; + else + return TRUE; +} + +static void sub_81C61A8(void) +{ + if (gPyramidBagResources->menuActionsCount == 1) + sub_81C6D6C(0); + else if (gPyramidBagResources->menuActionsCount == 2) + sub_81C6D6C(1); + else + sub_81C6D6C(2); +} + +static void BagAction_UseOnField(u8 taskId) +{ + u8 pocketId = ItemId_GetPocket(gSpecialVar_ItemId); + + if (pocketId == POCKET_KEY_ITEMS + || pocketId == POCKET_POKE_BALLS + || pocketId == POCKET_TM_HM + || ItemIsMail(gSpecialVar_ItemId) == TRUE) + { + sub_81C61A8(); + DisplayItemMessageInBattlePyramid(taskId, gText_DadsAdvice, sub_81C6714); + } + else if (ItemId_GetFieldFunc(gSpecialVar_ItemId) != NULL) + { + sub_81C61A8(); + FillWindowPixelBuffer(1, 0); + schedule_bg_copy_tilemap_to_vram(0); + ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId); + } +} + +static void BagAction_Cancel(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + sub_81C61A8(); + PrintItemDescription(data[1]); + schedule_bg_copy_tilemap_to_vram(0); + schedule_bg_copy_tilemap_to_vram(1); + sub_81C5A98(data[0], 0); + SetTaskToMainPyramidBagInputHandler(taskId); +} + +static void SetTaskToMainPyramidBagInputHandler(u8 taskId) +{ + AddScrollArrow(); + gTasks[taskId].func = Task_HandlePyramidBagInput; +} + +static void BagAction_Toss(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + sub_81C61A8(); + data[8] = 1; + if (data[2] == 1) + { + sub_81C6350(taskId); + } + else + { + CopyItemName(gSpecialVar_ItemId, gStringVar1); + StringExpandPlaceholders(gStringVar4, gText_TossHowManyVar1s); + FillWindowPixelBuffer(1, 0); + PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0); + sub_81C6404(); + gTasks[taskId].func = sub_81C64B4; + } +} + +static void sub_81C6350(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + CopyItemName(gSpecialVar_ItemId, gStringVar1); + ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 2); + StringExpandPlaceholders(gStringVar4, gText_ConfirmTossItems); + FillWindowPixelBuffer(1, 0); + PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0); + sub_81C6DAC(taskId, &sYesNoTossFuncions); +} + +static void DontTossItem(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + PrintItemDescription(data[1]); + sub_81C5A98(data[0], 0); + SetTaskToMainPyramidBagInputHandler(taskId); +} + +static void sub_81C6404(void) +{ + s32 x; + + ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, 2); + StringExpandPlaceholders(gStringVar4, gText_xVar1); + sub_81C6CEC(3); + x = GetStringCenterAlignXOffset(1, gStringVar4, 0x28); + PrintTextOnWindow(3, 1, gStringVar4, x, 2, 0, NULL); +} + +static void sub_81C645C(s16 value) +{ + s32 x; + + ConvertIntToDecimalStringN(gStringVar1, value, STR_CONV_MODE_LEADING_ZEROS, 2); + StringExpandPlaceholders(gStringVar4, gText_xVar1); + x = GetStringCenterAlignXOffset(1, gStringVar4, 0x28); + PrintTextOnWindow(3, 1, gStringVar4, x, 2, 0, NULL); +} + +static void sub_81C64B4(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (AdjustQuantityAccordingToDPadInput(&data[8], data[2]) == TRUE) + { + sub_81C645C(data[8]); + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sub_8198070(3, 0); + ClearWindowTilemap(3); + schedule_bg_copy_tilemap_to_vram(1); + sub_81C6350(taskId); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sub_8198070(3, 0); + ClearWindowTilemap(3); + schedule_bg_copy_tilemap_to_vram(1); + DontTossItem(taskId); + } +} + +static void TossItem(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + CopyItemName(gSpecialVar_ItemId, gStringVar1); + ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 2); + StringExpandPlaceholders(gStringVar4, gText_ThrewAwayVar2Var1s); + FillWindowPixelBuffer(1, 0); + PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0); + gTasks[taskId].func = sub_81C65CC; +} + +static void sub_81C65CC(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + u16 *scrollOffset = &gPyramidBagCursorData.scrollPosition; + u16 *selectedRow = &gPyramidBagCursorData.cursorPosition; + + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + PlaySE(SE_SELECT); + RemovePyramidBagItem(gSpecialVar_ItemId, data[8]); + DestroyListMenuTask(data[0], scrollOffset, selectedRow); + sub_81C5924(); + sub_81C59BC(); + SetBagItemsListTemplate(); + data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollOffset, *selectedRow); + schedule_bg_copy_tilemap_to_vram(0); + SetTaskToMainPyramidBagInputHandler(taskId); + } +} + +static void BagAction_Give(u8 taskId) +{ + sub_81C61A8(); + if (ItemIsMail(gSpecialVar_ItemId) == TRUE) + { + DisplayItemMessageInBattlePyramid(taskId, gText_CantWriteMail, sub_81C66EC); + } + else if (!ItemId_GetImportance(gSpecialVar_ItemId)) + { + gPyramidBagResources->callback2 = sub_81B7F60; + sub_81C5B14(taskId); + } + else + { + sub_81C66AC(taskId); + } +} + +static void sub_81C66AC(u8 taskId) +{ + CopyItemName(gSpecialVar_ItemId, gStringVar1); + StringExpandPlaceholders(gStringVar4, gText_Var1CantBeHeld); + DisplayItemMessageInBattlePyramid(taskId, gStringVar4, sub_81C66EC); +} + +static void sub_81C66EC(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sub_81C6714(taskId); + } +} + +void sub_81C6714(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + sub_81C6E1C(); + PrintItemDescription(data[1]); + sub_81C5A98(data[0], 0); + SetTaskToMainPyramidBagInputHandler(taskId); +} + +static void sub_81C674C(u8 taskId) +{ + if (!itemid_80BF6D8_mail_related(gSpecialVar_ItemId)) + DisplayItemMessageInBattlePyramid(taskId, gText_CantWriteMail, sub_81C66EC); + else if (!ItemId_GetImportance(gSpecialVar_ItemId)) + sub_81C5B14(taskId); + else + sub_81C66AC(taskId); +} + +static void BagAction_UseInBattle(u8 taskId) +{ + if (ItemId_GetBattleFunc(gSpecialVar_ItemId) != NULL) + { + sub_81C61A8(); + ItemId_GetBattleFunc(gSpecialVar_ItemId)(taskId); + } +} + +static void Task_BeginItemSwap(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + data[1] = gPyramidBagCursorData.scrollPosition + gPyramidBagCursorData.cursorPosition; + gPyramidBagResources->unk814 = data[1]; + ListMenuSetUnkIndicatorsStructField(data[0], 0x10, 1); + CopyItemName(gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode][data[1]], gStringVar1); + StringExpandPlaceholders(gStringVar4, gText_MoveVar1Where); + FillWindowPixelBuffer(1, 0); + PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0); + sub_81C5A98(data[0], 1); + sub_81C704C(data[1]); + gTasks[taskId].func = Task_ItemSwapHandleInput; +} + +static void Task_ItemSwapHandleInput(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + if (sub_81221EC() != TRUE) + { + if (gMain.newKeys & SELECT_BUTTON) + { + PlaySE(SE_SELECT); + ListMenuGetScrollAndRow(data[0], &gPyramidBagCursorData.scrollPosition, &gPyramidBagCursorData.cursorPosition); + PerformItemSwap(taskId); + } + else + { + s32 id = ListMenuHandleInputGetItemId(data[0]); + ListMenuGetScrollAndRow(data[0], &gPyramidBagCursorData.scrollPosition, &gPyramidBagCursorData.cursorPosition); + sub_81C7028(FALSE); + sub_81C704C(gPyramidBagCursorData.cursorPosition); + switch (id) + { + case LIST_NOTHING_CHOSEN: + break; + case LIST_B_PRESSED: + PlaySE(SE_SELECT); + if (gMain.newKeys & A_BUTTON) + PerformItemSwap(taskId); + else + sub_81C6A14(taskId); + break; + default: + PlaySE(SE_SELECT); + PerformItemSwap(taskId); + break; + } + } + } +} + +static void PerformItemSwap(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + u16 *scrollOffset = &gPyramidBagCursorData.scrollPosition; + u16 *selectedRow = &gPyramidBagCursorData.cursorPosition; + u16 var = *scrollOffset + *selectedRow; + + if (data[1] == var || data[1] == var - 1) + { + sub_81C6A14(taskId); + } + else + { + MovePyramidBagItemSlotInList(data[1], var); + gPyramidBagResources->unk814 = 0xFF; + sub_81C7028(TRUE); + DestroyListMenuTask(data[0], scrollOffset, selectedRow); + if (data[1] < var) + gPyramidBagCursorData.cursorPosition--; + SetBagItemsListTemplate(); + data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollOffset, *selectedRow); + SetTaskToMainPyramidBagInputHandler(taskId); + } +} + +static void sub_81C6A14(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + u16 *scrollOffset = &gPyramidBagCursorData.scrollPosition; + u16 *selectedRow = &gPyramidBagCursorData.cursorPosition; + + gPyramidBagResources->unk814 = 0xFF; + sub_81C7028(TRUE); + DestroyListMenuTask(data[0], scrollOffset, selectedRow); + if (data[1] < *scrollOffset + *selectedRow) + gPyramidBagCursorData.cursorPosition--; + SetBagItemsListTemplate(); + data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollOffset, *selectedRow); + SetTaskToMainPyramidBagInputHandler(taskId); +} + +void sub_81C6A94(void) +{ + u8 i; + struct Pokemon *party = gPlayerParty; + u16 *newItems = Alloc(PYRAMID_BAG_ITEMS_COUNT * sizeof(u16)); + u8 *newQuantities = Alloc(PYRAMID_BAG_ITEMS_COUNT * sizeof(u8)); + u16 heldItem; + + memcpy(newItems, gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode], PYRAMID_BAG_ITEMS_COUNT * sizeof(u16)); + memcpy(newQuantities, gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode], PYRAMID_BAG_ITEMS_COUNT * sizeof(u8)); + for (i = 0; i < 3; i++) + { + heldItem = GetMonData(&party[i], MON_DATA_HELD_ITEM); + if (heldItem != 0 && !AddBagItem(heldItem, 1)) + { + memcpy(gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode], newItems, PYRAMID_BAG_ITEMS_COUNT * sizeof(u16)); + memcpy(gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode], newQuantities, PYRAMID_BAG_ITEMS_COUNT * sizeof(u8)); + Free(newItems); + Free(newQuantities); + gSpecialVar_Result = 1; + return; + } + } + + heldItem = 0; + for (i = 0; i < 3; i++) + { + SetMonData(&party[i], MON_DATA_HELD_ITEM, &heldItem); + } + gSpecialVar_Result = 0; + Free(newItems); + Free(newQuantities); +} + +static void sub_81C6BD8(void) +{ + u8 i; + + InitWindows(gUnknown_0861F328); + DeactivateAllTextPrinters(); + LoadUserWindowBorderGfx(0, 0x1, 0xE0); + LoadMessageBoxGfx(0, 0xA, 0xD0); + LoadPalette(gUnknown_0860F074, 0xF0, 0x20); + + for (i = 0; i < 5; i++) + FillWindowPixelBuffer(i, 0); + + PutWindowTilemap(0); + PutWindowTilemap(1); + schedule_bg_copy_tilemap_to_vram(0); + schedule_bg_copy_tilemap_to_vram(1); +} + +static void PrintOnWindow_Font1(u8 windowId, const u8 *src, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorTableId) +{ + AddTextPrinterParameterized2(windowId, 1, x, y, letterSpacing, lineSpacing, sColorTable[colorTableId], speed, src); +} + +static void PrintOnWindow_Font7(u8 windowId, const u8 *src, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorTableId) +{ + AddTextPrinterParameterized2(windowId, 7, x, y, letterSpacing, lineSpacing, sColorTable[colorTableId], speed, src); +} + +static void sub_81C6CEC(u8 windowId) +{ + SetWindowBorderStyle(windowId, 0, 1, 0xE); + schedule_bg_copy_tilemap_to_vram(1); +} + +static u8 sub_81C6D08(u8 windowArrayId) +{ + return gPyramidBagResources->windowIds[windowArrayId]; +} + +static u8 sub_81C6D24(u8 windowArrayId) +{ + u8 *windowId = &gPyramidBagResources->windowIds[windowArrayId]; + if (*windowId == 0xFF) + { + *windowId = AddWindow(&gUnknown_0861F350[windowArrayId]); + SetWindowBorderStyle(*windowId, FALSE, 1, 0xE); + schedule_bg_copy_tilemap_to_vram(1); + } + return *windowId; +} + +static void sub_81C6D6C(u8 windowArrayId) +{ + u8 *windowId = &gPyramidBagResources->windowIds[windowArrayId]; + if (*windowId != 0xFF) + { + sub_8198070(*windowId, FALSE); + ClearWindowTilemap(*windowId); + RemoveWindow(*windowId); + schedule_bg_copy_tilemap_to_vram(1); + *windowId = 0xFF; + } +} + +static void sub_81C6DAC(u8 taskId, const struct YesNoFuncTable *yesNoTable) +{ + CreateYesNoMenuWithCallbacks(taskId, &gUnknown_0861F350[4], 1, 0, 2, 1, 0xE, yesNoTable); +} + +void DisplayItemMessageInBattlePyramid(u8 taskId, const u8 *str, void (*callback)(u8 taskId)) +{ + FillWindowPixelBuffer(2, 0x11); + DisplayMessageAndContinueTask(taskId, 2, 0xA, 0xD, 1, GetPlayerTextSpeed(), str, callback); + schedule_bg_copy_tilemap_to_vram(1); +} + +static void sub_81C6E1C(void) +{ + sub_8197DF8(2, FALSE); + ClearWindowTilemap(2); + schedule_bg_copy_tilemap_to_vram(1); +} + +#define ITEM_IMAGE_TAG 0x1024 + +static void sub_81C6E38(u8 itemSpriteArrayId) +{ + u8 *spriteId = &gPyramidBagResources->itemsSpriteIds[itemSpriteArrayId]; + if (*spriteId != 0xFF) + { + FreeSpriteTilesByTag(ITEM_IMAGE_TAG + itemSpriteArrayId); + FreeSpritePaletteByTag(ITEM_IMAGE_TAG + itemSpriteArrayId); + FreeSpriteOamMatrix(&gSprites[*spriteId]); + DestroySprite(&gSprites[*spriteId]); + *spriteId = 0xFF; + } +} + +static void sub_81C6E98(void) +{ + struct SpritePalette spritePalette; + u16 *palPtr = Alloc(0x40); + + LZDecompressWram(gUnknown_08D9ADD0, palPtr); + spritePalette.data = palPtr + (gSaveBlock2Ptr->frontier.lvlMode * 16); + spritePalette.tag = ITEM_IMAGE_TAG; + LoadSpritePalette(&spritePalette); + Free(palPtr); +} + +static void sub_81C6EF4(void) +{ + u8 *spriteId = &gPyramidBagResources->itemsSpriteIds[0]; + *spriteId = CreateSprite(&gUnknown_0861F3D4, 0x44, 0x38, 0); +} + +static void sub_81C6F20(void) +{ + struct Sprite *sprite = &gSprites[gPyramidBagResources->itemsSpriteIds[0]]; + if (sprite->affineAnimEnded) + { + StartSpriteAffineAnim(sprite, 1); + sprite->callback = sub_81C6F68; + } +} + +static void sub_81C6F68(struct Sprite *sprite) +{ + if (sprite->affineAnimEnded) + { + StartSpriteAffineAnim(sprite, 0); + sprite->callback = SpriteCallbackDummy; + } +} + +static void ShowItemImage(u16 itemId, u8 itemSpriteArrayId) +{ + u8 itemSpriteId; + u8 *spriteId = &gPyramidBagResources->itemsSpriteIds[itemSpriteArrayId + 1]; + if (*spriteId == 0xFF) + { + FreeSpriteTilesByTag(ITEM_IMAGE_TAG + 1 + itemSpriteArrayId); + FreeSpritePaletteByTag(ITEM_IMAGE_TAG + 1 + itemSpriteArrayId); + itemSpriteId = AddItemIconSprite(ITEM_IMAGE_TAG + 1 + itemSpriteArrayId, ITEM_IMAGE_TAG + 1 + itemSpriteArrayId, itemId); + if (itemSpriteId != MAX_SPRITES) + { + *spriteId = itemSpriteId; + gSprites[itemSpriteId].pos2.x = 24; + gSprites[itemSpriteId].pos2.y = 88; + } + } +} + +static void sub_81C6FF8(u8 itemSpriteArrayId) +{ + sub_81C6E38(itemSpriteArrayId + 1); +} + +static void sub_81C700C(void) +{ + sub_8122344(&gPyramidBagResources->itemsSpriteIds[3], 8); +} + +static void sub_81C7028(bool8 invisible) +{ + sub_81223FC(&gPyramidBagResources->itemsSpriteIds[3], 8, invisible); +} + +static void sub_81C704C(u8 y) +{ + sub_8122448(&gPyramidBagResources->itemsSpriteIds[3], 8 | 0x80, 120, (y + 1) * 16); +} diff --git a/src/battle_records.c b/src/battle_records.c index 8e9d045cb..fc9826e5b 100644 --- a/src/battle_records.c +++ b/src/battle_records.c @@ -64,11 +64,28 @@ static const struct BgTemplate sTrainerHillRecordsBgTemplates[] = static const struct WindowTemplate sTrainerHillRecordsWindowTemplates[] = { - {0x0, 0x2, 0x1, 0x1A, 0x12, 0xF, 0x14}, + { + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 1, + .width = 26, + .height = 18, + .paletteNum = 15, + .baseBlock = 20 + }, DUMMY_WIN_TEMPLATE }; -static const struct WindowTemplate sLinkBattleRecordsWindow = {0x0, 0x2, 0x1, 0x1A, 0x11, 0xF, 0x1}; +static const struct WindowTemplate sLinkBattleRecordsWindow = +{ + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 1, + .width = 26, + .height = 17, + .paletteNum = 15, + .baseBlock = 1 +}; static const u8 sText_DashesNoPlayer[] = _("-------"); static const u8 sText_DashesNoScore[] = _("----"); @@ -107,7 +124,7 @@ static s32 FindLinkBattleRecord(struct LinkBattleRecord *records, const u8 *name for (i = 0; i < LINK_B_RECORDS_COUNT; i++) { - if (!StringCompareN(records[i].name, name, OT_NAME_LENGTH) && records[i].trainerId == trainerId) + if (!StringCompareN(records[i].name, name, PLAYER_NAME_LENGTH) && records[i].trainerId == trainerId) return i; } @@ -198,7 +215,7 @@ static void UpdateLinkBattleRecords(struct LinkBattleRecords *records, const u8 { index = LINK_B_RECORDS_COUNT - 1; ClearLinkBattleRecord(&records->entries[index]); - StringCopyN(records->entries[index].name, name, OT_NAME_LENGTH); + StringCopyN(records->entries[index].name, name, PLAYER_NAME_LENGTH); records->entries[index].trainerId = trainerId; records->languages[index] = gLinkPlayers[battlerId].language; } diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 5c0b78240..44194deda 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -55,7 +55,7 @@ extern const u8* const gBattleScriptsForMoveEffects[]; // functions extern void sub_81A5718(u8 battlerId); // battle frontier 2 extern void sub_81A56B4(void); // battle frontier 2 -extern void sub_81BFA38(struct Pokemon* party, u8 monPartyId, u8 monCount, void (*callback)(void), u16 move); // pokemon summary screen +extern void ShowSelectMovePokemonSummaryScreen(struct Pokemon* party, u8 monPartyId, u8 monCount, void (*callback)(void), u16 move); // pokemon summary screen extern u8 sub_81C1B94(void); // pokemon summary screen extern void sub_81D388C(struct Pokemon* mon, void* statStoreLocation); // pokenav.s extern void sub_81D3640(u8 arg0, void* statStoreLocation1, void* statStoreLocation2, u8 arg3, u8 arg4, u8 arg5); // pokenav.s @@ -700,7 +700,7 @@ static const u8* const sMoveEffectBS_Ptrs[] = BattleScript_MoveEffectPayDay, // MOVE_EFFECT_PAYDAY BattleScript_MoveEffectSleep, // MOVE_EFFECT_CHARGING BattleScript_MoveEffectWrap, // MOVE_EFFECT_WRAP - BattleScript_MoveEffectRecoil33, // MOVE_EFFECT_RECOIL_25 + BattleScript_MoveEffectRecoil, // MOVE_EFFECT_RECOIL_25 BattleScript_MoveEffectSleep, // MOVE_EFFECT_ATK_PLUS_1 BattleScript_MoveEffectSleep, // MOVE_EFFECT_DEF_PLUS_1 BattleScript_MoveEffectSleep, // MOVE_EFFECT_SPD_PLUS_1 @@ -724,7 +724,7 @@ static const u8* const sMoveEffectBS_Ptrs[] = BattleScript_MoveEffectSleep, // MOVE_EFFECT_RAPIDSPIN BattleScript_MoveEffectSleep, // MOVE_EFFECT_REMOVE_PARALYSIS BattleScript_MoveEffectSleep, // MOVE_EFFECT_ATK_DEF_DOWN - BattleScript_MoveEffectRecoil33, // MOVE_EFFECT_RECOIL_33_PARALYSIS + BattleScript_MoveEffectRecoil, // MOVE_EFFECT_RECOIL_33 }; static const struct WindowTemplate sUnusedWinTemplate = {0, 1, 3, 7, 0xF, 0x1F, 0x3F}; @@ -2843,7 +2843,7 @@ void SetMoveEffect(bool8 primary, u8 certain) BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_AtkDefDown; break; - case MOVE_EFFECT_RECOIL_33_PARALYSIS: // Volt Tackle + case MOVE_EFFECT_RECOIL_33: // Double Edge gBattleMoveDamage = gHpDealt / 3; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -4497,20 +4497,38 @@ static void atk48_playstatchangeanimation(void) } } -#define ATK49_LAST_CASE 17 +enum +{ + ATK49_RAGE, + ATK49_DEFROST, + ATK49_SYNCHRONIZE_TARGET, + ATK49_MOVE_END_ABILITIES, + ATK49_STATUS_IMMUNITY_ABILITIES, + ATK49_SYNCHRONIZE_ATTACKER, + ATK49_CHOICE_MOVE, + ATK49_CHANGED_ITEMS, + ATK49_ATTACKER_INVISIBLE, + ATK49_ATTACKER_VISIBLE, + ATK49_TARGET_VISIBLE, + ATK49_ITEM_EFFECTS_ALL, + ATK49_KINGSROCK_SHELLBELL, + ATK49_SUBSTITUTE, + ATK49_UPDATE_LAST_MOVES, + ATK49_MIRROR_MOVE, + ATK49_NEXT_TARGET, + ATK49_COUNT, +}; static void atk49_moveend(void) { s32 i; - bool32 effect; - u8 moveType; - u8 holdEffectAtk; - u16 *choicedMoveAtk; + bool32 effect = FALSE; + u8 moveType = 0; + u8 holdEffectAtk = 0; + u16 *choicedMoveAtk = NULL; u8 arg1, arg2; u16 originallyUsedMove; - effect = FALSE; - if (gChosenMove == 0xFFFF) originallyUsedMove = 0; else @@ -4531,7 +4549,7 @@ static void atk49_moveend(void) { switch (gBattleScripting.atk49_state) { - case 0: // rage check + case ATK49_RAGE: // rage check if (gBattleMons[gBattlerTarget].status2 & STATUS2_RAGE && gBattleMons[gBattlerTarget].hp != 0 && gBattlerAttacker != gBattlerTarget && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget) @@ -4545,7 +4563,7 @@ static void atk49_moveend(void) } gBattleScripting.atk49_state++; break; - case 1: // defrosting check + case ATK49_DEFROST: // defrosting check if (gBattleMons[gBattlerTarget].status1 & STATUS1_FREEZE && gBattleMons[gBattlerTarget].hp != 0 && gBattlerAttacker != gBattlerTarget && gSpecialStatuses[gBattlerTarget].specialDmg @@ -4561,28 +4579,28 @@ static void atk49_moveend(void) } gBattleScripting.atk49_state++; break; - case 2: // target synchronize + case ATK49_SYNCHRONIZE_TARGET: // target synchronize if (AbilityBattleEffects(ABILITYEFFECT_SYNCHRONIZE, gBattlerTarget, 0, 0, 0)) effect = TRUE; gBattleScripting.atk49_state++; break; - case 3: // contact abilities - if (AbilityBattleEffects(ABILITYEFFECT_CONTACT, gBattlerTarget, 0, 0, 0)) + case ATK49_MOVE_END_ABILITIES: // Such as abilities activating on contact(Poison Spore, Rough Skin, etc.). + if (AbilityBattleEffects(ABILITYEFFECT_MOVE_END, gBattlerTarget, 0, 0, 0)) effect = TRUE; gBattleScripting.atk49_state++; break; - case 4: // status immunities + case ATK49_STATUS_IMMUNITY_ABILITIES: // status immunities if (AbilityBattleEffects(ABILITYEFFECT_IMMUNITY, 0, 0, 0, 0)) effect = TRUE; // it loops through all battlers, so we increment after its done with all battlers else gBattleScripting.atk49_state++; break; - case 5: // attacker synchronize + case ATK49_SYNCHRONIZE_ATTACKER: // attacker synchronize if (AbilityBattleEffects(ABILITYEFFECT_ATK_SYNCHRONIZE, gBattlerAttacker, 0, 0, 0)) effect = TRUE; gBattleScripting.atk49_state++; break; - case 6: // update choice band move + case ATK49_CHOICE_MOVE: // update choice band move if (!(gHitMarker & HITMARKER_OBEYS) || holdEffectAtk != HOLD_EFFECT_CHOICE_BAND || gChosenMove == MOVE_STRUGGLE || (*choicedMoveAtk != 0 && *choicedMoveAtk != 0xFFFF)) goto LOOP; @@ -4605,7 +4623,7 @@ static void atk49_moveend(void) gBattleScripting.atk49_state++; } break; - case 7: // changed held items + case ATK49_CHANGED_ITEMS: // changed held items for (i = 0; i < gBattlersCount; i++) { u16* changedItem = &gBattleStruct->changedItems[i]; @@ -4617,18 +4635,18 @@ static void atk49_moveend(void) } gBattleScripting.atk49_state++; break; - case 11: // item effects for all battlers - if (ItemBattleEffects(3, 0, FALSE)) + case ATK49_ITEM_EFFECTS_ALL: // item effects for all battlers + if (ItemBattleEffects(ITEMEFFECT_MOVE_END, 0, FALSE)) effect = TRUE; else gBattleScripting.atk49_state++; break; - case 12: // king's rock and shell bell - if (ItemBattleEffects(4, 0, FALSE)) + case ATK49_KINGSROCK_SHELLBELL: // king's rock and shell bell + if (ItemBattleEffects(ITEMEFFECT_KINGSROCK_SHELLBELL, 0, FALSE)) effect = TRUE; gBattleScripting.atk49_state++; break; - case 8: // make attacker sprite invisible + case ATK49_ATTACKER_INVISIBLE: // make attacker sprite invisible if (gStatuses3[gBattlerAttacker] & (STATUS3_SEMI_INVULNERABLE) && gHitMarker & HITMARKER_NO_ANIMATIONS) { @@ -4640,7 +4658,7 @@ static void atk49_moveend(void) } gBattleScripting.atk49_state++; break; - case 9: // make attacker sprite visible + case ATK49_ATTACKER_VISIBLE: // make attacker sprite visible if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT || !(gStatuses3[gBattlerAttacker] & (STATUS3_SEMI_INVULNERABLE)) || WasUnableToUseMove(gBattlerAttacker)) @@ -4655,7 +4673,7 @@ static void atk49_moveend(void) } gBattleScripting.atk49_state++; break; - case 10: // make target sprite visible + case ATK49_TARGET_VISIBLE: // make target sprite visible if (!gSpecialStatuses[gBattlerTarget].restoredBattlerSprite && gBattlerTarget < gBattlersCount && !(gStatuses3[gBattlerTarget] & STATUS3_SEMI_INVULNERABLE)) { @@ -4668,7 +4686,7 @@ static void atk49_moveend(void) } gBattleScripting.atk49_state++; break; - case 13: // update substitute + case ATK49_SUBSTITUTE: // update substitute for (i = 0; i < gBattlersCount; i++) { if (gDisableStructs[i].substituteHP == 0) @@ -4676,7 +4694,7 @@ static void atk49_moveend(void) } gBattleScripting.atk49_state++; break; - case 14: // This case looks interesting, although I am not certain what it does. Probably fine tunes edge cases. + case ATK49_UPDATE_LAST_MOVES: if (gHitMarker & HITMARKER_SWAP_ATTACKER_TARGET) { gActiveBattler = gBattlerAttacker; @@ -4725,7 +4743,7 @@ static void atk49_moveend(void) } gBattleScripting.atk49_state++; break; - case 15: // mirror move + case ATK49_MIRROR_MOVE: // mirror move if (!(gAbsentBattlerFlags & gBitTable[gBattlerAttacker]) && !(gBattleStruct->field_91 & gBitTable[gBattlerAttacker]) && gBattleMoves[originallyUsedMove].flags & FLAG_MIRROR_MOVE_AFFECTED && gHitMarker & HITMARKER_OBEYS && gBattlerAttacker != gBattlerTarget && !(gHitMarker & HITMARKER_FAINTED(gBattlerTarget)) @@ -4746,7 +4764,7 @@ static void atk49_moveend(void) } gBattleScripting.atk49_state++; break; - case 16: // + case ATK49_NEXT_TARGET: // For moves hitting two opposing Pokemon. if (!(gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE) && gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !gProtectStructs[gBattlerAttacker].chargingTurn && gBattleMoves[gCurrentMove].target == MOVE_TARGET_BOTH && !(gHitMarker & HITMARKER_NO_ATTACKSTRING)) @@ -4759,7 +4777,7 @@ static void atk49_moveend(void) gBattleScripting.atk49_state = 0; MoveValuesCleanUp(); BattleScriptPush(gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]); - gBattlescriptCurrInstr = BattleScript_82DB87D; + gBattlescriptCurrInstr = BattleScript_FlushMessageBox; return; } else @@ -4769,18 +4787,18 @@ static void atk49_moveend(void) } gBattleScripting.atk49_state++; break; - case ATK49_LAST_CASE: + case ATK49_COUNT: break; } if (arg1 == 1 && effect == FALSE) - gBattleScripting.atk49_state = ATK49_LAST_CASE; + gBattleScripting.atk49_state = ATK49_COUNT; if (arg1 == 2 && arg2 == gBattleScripting.atk49_state) - gBattleScripting.atk49_state = ATK49_LAST_CASE; + gBattleScripting.atk49_state = ATK49_COUNT; - } while (gBattleScripting.atk49_state != ATK49_LAST_CASE && effect == FALSE); + } while (gBattleScripting.atk49_state != ATK49_COUNT && effect == FALSE); - if (gBattleScripting.atk49_state == ATK49_LAST_CASE && effect == FALSE) + if (gBattleScripting.atk49_state == ATK49_COUNT && effect == FALSE) gBattlescriptCurrInstr += 3; } @@ -5550,8 +5568,8 @@ static void atk52_switchineffects(void) gDisableStructs[gActiveBattler].truantUnknownBit = 0; - if (AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gActiveBattler, 0, 0, 0) == 0 && - ItemBattleEffects(0, gActiveBattler, 0) == 0) + if (!AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gActiveBattler, 0, 0, 0) + && !ItemBattleEffects(ITEMEFFECT_ON_SWITCH_IN, gActiveBattler, FALSE)) { gSideStatuses[GetBattlerSide(gActiveBattler)] &= ~(SIDE_STATUS_SPIKES_DAMAGED); @@ -5732,7 +5750,7 @@ static void atk5A_yesnoboxlearnmove(void) if (!gPaletteFade.active) { FreeAllWindowBuffers(); - sub_81BFA38(gPlayerParty, gBattleStruct->expGetterMonId, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn); + ShowSelectMovePokemonSummaryScreen(gPlayerParty, gBattleStruct->expGetterMonId, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn); gBattleScripting.learnMoveState++; } break; @@ -6750,10 +6768,10 @@ static void atk76_various(void) } } break; - case 21: + case VARIOUS_VOLUME_DOWN: m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x55); break; - case 22: + case VARIOUS_VOLUME_UP: m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100); break; case 23: @@ -7230,7 +7248,7 @@ static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr) PREPARE_STAT_BUFFER(gBattleTextBuff1, statId) - if ((statValue << 0x18) < 0) // stat decrease + if (statValue <= -1) // Stat decrease. { if (gSideTimers[GET_BATTLER_SIDE(gActiveBattler)].mistTimer && !certain && gCurrentMove != MOVE_CURSE) diff --git a/src/battle_setup.c b/src/battle_setup.c index e478af936..17ab20ccd 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -33,6 +33,7 @@ #include "field_weather.h" #include "gym_leader_rematch.h" #include "constants/map_types.h" +#include "constants/battle_frontier.h" enum { @@ -863,7 +864,7 @@ u8 sub_80B100C(s32 arg0) return sUnknown_0854FEA7[Random() % ARRAY_COUNT(sUnknown_0854FEA7)]; } - if (VarGet(VAR_0x40CE) != 3) + if (VarGet(VAR_FRONTIER_BATTLE_MODE) != FRONTIER_MODE_LINK_MULTIS) return sUnknown_0854FE98[Random() % ARRAY_COUNT(sUnknown_0854FE98)]; } else @@ -880,7 +881,7 @@ u8 sub_80B100C(s32 arg0) return sUnknown_0854FEA7[Random() % ARRAY_COUNT(sUnknown_0854FEA7)]; } - if (VarGet(VAR_0x40CE) != 3) + if (VarGet(VAR_FRONTIER_BATTLE_MODE) != FRONTIER_MODE_LINK_MULTIS) return sUnknown_0854FE98[Random() % ARRAY_COUNT(sUnknown_0854FE98)]; } @@ -900,7 +901,7 @@ static void CB2_GiveStarter(void) { u16 starterMon; - *GetVarPointer(VAR_FIRST_POKE) = gSpecialVar_Result; + *GetVarPointer(VAR_STARTER_MON) = gSpecialVar_Result; starterMon = GetStarterPokemon(gSpecialVar_Result); ScriptGiveMon(starterMon, 5, 0, 0, 0, 0); ResetTasks(); diff --git a/src/battle_tent.c b/src/battle_tent.c index 68d7c5e83..516f3fc4d 100644 --- a/src/battle_tent.c +++ b/src/battle_tent.c @@ -11,7 +11,11 @@ #include "constants/items.h" #include "constants/region_map_sections.h" -// this file's functions +extern const struct BattleFrontierTrainer gSlateportBattleTentTrainers[]; +extern const struct FacilityMon gSlateportBattleTentMons[]; +extern const u16 gBattleFrontierHeldItems[]; + +// This file's functions. void sub_81B99D4(void); void sub_81B9A28(void); void sub_81B9A44(void); @@ -51,7 +55,7 @@ void (*const gUnknown_086160B4[])(void) = sub_81B9B28 }; -const u16 gUnknown_086160D4[] = {ITEM_NEST_BALL, ITEM_NONE}; +static const u16 sVerdanturfTentRewards[] = {ITEM_NEST_BALL}; void (*const gUnknown_086160D8[])(void) = { @@ -64,7 +68,7 @@ void (*const gUnknown_086160D8[])(void) = sub_81B9CF0 }; -const u16 gUnknown_086160F4[] = {ITEM_HYPER_POTION, ITEM_NONE}; +static const u16 sFallarborTentRewards[] = {ITEM_HYPER_POTION}; void (*const gUnknown_086160F8[])(void) = { @@ -80,7 +84,7 @@ void (*const gUnknown_086160F8[])(void) = sub_81B9EC0 }; -const u16 gUnknown_08616120[] = {ITEM_FULL_HEAL, ITEM_NONE}; +static const u16 sSlateportTentRewards[] = {ITEM_FULL_HEAL}; // code void sub_81B99B4(void) @@ -115,7 +119,7 @@ void sub_81B9A60(void) void sub_81B9A90(void) { if (gTrainerBattleOpponent_A < 300) - ConvertBattleFrontierTrainerSpeechToString(gUnknown_0203BC88[gTrainerBattleOpponent_A].speechBefore); + ConvertBattleFrontierTrainerSpeechToString(gFacilityTrainers[gTrainerBattleOpponent_A].speechBefore); } void sub_81B9ABC(void) @@ -128,7 +132,7 @@ void sub_81B9ABC(void) void sub_81B9B00(void) { - gSaveBlock2Ptr->frontier.field_E6A = gUnknown_086160D4[Random() % 1]; + gSaveBlock2Ptr->frontier.field_E6A = sVerdanturfTentRewards[Random() % ARRAY_COUNT(sVerdanturfTentRewards)]; } void sub_81B9B28(void) @@ -178,7 +182,7 @@ void sub_81B9C2C(void) void sub_81B9C70(void) { - gSaveBlock2Ptr->frontier.field_E6C = gUnknown_086160F4[Random() % 1]; + gSaveBlock2Ptr->frontier.field_E6C = sFallarborTentRewards[Random() % ARRAY_COUNT(sFallarborTentRewards)]; } void sub_81B9C98(void) @@ -233,7 +237,7 @@ void sub_81B9DB4(void) void sub_81B9DF8(void) { - gSaveBlock2Ptr->frontier.field_E6E = gUnknown_08616120[Random() % 1]; + gSaveBlock2Ptr->frontier.field_E6E = sSlateportTentRewards[Random() % ARRAY_COUNT(sSlateportTentRewards)]; } void sub_81B9E20(void) @@ -266,3 +270,259 @@ bool8 sub_81B9E94(void) return (gMapHeader.regionMapSectionId == MAPSEC_SLATEPORT_CITY && ((gMapHeader.mapLayoutId == 385) | (gMapHeader.mapLayoutId == 386))); } + +// This function was written very...oddly. +#ifdef NONMATCHING +void sub_81B9EC0(void) +{ + s32 i, j; + u16 currMonId = 0, currSpecies = 0; + u16 species[PARTY_SIZE]; + u16 monIds[PARTY_SIZE]; + u16 heldItems[PARTY_SIZE]; + s32 zero = 0; + + gFacilityTrainers = gSlateportBattleTentTrainers; + for (i = 0; i < PARTY_SIZE; i++) + { + species[i] = 0; + monIds[i] = 0; + heldItems[i] = 0; + } + gFacilityTrainerMons = gSlateportBattleTentMons; + currSpecies = 0; + for (i = 0; i != PARTY_SIZE;) + { + // Cannot have two pokemon of the same species. + currMonId = Random() % 70; + for (j = zero; j < i + zero; j++) + { + if (monIds[j] == currMonId) + break; + if (species[j] == gFacilityTrainerMons[currMonId].species) + { + if (currSpecies == 0) + currSpecies = gFacilityTrainerMons[currMonId].species; + else + break; + } + } + if (j != i + zero) + continue; + + // Cannot have two same held items. + for (j = zero; j < i + zero; j++) + { + if (heldItems[j] == 0) + continue; + if (heldItems[j] == gBattleFrontierHeldItems[gFacilityTrainerMons[currMonId].itemTableId]) + { + if (gFacilityTrainerMons[currMonId].species == currSpecies) + currSpecies = 0; + else + break; + } + } + if (j != i + zero) + continue; + + gSaveBlock2Ptr->frontier.field_E70[i].monId = currMonId; + species[i] = gFacilityTrainerMons[currMonId].species; + heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[currMonId].itemTableId]; + monIds[i] = currMonId; + i++; + } +} +#else +NAKED +void sub_81B9EC0(void) +{ + asm_unified("\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x3C\n\ + ldr r1, =gFacilityTrainers\n\ + ldr r0, =gSlateportBattleTentTrainers\n\ + str r0, [r1]\n\ + add r0, sp, 0xC\n\ + mov r9, r0\n\ + mov r1, sp\n\ + adds r1, 0x18\n\ + str r1, [sp, 0x2C]\n\ + ldr r5, =gFacilityTrainerMons\n\ + ldr r4, =gSlateportBattleTentMons\n\ + movs r2, 0\n\ + adds r3, r1, 0\n\ + mov r1, r9\n\ + mov r0, sp\n\ + movs r6, 0x5\n\ + mov r8, r6\n\ +_081B9EEC:\n\ + strh r2, [r0]\n\ + strh r2, [r1]\n\ + strh r2, [r3]\n\ + adds r3, 0x2\n\ + adds r1, 0x2\n\ + adds r0, 0x2\n\ + movs r7, 0x1\n\ + negs r7, r7\n\ + add r8, r7\n\ + mov r6, r8\n\ + cmp r6, 0\n\ + bge _081B9EEC\n\ + str r4, [r5]\n\ + movs r7, 0\n\ + mov r10, r7\n\ + movs r0, 0\n\ + mov r8, r0\n\ + ldr r1, [sp, 0x2C]\n\ + str r1, [sp, 0x30]\n\ + mov r2, sp\n\ + str r2, [sp, 0x34]\n\ + lsls r6, r0, 1\n\ + str r6, [sp, 0x24]\n\ + add r6, r9\n\ + str r6, [sp, 0x28]\n\ +_081B9F1E:\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x46\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + movs r2, 0\n\ + mov r7, r8\n\ + adds r6, r2, r7\n\ + cmp r2, r6\n\ + bge _081B9F7C\n\ + ldr r1, [sp, 0x28]\n\ + ldrh r0, [r1]\n\ + cmp r0, r5\n\ + beq _081B9F7C\n\ + ldr r0, =gFacilityTrainerMons\n\ + ldr r1, [r0]\n\ + lsls r0, r5, 4\n\ + adds r4, r0, r1\n\ + ldrh r7, [r4]\n\ + mov r12, r7\n\ + lsls r3, r2, 1\n\ + ldr r1, [sp, 0x24]\n\ + add r1, sp\n\ + str r6, [sp, 0x38]\n\ +_081B9F56:\n\ + ldrh r0, [r1]\n\ + cmp r0, r12\n\ + bne _081B9F66\n\ + mov r0, r10\n\ + cmp r0, 0\n\ + bne _081B9F7C\n\ + ldrh r7, [r4]\n\ + mov r10, r7\n\ +_081B9F66:\n\ + adds r3, 0x2\n\ + adds r1, 0x2\n\ + adds r2, 0x1\n\ + ldr r0, [sp, 0x38]\n\ + cmp r2, r0\n\ + bge _081B9F7C\n\ + mov r7, r9\n\ + adds r0, r7, r3\n\ + ldrh r0, [r0]\n\ + cmp r0, r5\n\ + bne _081B9F56\n\ +_081B9F7C:\n\ + cmp r2, r6\n\ + bne _081BA01C\n\ + movs r2, 0\n\ + cmp r2, r6\n\ + bge _081B9FD4\n\ + ldr r0, =gBattleFrontierHeldItems\n\ + mov r12, r0\n\ + ldr r7, =gFacilityTrainerMons\n\ + ldr r1, [sp, 0x24]\n\ + ldr r0, [sp, 0x2C]\n\ + adds r4, r1, r0\n\ +_081B9F92:\n\ + ldrh r3, [r4]\n\ + cmp r3, 0\n\ + beq _081B9FCC\n\ + ldr r1, [r7]\n\ + lsls r0, r5, 4\n\ + adds r1, r0, r1\n\ + ldrb r0, [r1, 0xA]\n\ + lsls r0, 1\n\ + add r0, r12\n\ + ldrh r0, [r0]\n\ + cmp r3, r0\n\ + bne _081B9FCC\n\ + ldrh r0, [r1]\n\ + cmp r0, r10\n\ + bne _081B9FD4\n\ + movs r1, 0\n\ + mov r10, r1\n\ + b _081B9FD4\n\ + .pool\n\ +_081B9FCC:\n\ + adds r4, 0x2\n\ + adds r2, 0x1\n\ + cmp r2, r6\n\ + blt _081B9F92\n\ +_081B9FD4:\n\ + cmp r2, r6\n\ + bne _081BA01C\n\ + ldr r0, =gSaveBlock2Ptr\n\ + ldr r1, [r0]\n\ + mov r2, r8\n\ + lsls r3, r2, 1\n\ + adds r0, r3, r2\n\ + lsls r0, 2\n\ + adds r1, r0\n\ + movs r6, 0xE7\n\ + lsls r6, 4\n\ + adds r1, r6\n\ + strh r5, [r1]\n\ + ldr r0, =gFacilityTrainerMons\n\ + ldr r0, [r0]\n\ + lsls r1, r5, 4\n\ + adds r1, r0\n\ + ldrh r0, [r1]\n\ + ldr r7, [sp, 0x34]\n\ + strh r0, [r7]\n\ + ldr r2, =gBattleFrontierHeldItems\n\ + ldrb r0, [r1, 0xA]\n\ + lsls r0, 1\n\ + adds r0, r2\n\ + ldrh r0, [r0]\n\ + ldr r1, [sp, 0x30]\n\ + strh r0, [r1]\n\ + add r3, r9\n\ + strh r5, [r3]\n\ + adds r1, 0x2\n\ + str r1, [sp, 0x30]\n\ + adds r2, r7, 0\n\ + adds r2, 0x2\n\ + str r2, [sp, 0x34]\n\ + movs r6, 0x1\n\ + add r8, r6\n\ +_081BA01C:\n\ + mov r7, r8\n\ + cmp r7, 0x6\n\ + beq _081BA024\n\ + b _081B9F1E\n\ +_081BA024:\n\ + add sp, 0x3C\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .pool\n\ + "); +} +#endif // NONMATCHING diff --git a/src/battle_tower.c b/src/battle_tower.c new file mode 100644 index 000000000..e70d4af91 --- /dev/null +++ b/src/battle_tower.c @@ -0,0 +1,85 @@ +#include "global.h" +#include "event_data.h" +#include "battle_setup.h" +#include "overworld.h" +#include "random.h" +#include "battle_tower.h" + +extern void sub_81A3ACC(void); + +extern const u32 gUnknown_085DF9AC[][2]; +extern const u32 gUnknown_085DF9CC[][2]; +extern void (* const gUnknown_085DF96C[])(void); + +// This file's functions. +void sub_8164ED8(void); +u16 sub_8164FCC(u8, u8); + +// code +void sub_8161F74(void) +{ + gUnknown_085DF96C[gSpecialVar_0x8004](); +} + +void sub_8161F94(void) +{ + u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; + u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); + + gSaveBlock2Ptr->frontier.field_CA8 = 1; + gSaveBlock2Ptr->frontier.field_CB2 = 0; + gSaveBlock2Ptr->frontier.field_CA9_a = 0; + gSaveBlock2Ptr->frontier.field_CA9_b = 0; + sub_81A3ACC(); + if (!(gSaveBlock2Ptr->frontier.field_CDC & gUnknown_085DF9AC[battleMode][lvlMode])) + gSaveBlock2Ptr->frontier.field_CE0[battleMode][lvlMode] = 0; + + sub_8164ED8(); + saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1); + gTrainerBattleOpponent_A = 0; +} + +void sub_8162054(void) +{ + u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; + u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); + + switch (gSpecialVar_0x8005) + { + case 0: + break; + case 1: + gSpecialVar_Result = sub_8164FCC(lvlMode, battleMode); + break; + case 2: + gSpecialVar_Result = ((gSaveBlock2Ptr->frontier.field_CDC & gUnknown_085DF9AC[battleMode][lvlMode]) != 0); + break; + case 3: + gSaveBlock2Ptr->frontier.field_D07 = gSaveBlock2Ptr->frontier.lvlMode; + break; + } +} + +void sub_81620F4(void) +{ + u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; + u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); + + switch (gSpecialVar_0x8005) + { + case 0: + break; + case 1: + gSaveBlock2Ptr->frontier.field_CE0[battleMode][lvlMode] = gSpecialVar_0x8006; + break; + case 2: + if (gSpecialVar_0x8006) + gSaveBlock2Ptr->frontier.field_CDC |= gUnknown_085DF9AC[battleMode][lvlMode]; + else + gSaveBlock2Ptr->frontier.field_CDC &= gUnknown_085DF9CC[battleMode][lvlMode]; + break; + case 3: + gSaveBlock2Ptr->frontier.field_D07 = gSaveBlock2Ptr->frontier.lvlMode; + break; + } +} diff --git a/src/battle_util.c b/src/battle_util.c index 875244d79..5096a2f3a 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -821,12 +821,12 @@ u8 DoBattlerEndTurnEffects(void) gBattleStruct->turnEffectsTracker++; break; case ENDTURN_ITEMS1: // item effects - if (ItemBattleEffects(1, gActiveBattler, 0)) + if (ItemBattleEffects(1, gActiveBattler, FALSE)) effect++; gBattleStruct->turnEffectsTracker++; break; case ENDTURN_ITEMS2: // item effects again - if (ItemBattleEffects(1, gActiveBattler, 1)) + if (ItemBattleEffects(1, gActiveBattler, TRUE)) effect++; gBattleStruct->turnEffectsTracker++; break; @@ -1280,7 +1280,7 @@ bool8 HandleFaintedMonActions(void) gBattleStruct->faintedActionsState = 4; break; case 6: - if (AbilityBattleEffects(ABILITYEFFECT_INTIMIDATE1, 0, 0, 0, 0) || AbilityBattleEffects(ABILITYEFFECT_TRACE, 0, 0, 0, 0) || ItemBattleEffects(1, 0, 1) || AbilityBattleEffects(ABILITYEFFECT_FORECAST, 0, 0, 0, 0)) + if (AbilityBattleEffects(ABILITYEFFECT_INTIMIDATE1, 0, 0, 0, 0) || AbilityBattleEffects(ABILITYEFFECT_TRACE, 0, 0, 0, 0) || ItemBattleEffects(1, 0, TRUE) || AbilityBattleEffects(ABILITYEFFECT_FORECAST, 0, 0, 0, 0)) return TRUE; gBattleStruct->faintedActionsState++; break; @@ -2083,7 +2083,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA } } break; - case ABILITYEFFECT_CONTACT: // 4 + case ABILITYEFFECT_MOVE_END: // Think contact abilities. switch (gLastUsedAbility) { case ABILITY_COLOR_CHANGE: @@ -2343,7 +2343,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA { gLastUsedAbility = ABILITY_INTIMIDATE; gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES); - BattleScriptPushCursorAndCallback(BattleScript_82DB4B8); + BattleScriptPushCursorAndCallback(BattleScript_IntimidateActivatesEnd3); gBattleStruct->intimidateBattler = i; effect++; break; @@ -2415,7 +2415,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA gLastUsedAbility = ABILITY_INTIMIDATE; gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES); BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_82DB4C1; + gBattlescriptCurrInstr = BattleScript_IntimidateActivates; gBattleStruct->intimidateBattler = i; effect++; break; @@ -3044,7 +3044,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) break; case 2: break; - case 3: + case ITEMEFFECT_MOVE_END: for (battlerId = 0; battlerId < gBattlersCount; battlerId++) { gLastUsedItem = gBattleMons[battlerId].item; @@ -3177,7 +3177,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) gPotentialItemEffectBattler = battlerId; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_WhiteHerbRet; - return effect; // unnecessary return + return effect; } break; } @@ -3192,7 +3192,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) } } break; - case 4: + case ITEMEFFECT_KINGSROCK_SHELLBELL: if (gBattleMoveDamage) { switch (atkHoldEffect) @@ -3386,7 +3386,7 @@ u8 IsMonDisobedient(void) gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_RAGE); if (gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP && (gCurrentMove == MOVE_SNORE || gCurrentMove == MOVE_SLEEP_TALK)) { - gBattlescriptCurrInstr = BattleScript_82DB695; + gBattlescriptCurrInstr = BattleScript_IgnoresWhileAsleep; return 1; } @@ -3440,7 +3440,7 @@ u8 IsMonDisobedient(void) { gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBattlerAttacker], &gBattleMons[gBattlerAttacker], MOVE_POUND, 0, 40, 0, gBattlerAttacker, gBattlerAttacker); gBattlerTarget = gBattlerAttacker; - gBattlescriptCurrInstr = BattleScript_82DB6F0; + gBattlescriptCurrInstr = BattleScript_IgnoresAndHitsItself; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; return 2; } diff --git a/src/berry.c b/src/berry.c index f8a0204c4..ea216b61c 100644 --- a/src/berry.c +++ b/src/berry.c @@ -1076,8 +1076,8 @@ u16 BerryTypeToItemId(u16 berry) void GetBerryNameByBerryType(u8 berry, u8 *string) { - memcpy(string, GetBerryInfo(berry)->name, BERRY_NAME_COUNT - 1); - string[BERRY_NAME_COUNT - 1] = EOS; + memcpy(string, GetBerryInfo(berry)->name, BERRY_NAME_LENGTH); + string[BERRY_NAME_LENGTH] = EOS; } void GetBerryCountStringByBerryType(u8 berry, u8* dest, u32 berryCount) diff --git a/src/berry_blender.c b/src/berry_blender.c index 257c7233f..96c3a933d 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -51,7 +51,7 @@ enum struct BlenderBerry { u16 itemId; - u8 name[BERRY_NAME_COUNT]; + u8 name[BERRY_NAME_LENGTH + 1]; u8 flavors[FLAVOR_COUNT]; u8 smoothness; }; @@ -188,7 +188,7 @@ static bool8 sub_8083380(void); static void sub_808074C(void); static void Blender_PrintPlayerNames(void); static void sub_8080588(void); -static void Blender_SetBankBerryData(u8 bank, u16 itemId); +static void Blender_SetParticipantBerryData(u8 participantId, u16 itemId); static void Blender_AddTextPrinter(u8 windowId, const u8 *string, u8 x, u8 y, s32 speed, s32 caseId); static void sub_8080DF8(void); static void sub_8082E84(void); @@ -322,18 +322,72 @@ static const struct BgTemplate sBerryBlenderBgTemplates[3] = static const struct WindowTemplate sBerryBlender_WindowTemplates[] = { - {0, 1, 6, 7, 2, 0xE, 0x28}, - {0, 0x16, 6, 7, 2, 0xE, 0x36}, - {0, 1, 0xC, 7, 2, 0xE, 0x44}, - {0, 0x16, 0xC, 7, 2, 0xE, 0x52}, - {0, 2, 0xF, 0x1B, 4, 0xE, 0x60}, - {0, 5, 3, 0x15, 0xE, 0xE, 0x60}, + { + .priority = 0, + .tilemapLeft = 1, + .tilemapTop = 6, + .width = 7, + .height = 2, + .paletteNum = 14, + .baseBlock = 0x28, + }, + { + .priority = 0, + .tilemapLeft = 22, + .tilemapTop = 6, + .width = 7, + .height = 2, + .paletteNum = 14, + .baseBlock = 0x36, + }, + { + .priority = 0, + .tilemapLeft = 1, + .tilemapTop = 12, + .width = 7, + .height = 2, + .paletteNum = 14, + .baseBlock = 0x44, + }, + { + .priority = 0, + .tilemapLeft = 22, + .tilemapTop = 12, + .width = 7, + .height = 2, + .paletteNum = 14, + .baseBlock = 0x52, + }, + { + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 15, + .width = 27, + .height = 4, + .paletteNum = 14, + .baseBlock = 0x60, + }, + { + .priority = 0, + .tilemapLeft = 5, + .tilemapTop = 3, + .width = 21, + .height = 14, + .paletteNum = 14, + .baseBlock = 0x60, + }, DUMMY_WIN_TEMPLATE }; static const struct WindowTemplate sBlender_YesNoWindowTemplate = { - 0, 0x15, 9, 5, 4, 0xE, 0xCC + .priority = 0, + .tilemapLeft = 21, + .tilemapTop = 9, + .width = 5, + .height = 4, + .paletteNum = 14, + .baseBlock = 0xCC }; static const s8 sUnknown_083399C0[][2] = @@ -790,7 +844,16 @@ static const u8 sUnknown_08339CD2[] = 0x05, 0x03, 0x03, 0x03, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x02 }; -static const struct WindowTemplate sBlenderRecordWindowTemplate = {0, 6, 4, 0x12, 0xB, 0xF, 8}; +static const struct WindowTemplate sBlenderRecordWindowTemplate = +{ + .priority = 0, + .tilemapLeft = 6, + .tilemapTop = 4, + .width = 18, + .height = 11, + .paletteNum = 15, + .baseBlock = 8 +}; // code @@ -1391,7 +1454,7 @@ static void Blender_SetOpponentsBerryData(u16 playerBerryItemId, u8 playersNum, if (var <= 4) opponentBerryId -= 5; } - Blender_SetBankBerryData(i + 1, opponentBerryId + FIRST_BERRY_INDEX); + Blender_SetParticipantBerryData(i + 1, opponentBerryId + FIRST_BERRY_INDEX); } } @@ -1454,7 +1517,7 @@ static void sub_80808D4(void) case 0: sub_800B4C0(); sub_8080588(); - Blender_SetBankBerryData(0, gSpecialVar_ItemId); + Blender_SetParticipantBerryData(0, gSpecialVar_ItemId); Blender_CopyBerryData(&sBerryBlenderData->blendedBerries[0], gSpecialVar_ItemId); Blender_SetOpponentsBerryData(gSpecialVar_ItemId, sBerryBlenderData->playersNo, &sBerryBlenderData->blendedBerries[0]); @@ -2436,7 +2499,7 @@ static void CB2_HandleBlenderEndGame(void) sBerryBlenderData->gameEndState++; break; case 10: - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 1: case -1: @@ -2956,10 +3019,10 @@ static void sub_8082F9C(struct Sprite* sprite) DestroySprite(sprite); } -static void Blender_SetBankBerryData(u8 bank, u16 itemId) +static void Blender_SetParticipantBerryData(u8 participantId, u16 itemId) { - sBerryBlenderData->chosenItemId[bank] = itemId; - Blender_CopyBerryData(&sBerryBlenderData->blendedBerries[bank], itemId); + sBerryBlenderData->chosenItemId[participantId] = itemId; + Blender_CopyBerryData(&sBerryBlenderData->blendedBerries[participantId], itemId); } static void sub_8083010(struct Sprite* sprite) diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c index fb4bf6817..0c13e7085 100644 --- a/src/berry_tag_screen.c +++ b/src/berry_tag_screen.c @@ -101,10 +101,42 @@ static const u8 sTextColors[2][3] = static const struct WindowTemplate sWindowTemplates[] = { - {0x01, 0x0b, 0x04, 0x08, 0x02, 0x0f, 0x0045}, // WIN_BERRY_NAME - {0x01, 0x0b, 0x07, 0x12, 0x04, 0x0f, 0x0055}, // WIN_SIZE_FIRM - {0x01, 0x04, 0x0e, 0x19, 0x04, 0x0f, 0x009d}, // WIN_DESC - {0x00, 0x02, 0x00, 0x08, 0x02, 0x0f, 0x0101}, // WIN_BERRY_TAG + { // WIN_BERRY_NAME + .priority = 1, + .tilemapLeft = 11, + .tilemapTop = 4, + .width = 8, + .height = 2, + .paletteNum = 15, + .baseBlock = 69, + }, + { // WIN_SIZE_FIRM + .priority = 1, + .tilemapLeft = 11, + .tilemapTop = 7, + .width = 18, + .height = 4, + .paletteNum = 15, + .baseBlock = 85, + }, + { // WIN_DESC + .priority = 1, + .tilemapLeft = 4, + .tilemapTop = 14, + .width = 25, + .height = 4, + .paletteNum = 15, + .baseBlock = 157, + }, + { // WIN_BERRY_TAG + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 0, + .width = 8, + .height = 2, + .paletteNum = 15, + .baseBlock = 257, + }, DUMMY_WIN_TEMPLATE }; @@ -1001,7 +1001,7 @@ void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 wi } } -void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette) +void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, const void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette) { CopyRectToBgTilemapBufferRect(bg, src, 0, 0, rectWidth, rectHeight, destX, destY, rectWidth, rectHeight, palette, 0, 0); } diff --git a/src/clear_save_data_screen.c b/src/clear_save_data_screen.c index 266ea8250..5c1f7db20 100644 --- a/src/clear_save_data_screen.c +++ b/src/clear_save_data_screen.c @@ -86,7 +86,7 @@ static void Task_DoClearSaveDataScreenYesNo(u8 taskId) static void Task_ClearSaveDataScreenYesNoChoice(u8 taskId) { - switch(ProcessMenuInputNoWrap_()) + switch(Menu_ProcessInputNoWrap_()) { case 0: FillWindowPixelBuffer(0, 17); diff --git a/src/clock.c b/src/clock.c index ccbb0c24b..91eb5f16d 100644 --- a/src/clock.c +++ b/src/clock.c @@ -88,6 +88,6 @@ static void ReturnFromStartWallClock(void) void StartWallClock(void) { - SetMainCallback2(Cb2_StartWallClock); + SetMainCallback2(CB2_StartWallClock); gMain.savedCallback = ReturnFromStartWallClock; } diff --git a/src/contest.c b/src/contest.c new file mode 100644 index 000000000..910637387 --- /dev/null +++ b/src/contest.c @@ -0,0 +1,2761 @@ +#include "global.h" +#include "gpu_regs.h" +#include "bg.h" +#include "malloc.h" +#include "constants/items.h" +#include "constants/event_objects.h" +#include "constants/moves.h" +#include "constants/songs.h" +#include "constants/species.h" +#include "constants/flags.h" +#include "battle.h" +#include "battle_anim.h" +#include "blend_palette.h" +#include "contest.h" +#include "data2.h" +#include "decompress.h" +#include "graphics.h" +#include "link.h" +#include "m4a.h" +#include "main.h" +#include "menu.h" +#include "overworld.h" +#include "palette.h" +#include "random.h" +#include "script.h" +#include "sound.h" +#include "sprite.h" +#include "string_util.h" +#include "task.h" +#include "text.h" +#include "tv.h" +#include "scanline_effect.h" +#include "util.h" +#include "contest_link_80F57C4.h" +#include "dma3.h" +#include "battle_message.h" +#include "event_scripts.h" +#include "event_data.h" +#include "strings.h" +#include "contest_effect.h" +#include "contest_link_80FC4F4.h" +#include "script_pokemon_util_80F87D8.h" +#include "international_string_util.h" +#include "data2.h" +#include "constants/rgb.h" + +extern void (*gFieldCallback)(void); + +void sub_80D782C(void); +void sub_80D7C7C(u8 taskId); +void sub_80D7CB4(u8 taskId); +void sub_80D7DAC(u8 taskId); +void sub_80D7DC8(u8 taskId); +void sub_80D7DE8(u8 taskId); +bool8 sub_80D7E44(u8 *); +void sub_80D80C8(u8 taskId); +void sub_80D8108(u8 taskId); +void vblank_cb_battle(void); +void sub_80D823C(void); +void sub_80D833C(u8 taskId); +void sub_80D8424(u8 taskId); +void sub_80D8610(u8 taskId); +void sub_80D8490(u8 taskId); +void sub_80D880C(s8); +void sub_80D883C(s8); +void sub_80D8894(u8 taskId); +void sub_80D892C(u8 taskId); +void sub_80D895C(u8 taskId); +void sub_80D8A04(u8 taskId); +void sub_80D8A50(u8 taskId); +void sub_80D8A88(u8 taskId); +void sub_80D8B38(u8 taskId); +void sub_80DA110(u8); +void sub_80DA134(struct Sprite *); +void sub_80DA164(struct Sprite *); +void sub_80DA198(u8); +void sub_80DA25C(u8); +void sub_80DA28C(u8); +void sub_80DA31C(u8); +void sub_80DA348(u8); +void sub_80DA38C(u8); +void sub_80DA3CC(u8); +void sub_80DA464(u8); +void sub_80DA49C(u8); +void sub_80DA4CC(u8); +void sub_80DA51C(u8); +void sub_80DA5B4(u8); +void sub_80DA5E8(u8); +void sub_80DA6B4(u8); +void sub_80DA700(u8); +void sub_80DA740(u8); +void sub_80DA7A0(u8); +void sub_80DA7EC(u8); +void sub_80DA830(u8); +void sub_80DA874(void); +bool8 sub_80DA8A4(void); +void sub_80DAF04(u8); +void sub_80DAF1C(u8 a0, u8 a1); +void sub_80DAF88(u8); +void sub_80DAFA0(u8, u8); +u8 sub_80DB0C4(void); +u8 sub_80DB120(void); +u8 sub_80DB174(u16, u32, u32, u32); +void sub_80DB2BC(void); +void prints_contest_move_description(u16); +u16 sub_80DE84C(u16); +void sub_80DB89C(void); +u16 sub_80DB8B8(u8); +void sub_80DB918(void); +bool8 Contest_IsMonsTurnDisabled(u8); +void sub_80DBF68(void); +void sub_80DBF90(void); +void sub_80DC2BC(void); +void sub_80DC490(bool8); +void sub_80DC4F0(void); +void sub_80DC594(void); +void sub_80DC5E8(void); +void sub_80DC7EC(void); +void sub_80DCD48(void); +void sub_80DCE58(u8); +void sub_80DD04C(void); +void sub_80DD590(void); +void sub_80DDB0C(void); +void sub_80DDBE8(void); +bool8 sub_80DE1E8(u8); +void sub_80DE224(void); +void sub_80DE350(void); +void sub_80DE424(u8); +void sub_80DE69C(u8); +void sub_80DEA20(void); +void Contest_PrintTextToBg0WindowAt(u32, u8 *, s32, u8, u8); +void Contest_StartTextPrinter(const u8 *, u8); +void ContestBG_FillBoxWithIncrementingTile(u8, u16, u8, u8, u8, u8, u8, u8); +bool32 Contest_RunTextPrinters(void); +void Contest_SetBgCopyFlags(u32); +void sub_80FC9F8(u8); +bool8 AreMovesContestCombo(u16, u16); +void sub_80DBD18(void); +void sub_80DF250(void); +void sub_80DF4F8(void); +void sub_80DD080(u8); +void sub_80DF080(u8); +void sub_80DF750(void); +void sub_80DE9DC(u8); +void sub_80DCBE8(u8, u8); +u8 sub_80DC9EC(u8); +u16 sub_80DE834(u16); +void sub_80DE864(u8); +void sub_80DEAA8(u16); +void sub_80DE9B0(u8); +void sub_80DC674(u8); +void sub_80DE12C(void); +void sub_80DD45C(u8, u8); +void sub_80DD720(u8); +void sub_80DE008(bool8); +void sub_80DC028(s16, s16, u8); +bool8 sub_80DB5B8(u8, u8); +bool8 sub_80DB798(u8); +void sub_80DB884(void); +void sub_80DC9B4(u8); +void sub_80DDED0(s8, s8); +void sub_80DDCDC(s8); +void sub_80DDE0C(void); +void sub_80DD940(void); +void sub_80DB944(void); +void sub_80DBA18(void); +void sub_80DC3AC(void); +bool8 sub_80DC3C4(void); +void sub_80DF9D4(u8 *); +void sub_80DF9E0(u8 *, s32); +void ContestBG_FillBoxWithTile(u8, u16, u8, u8, u8, u8, u8); +void Contest_PrintTextToBg0WindowStd(u8, const u8 *); + +EWRAM_DATA struct ContestPokemon gContestMons[4] = {0}; +EWRAM_DATA s16 gContestMonConditions[4] = {0}; +EWRAM_DATA s16 gUnknown_02039F08[4] = {0}; +EWRAM_DATA s16 gUnknown_02039F10[4] = {0}; +EWRAM_DATA s16 gUnknown_02039F18[4] = {0}; +EWRAM_DATA u8 gContestFinalStandings[4] = {0}; +EWRAM_DATA u8 gUnknown_02039F24 = 0; +EWRAM_DATA u8 gContestPlayerMonIndex = 0; +EWRAM_DATA u8 gUnknown_02039F26[4] = {0}; +EWRAM_DATA u8 gIsLinkContest = 0; +// Bit 0: Is a link contest +// Bit 1: Link contest uses wireless adapter +EWRAM_DATA u8 gUnknown_02039F2B = 0; +EWRAM_DATA u16 gSpecialVar_ContestCategory = 0; +EWRAM_DATA u16 gSpecialVar_ContestRank = 0; +EWRAM_DATA u8 gUnknown_02039F30 = 0; +EWRAM_DATA u8 gUnknown_02039F31 = 0; +EWRAM_DATA struct ContestResources * gContestResources = NULL; +EWRAM_DATA u8 sContestBgCopyFlags = 0; +EWRAM_DATA struct ContestWinner gUnknown_02039F3C = {0}; + +u32 gContestRngValue; + +extern u16 gBattle_BG0_X; +extern u16 gBattle_BG0_Y; +extern u16 gBattle_BG1_X; +extern s16 gBattle_BG1_Y; +extern u16 gBattle_BG2_X; +extern u16 gBattle_BG2_Y; +extern u16 gBattle_BG3_X; +extern u16 gBattle_BG3_Y; +extern u16 gBattle_WIN0H; +extern u16 gBattle_WIN0V; +extern u16 gBattle_WIN1H; +extern u16 gBattle_WIN1V; + +extern const u8 gContestMiscGfx[]; +extern const u8 gContestAudienceGfx[]; +extern const u8 gUnknown_08C16FA8[]; +extern const u8 gUnknown_08C16E90[]; +extern const u8 gUnknown_08C17170[]; +extern const u16 gUnknown_08587C30[]; +extern const struct BgTemplate gUnknown_08587F34[4]; +extern const struct WindowTemplate gUnknown_08587F44[]; +extern const u8 *const gUnknown_08587D90[]; +extern const u8 *const gUnknown_08587F08[]; +extern const u8 *const gUnknown_08587F1C[]; +extern const u8 gText_0827D55A[]; +extern const u8 gText_0827E793[]; +extern const u8 gText_0827E32E[]; +extern const u8 gText_0827E35B[]; +extern const u8 gText_0827E38D[]; +extern const u8 gText_0827E2FE[]; +extern const u8 gText_0827E6E3[]; +extern const u8 gText_0827E73C[]; +extern const u8 gText_0827E717[]; +extern const u8 gText_0827E76A[]; +extern const u8 gText_0827E7EA[]; +extern const u8 gText_0827E817[]; +extern const u8 gText_0827E58A[]; +extern const u8 gText_0827D56F[]; +extern const u8 gText_0827D597[]; +extern const struct ContestPokemon gContestOpponents[96]; +extern const u8 gUnknown_085898A4[96]; +extern const struct CompressedSpriteSheet gUnknown_08587C00; +extern const u8 gContest2Pal[]; +extern const struct SpriteTemplate gSpriteTemplate_8587BE8; +extern const struct CompressedSpriteSheet gUnknown_08587C08; +extern const struct CompressedSpritePalette gUnknown_08587C10; +extern const struct SpriteTemplate gSpriteTemplate_8587C18; +extern const union AffineAnimCmd *const gUnknown_082FF6C0[]; +extern const union AffineAnimCmd *const gUnknown_082FF694[]; +extern const u8 *const gContestEffectDescriptionPointers[]; + +void TaskDummy1(u8 taskId) +{ +} + +void ResetLinkContestBoolean(void) +{ + gIsLinkContest = 0; +} + +void sub_80D7678(void) +{ + u16 savedIme; + + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG0 | WINOUT_WINOBJ_BG1 | WINOUT_WINOBJ_BG2 | WINOUT_WINOBJ_BG3 | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR); + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON); + + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + gBattle_BG2_X = 0; + gBattle_BG2_Y = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + gBattle_WIN1H = 0; + gBattle_WIN1V = 0; +} + +void LoadContestBgAfterMoveAnim(void) +{ + s32 i; + + LZDecompressVram(gContestMiscGfx, (void *)VRAM); + LZDecompressVram(gContestAudienceGfx, (void *)(VRAM + 0x2000)); + CopyToBgTilemapBuffer(3, gUnknown_08C16FA8, 0, 0); + CopyBgTilemapBufferToVram(3); + LoadCompressedPalette(gUnknown_08C16E90, 0, 0x200); + sub_80D782C(); + for (i = 0; i < 4; i++) + { + u32 var = 5 + i; + + LoadPalette(shared18000.unk18004[var], 16 * (5 + gUnknown_02039F26[i]), 16 * sizeof(u16)); + } +} + +void sub_80D779C(void) +{ + s32 i; + + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_08587F34, ARRAY_COUNT(gUnknown_08587F34)); + SetBgAttribute(3, BG_CTRL_ATTR_PRIORITY, 1); + for (i = 0; i < 4; i++) + { + SetBgTilemapBuffer(i, gContestResources->field_24[i]); + } +} + +void sub_80D77E4(void) +{ + InitWindows(gUnknown_08587F44); + DeactivateAllTextPrinters(); + if (gIsLinkContest & 1) + { + gTextFlags.flag_0 = FALSE; + } + else + { + gTextFlags.flag_0 = TRUE; + } +} + +void sub_80D782C(void) +{ + s32 i; + + LoadPalette(gUnknown_08587C30, 0xf0, 0x20); + FillPalette(RGB_BLACK, 0, 2); + for (i = 10; i < 14; i++) + LoadPalette(gPlttBufferUnfaded + 241, 240 + i, 2); + FillPalette(RGB(31, 17, 31), 0xF3, 2); +} + +void sub_80D787C(void) +{ + s32 i; + + *gContestResources->field_0 = (struct Contest){}; + for (i = 0; i < 4; i++) + { + gContestResources->field_0->unk19206[i] = 0xFF; + } + for (i = 0; i < 4; i++) + { + gContestResources->field_4[i] = (struct ContestantStatus){}; + } + for (i = 0; i < 4; i++) + { + gContestResources->field_4[i].unkB_0 = 0; + gContestResources->field_4[i].effectStringId = CONTEST_STRING_NONE; + gContestResources->field_4[i].effectStringId2 = CONTEST_STRING_NONE; + } + *gContestResources->field_8 = (struct UnknownContestStruct7){}; + *gContestResources->field_C = (struct ContestAIInfo){}; + *gContestResources->field_10 = (struct UnknownContestStruct5){}; + memset(gContestResources->field_14, 0, 4 * sizeof(struct UnknownContestStruct4)); + if (!(gIsLinkContest & 1)) + sub_80DCE58(0); + for (i = 0; i < 4; i++) + { + gContestResources->field_4[i].nextTurnOrder = 0xFF; + gContestResources->field_0->unk19218[i] = gUnknown_02039F26[i]; + } + sub_80DD590(); + *gContestResources->field_1c = (struct ContestResourcesField1C){}; +} + +void sub_80D7988(void) +{ + gContestResources = AllocZeroed(sizeof(struct ContestResources)); + gContestResources->field_0 = AllocZeroed(sizeof(struct Contest)); + gContestResources->field_4 = AllocZeroed(sizeof(struct ContestantStatus) * 4); + gContestResources->field_8 = AllocZeroed(sizeof(struct UnknownContestStruct7)); + gContestResources->field_C = AllocZeroed(sizeof(struct ContestAIInfo)); + gContestResources->field_10 = AllocZeroed(sizeof(struct UnknownContestStruct5) * 4); + gContestResources->field_14 = AllocZeroed(sizeof(struct UnknownContestStruct4) * 4); + gContestResources->field_18 = AllocZeroed(sizeof(struct ContestStruct_field_18)); + gContestResources->field_1c = AllocZeroed(sizeof(struct ContestResourcesField1C)); + gContestResources->field_20 = AllocZeroed(sizeof(struct ContestResourcesField20)); + gContestResources->field_24[0] = AllocZeroed(0x1000); + gContestResources->field_24[1] = AllocZeroed(0x1000); + gContestResources->field_24[2] = AllocZeroed(0x1000); + gContestResources->field_24[3] = AllocZeroed(0x1000); + gContestResources->field_34 = AllocZeroed(0x800); + gContestResources->field_38 = AllocZeroed(0x800); + gContestResources->field_3c = AllocZeroed(0x2000); + gUnknown_0202305C = gContestResources->field_3c; + gUnknown_02023060 = gContestResources->field_24[1]; +} + +void sub_80D7A5C(void) +{ + FREE_AND_SET_NULL(gContestResources->field_0); + FREE_AND_SET_NULL(gContestResources->field_4); + FREE_AND_SET_NULL(gContestResources->field_8); + FREE_AND_SET_NULL(gContestResources->field_C); + FREE_AND_SET_NULL(gContestResources->field_10); + FREE_AND_SET_NULL(gContestResources->field_14); + FREE_AND_SET_NULL(gContestResources->field_18); + FREE_AND_SET_NULL(gContestResources->field_1c); + FREE_AND_SET_NULL(gContestResources->field_20); + FREE_AND_SET_NULL(gContestResources->field_24[0]); + FREE_AND_SET_NULL(gContestResources->field_24[1]); + FREE_AND_SET_NULL(gContestResources->field_24[2]); + FREE_AND_SET_NULL(gContestResources->field_24[3]); + FREE_AND_SET_NULL(gContestResources->field_34); + FREE_AND_SET_NULL(gContestResources->field_38); + FREE_AND_SET_NULL(gContestResources->field_3c); + FREE_AND_SET_NULL(gContestResources); + gUnknown_0202305C = NULL; + gUnknown_02023060 = NULL; +} + +void sub_80D7B24(void) +{ + switch (gMain.state) + { + case 0: + sContestBgCopyFlags = 0; + sub_80D7988(); + AllocateMonSpritesGfx(); + FREE_AND_SET_NULL(gMonSpritesGfxPtr->firstDecompressed); + gMonSpritesGfxPtr->firstDecompressed = AllocZeroed(0x4000); + SetVBlankCallback(NULL); + sub_80D779C(); + sub_80D77E4(); + sub_80D7678(); + ScanlineEffect_Clear(); + ResetPaletteFade(); + gPaletteFade.bufferTransferDisabled = TRUE; + ResetSpriteData(); + ResetTasks(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 4; + //shared18000.unk18000 = 0; + gHeap[0x1a000] = 0; + ClearBattleMonForms(); + sub_80D787C(); + gMain.state++; + break; + case 1: + gMain.state++; + break; + case 2: + if (sub_80D7E44(&gContestResources->field_0->unk1925D)) + { + gContestResources->field_0->unk1925D = 0; + gMain.state++; + } + break; + case 3: + sub_80DE224(); + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + BeginFastPaletteFade(2); + gPaletteFade.bufferTransferDisabled = FALSE; + SetVBlankCallback(vblank_cb_battle); + gContestResources->field_0->mainTaskId = CreateTask(sub_80D7C7C, 10); + SetMainCallback2(sub_80D823C); + if (gIsLinkContest & 2) + { + sub_800E0E8(); + CreateWirelessStatusIndicatorSprite(8, 8); + } + break; + } +} + +void sub_80D7C7C(u8 taskId) +{ + if (!gPaletteFade.active) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80D7CB4; + } +} + +void sub_80D7CB4(u8 taskId) +{ + if (gIsLinkContest & 1) + { + if (gIsLinkContest & 2) + { + switch (gTasks[taskId].data[0]) + { + case 0: + sub_80DBF68(); + gTasks[taskId].data[0]++; + // fallthrough + case 1: + if (sub_800A520()) + { + sub_800ADF8(); + gTasks[taskId].data[0]++; + } + return; + case 2: + if (sub_800A520() != TRUE) + return; + gTasks[taskId].data[0]++; + break; + } + } + + if (!gPaletteFade.active) + { + gPaletteFade.bufferTransferDisabled = FALSE; + if (!(gIsLinkContest & 2)) + sub_80DBF68(); + CreateTask(sub_80D7DAC, 0); + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = TaskDummy1; + } + } + else + { + gTasks[taskId].func = sub_80D80C8; + } +} + +void sub_80D7DAC(u8 taskId) +{ + SetTaskFuncWithFollowupFunc(taskId, sub_80FC998, sub_80D7DC8); +} + +void sub_80D7DC8(u8 taskId) +{ + gTasks[taskId].data[0] = 1; + gTasks[taskId].func = sub_80D7DE8; +} + +void sub_80D7DE8(u8 taskId) +{ + gTasks[taskId].data[0]--; + if (gTasks[taskId].data[0] <= 0) + { + GetMultiplayerId(); // unused return value + DestroyTask(taskId); + gTasks[gContestResources->field_0->mainTaskId].func = sub_80D80C8; + gRngValue = gContestRngValue; + } +} + +u8 sub_80D7E44(u8 *a) +{ + u16 sp0[16]; + u16 sp20[16]; + + switch (*a) + { + case 0: + gPaletteFade.bufferTransferDisabled = TRUE; + RequestDma3Fill(0, (void *)VRAM, 0x8000, 1); + RequestDma3Fill(0, (void *)VRAM + 0x8000, 0x8000, 1); + RequestDma3Fill(0, (void *)VRAM + 0x10000, 0x8000, 1); + break; + case 1: + LZDecompressVram(gContestMiscGfx, (void *)VRAM); + break; + case 2: + LZDecompressVram(gContestAudienceGfx, (void *)(VRAM + 0x2000)); + DmaCopyLarge32(3, (void *)(VRAM + 0x2000), shared15800, 0x2000, 0x1000); + break; + case 3: + CopyToBgTilemapBuffer(3, gUnknown_08C16FA8, 0, 0); + CopyBgTilemapBufferToVram(3); + break; + case 4: + CopyToBgTilemapBuffer(2, gUnknown_08C17170, 0, 0); + CopyBgTilemapBufferToVram(2); + DmaCopy32Defvars(3, gContestResources->field_24[2], shared18000.unk18A04, 0x800); + break; + case 5: + LoadCompressedPalette(gUnknown_08C16E90, 0, 0x200); + CpuCopy32(gPlttBufferUnfaded + 128, sp0, 16 * sizeof(u16)); + CpuCopy32(gPlttBufferUnfaded + (5 + gContestPlayerMonIndex) * 16, sp20, 16 * sizeof(u16)); + CpuCopy32(sp20, gPlttBufferUnfaded + 128, 16 * sizeof(u16)); + CpuCopy32(sp0, gPlttBufferUnfaded + (5 + gContestPlayerMonIndex) * 16, 16 * sizeof(u16)); + DmaCopy32Defvars(3, gPlttBufferUnfaded, shared18000.unk18004, 0x200); + sub_80D782C(); + break; + case 6: + sub_80DD04C(); + sub_80DBF90(); + sub_80DB2BC(); + gContestResources->field_0->unk19216 = sub_80DB120(); + sub_80DC2BC(); + sub_80DC4F0(); + sub_80DC594(); + sub_80DC5E8(); + sub_80DC7EC(); + gBattlerPositions[0] = 0; + gBattlerPositions[1] = 1; + gBattlerPositions[2] = 3; + gBattlerPositions[3] = 2; + gBattleTypeFlags = 0; + gBattlerAttacker = 2; + gBattlerTarget = 3; + gBattlerSpriteIds[gBattlerAttacker] = sub_80DB0C4(); + sub_80DEA20(); + CopyBgTilemapBufferToVram(3); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(1); + ShowBg(3); + ShowBg(2); + ShowBg(0); + ShowBg(1); + break; + default: + *a = 0; + return 1; + } + + (*a)++; + return 0; +} + +void sub_80D80C8(u8 taskId) +{ + gPaletteFade.bufferTransferDisabled = FALSE; + if (!gPaletteFade.active) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].func = sub_80D8108; + } +} + + +void sub_80D8108(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + if (gTasks[taskId].data[1]++ <= 60) + break; + gTasks[taskId].data[1] = 0; + PlaySE12WithPanning(SE_C_MAKU_U, 0); + gTasks[taskId].data[0]++; + break; + case 1: + if ((gBattle_BG1_Y += 7) <= 160) + break; + gTasks[taskId].data[0]++; + break; + case 2: + sub_80DE350(); + gTasks[taskId].data[0]++; + break; + case 3: + { + u16 bg0Cnt = GetGpuReg(REG_OFFSET_BG0CNT); + u16 bg2Cnt = GetGpuReg(REG_OFFSET_BG2CNT); + ((struct BgCnt *)&bg0Cnt)->priority = 0; + ((struct BgCnt *)&bg2Cnt)->priority = 0; + SetGpuReg(REG_OFFSET_BG0CNT, bg0Cnt); + SetGpuReg(REG_OFFSET_BG2CNT, bg2Cnt); + sub_80DDB0C(); + gTasks[taskId].data[0]++; + break; + } + case 4: + default: + if (gContestResources->field_0->unk1920A_6) + break; + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].func = sub_80D833C; + break; + } +} + +void sub_80D823C(void) +{ + s32 i; + + AnimateSprites(); + RunTasks(); + BuildOamBuffer(); + UpdatePaletteFade(); + + for (i = 0; i < 4; i++) + { + if ((sContestBgCopyFlags >> i) & 1) + CopyBgTilemapBufferToVram(i); + } + sContestBgCopyFlags = 0; +} + +void vblank_cb_battle(void) +{ + SetGpuReg(REG_OFFSET_BG0HOFS, gBattle_BG0_X); + SetGpuReg(REG_OFFSET_BG0VOFS, gBattle_BG0_Y); + SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X); + SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); + SetGpuReg(REG_OFFSET_BG2HOFS, gBattle_BG2_X); + SetGpuReg(REG_OFFSET_BG2VOFS, gBattle_BG2_Y); + SetGpuReg(REG_OFFSET_BG3HOFS, gBattle_BG3_X); + SetGpuReg(REG_OFFSET_BG3VOFS, gBattle_BG3_Y); + SetGpuReg(REG_OFFSET_WIN0H, gBattle_WIN0H); + SetGpuReg(REG_OFFSET_WIN0V, gBattle_WIN0V); + SetGpuReg(REG_OFFSET_WIN1H, gBattle_WIN1H); + SetGpuReg(REG_OFFSET_WIN1V, gBattle_WIN1V); + TransferPlttBuffer(); + LoadOam(); + ProcessSpriteCopyRequests(); + ScanlineEffect_InitHBlankDmaTransfer(); +} + +void sub_80D833C(u8 taskId) +{ + if (gTasks[taskId].data[0] == 0) + { + gBattle_BG0_Y = 0; + gBattle_BG2_Y = 0; + sub_80DCD48(); + DmaCopy32Defvars(3, gPlttBufferUnfaded, shared18000.unk18204, 0x400); + ConvertIntToDecimalStringN(gStringVar1, gContestResources->field_0->turnNumber + 1, STR_CONV_MODE_LEFT_ALIGN, 1); + if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex)) + StringCopy(gDisplayedStringBattle, gText_0827D507); + else + StringCopy(gDisplayedStringBattle, gText_0827D531); + sub_80DB89C(); + StringExpandPlaceholders(gStringVar4, gDisplayedStringBattle); + Contest_StartTextPrinter(gStringVar4, 1); + gTasks[taskId].data[0]++; + } + else + { + if (!Contest_RunTextPrinters()) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80D8424; + } + } +} + +void sub_80D8424(u8 taskId) +{ + if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys == B_BUTTON)) + { + PlaySE(SE_SELECT); + if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex)) + { + sub_80DC490(TRUE); + gTasks[taskId].func = sub_80D8490; + } + else + { + gTasks[taskId].func = sub_80D8894; + } + } +} + +void sub_80D8490(u8 taskId) +{ + u8 i; + u8 sp8[32]; + + gBattle_BG0_Y = 0xA0; + gBattle_BG2_Y = 0xA0; + + for (i = 0; i < 4; i++) + { + u16 move = gContestMons[gContestPlayerMonIndex].moves[i]; + u8 *r5 = sp8; + + if (gContestResources->field_4[gContestPlayerMonIndex].prevMove != MOVE_NONE + && sub_80DE1E8(gContestPlayerMonIndex) + && AreMovesContestCombo(gContestResources->field_4[gContestPlayerMonIndex].prevMove, move) != 0 + && gContestResources->field_4[gContestPlayerMonIndex].hasJudgesAttention) + { + r5 = StringCopy(sp8, gText_ColorLightShadowDarkGrey); + } + else if (move != 0 + && gContestResources->field_4[gContestPlayerMonIndex].prevMove == move + && gContestMoves[move].effect != CONTEST_EFFECT_REPETITION_NOT_BORING) + { + // Gray the text because it is a repeated move + r5 = StringCopy(sp8, gText_ColorBlue); + } + r5 = StringCopy(r5, gMoveNames[move]); + + FillWindowPixelBuffer(i + 5, 0); + Contest_PrintTextToBg0WindowAt(i + 5, sp8, 5, 1, 7); + } + + sub_80D880C(gContestResources->field_0->playerMoveChoice); + prints_contest_move_description(gContestMons[gContestPlayerMonIndex].moves[gContestResources->field_0->playerMoveChoice]); + gTasks[taskId].func = sub_80D8610; +} + +void sub_80D8610(u8 taskId) +{ + u8 numMoves = 0; + s32 i; + + for (i = 0; i < 4; i++) + { + if (gContestMons[gContestPlayerMonIndex].moves[i] != MOVE_NONE) + numMoves++; + } + + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + gTasks[taskId].func = sub_80D8894; + } + else + { + switch (gMain.newAndRepeatedKeys) + { + case B_BUTTON: + PlaySE(SE_SELECT); + sub_80DC490(FALSE); + ConvertIntToDecimalStringN(gStringVar1, gContestResources->field_0->turnNumber + 1, STR_CONV_MODE_LEFT_ALIGN, 1); + if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex)) + StringCopy(gDisplayedStringBattle, gText_0827D507); + else + StringCopy(gDisplayedStringBattle, gText_0827D531); + sub_80DB89C(); + StringExpandPlaceholders(gStringVar4, gDisplayedStringBattle); + Contest_StartTextPrinter(gStringVar4, 0); + gBattle_BG0_Y = 0; + gBattle_BG2_Y = 0; + gTasks[taskId].func = sub_80D8424; + break; + case DPAD_LEFT: + case DPAD_RIGHT: + break; + case DPAD_UP: + sub_80D883C(gContestResources->field_0->playerMoveChoice); + if (gContestResources->field_0->playerMoveChoice == 0) + gContestResources->field_0->playerMoveChoice = numMoves - 1; + else + gContestResources->field_0->playerMoveChoice--; + sub_80D880C(gContestResources->field_0->playerMoveChoice); + prints_contest_move_description(gContestMons[gContestPlayerMonIndex].moves[gContestResources->field_0->playerMoveChoice]); + if (numMoves > 1) + PlaySE(SE_SELECT); + break; + case DPAD_DOWN: + sub_80D883C(gContestResources->field_0->playerMoveChoice); + if (gContestResources->field_0->playerMoveChoice == numMoves - 1) + gContestResources->field_0->playerMoveChoice = 0; + else + gContestResources->field_0->playerMoveChoice++; + sub_80D880C(gContestResources->field_0->playerMoveChoice); + prints_contest_move_description(gContestMons[gContestPlayerMonIndex].moves[gContestResources->field_0->playerMoveChoice]); + if (numMoves > 1) + PlaySE(SE_SELECT); + break; + } + } +} + +void sub_80D880C(s8 a0) +{ + ContestBG_FillBoxWithIncrementingTile(2, 55, 0, 31 + a0 * 2, 2, 2, 17, 1); +} + +void sub_80D883C(s8 a0) +{ + ContestBG_FillBoxWithIncrementingTile(2, 11, 0, 31 + a0 * 2, 2, 1, 17, 1); + ContestBG_FillBoxWithIncrementingTile(2, 11, 0, 32 + a0 * 2, 2, 1, 17, 1); +} + +void sub_80D8894(u8 taskId) +{ + if (gIsLinkContest & 1) + { + u16 var = sub_80DB8B8(gContestPlayerMonIndex); + u8 taskId2; + + gContestResources->field_4[gContestPlayerMonIndex].currMove = var; + taskId2 = CreateTask(sub_80FC9F8, 0); + SetTaskFuncWithFollowupFunc(taskId2, sub_80FC9F8, sub_80D892C); + gTasks[taskId].func = TaskDummy1; + sub_80DBF68(); + sub_80DC490(FALSE); + } + else + { + sub_80DB918(); + gTasks[taskId].func = sub_80D895C; + } +} + +void sub_80D892C(u8 taskId) +{ + DestroyTask(taskId); + gTasks[gContestResources->field_0->mainTaskId].func = sub_80D895C; +} + +void sub_80D895C(u8 taskId) +{ + s32 i; + + sub_80DB89C(); + gBattle_BG0_Y = 0; + gBattle_BG2_Y = 0; + sub_80DC490(FALSE); + + for (i = 0; i < 4; i++) + { + FillWindowPixelBuffer(5 + i, 0); + PutWindowTilemap(5 + i); + CopyWindowToVram(5 + i, 2); + } + Contest_SetBgCopyFlags(0); + + DmaCopy32Defvars(3, gPlttBufferFaded, shared18000.unk18604, 0x400); + LoadPalette(shared18000.unk18204, 0, 0x400); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].func = sub_80D8A04; +} + +void sub_80D8A04(u8 taskId) +{ + if (++gTasks[taskId].data[0] > 2) + { + gTasks[taskId].data[0] = 0; + if (++gTasks[taskId].data[1] == 2) + { + sub_80DDBE8(); + sub_80DE69C(1); + gTasks[taskId].func = sub_80D8A50; + } + } +} + +void sub_80D8A50(u8 taskId) +{ + if (!gContestResources->field_0->unk1920A_6 && !gContestResources->field_0->unk1920B_1) + gTasks[taskId].func = sub_80D8A88; +} + +void sub_80D8A88(u8 taskId) +{ + if (++gTasks[taskId].data[0] > 19) + { + gContestResources->field_0->unk19214 = 0; + gContestResources->field_0->unk1921C = gRngValue; + if ((gIsLinkContest & 1) && sub_80DA8A4()) + { + s32 i; + + for (i = 0; i + gUnknown_02039F30 < 4; i++) + { + gContestResources->field_4[gUnknown_02039F30 + i].currMove = sub_80DB8B8(gUnknown_02039F30 + i); + } + } + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80D8B38; + } +} + +void sub_80D8B38(u8 taskId) +{ + u8 spriteId; + s32 i; + u8 r6 = gContestResources->field_0->unk19215; + s8 r3; + + switch (gTasks[taskId].data[0]) + { + case 0: + sub_80DCD48(); + for (i = 0; gContestResources->field_0->unk19214 != gContestResources->field_8->turnOrder[i]; i++) + ; + gContestResources->field_0->unk19215 = i; + r6 = gContestResources->field_0->unk19215; + if (gIsLinkContest & 1) + { + u8 taskId2; + + gContestResources->field_0->unk1920B_2 = 1; + if (sub_80DA8A4()) + sub_80DD080(gContestResources->field_0->unk19215); + taskId2 = CreateTask(sub_80FCC88, 0); + SetTaskFuncWithFollowupFunc(taskId2, sub_80FCC88, sub_80DA110); + sub_80DBF68(); + gTasks[taskId].data[0] = 1; + } + else + { + sub_80DD080(gContestResources->field_0->unk19215); + gTasks[taskId].data[0] = 2; + } + return; + case 1: + if (!gContestResources->field_0->unk1920B_2) + gTasks[taskId].data[0] = 2; + return; + case 2: + sub_80DF080(r6); + sub_80DF750(); + if (gContestResources->field_4[r6].numTurnsSkipped != 0 + || gContestResources->field_4[r6].noMoreTurns) + { + gTasks[taskId].data[0] = 31; + } + else + { + sub_80DB89C(); + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 3; + } + return; + case 3: + for (i = 0; i < 4; i++) + gBattleMonForms[i] = 0; + memset(gContestResources->field_18, 0, sizeof(*gContestResources->field_18)); + sub_80DE9DC(gContestResources->field_0->unk19215); + spriteId = sub_80DB174( + gContestMons[gContestResources->field_0->unk19215].species, + gContestMons[gContestResources->field_0->unk19215].otId, + gContestMons[gContestResources->field_0->unk19215].personality, + gContestResources->field_0->unk19215); + gSprites[spriteId].pos2.x = 120; + gSprites[spriteId].callback = sub_80DA134; + gTasks[taskId].data[2] = spriteId; + gBattlerSpriteIds[gBattlerAttacker] = spriteId; + sub_80DCBE8(sub_80DC9EC(gContestResources->field_0->unk19215), FALSE); + gTasks[taskId].data[0] = 4; + return; + case 4: + spriteId = gTasks[taskId].data[2]; + if (gSprites[spriteId].callback == SpriteCallbackDummy) + { + if (!gContestResources->field_14[r6].unk2_1) + gTasks[taskId].data[0] = 5; + } + return; + case 5: + if (gContestResources->field_4[r6].nervous) + { + gTasks[taskId].data[0] = 33; + } + else + { + sub_80DB89C(); + StringCopy(gStringVar1, gContestMons[r6].nickname); + if (gContestResources->field_4[r6].currMove < MOVES_COUNT) + StringCopy(gStringVar2, gMoveNames[gContestResources->field_4[r6].currMove]); + else + StringCopy(gStringVar2, gUnknown_08587F1C[gContestResources->field_4[r6].moveCategory]); + StringExpandPlaceholders(gStringVar4, gText_0827D55A); + Contest_StartTextPrinter(gStringVar4, 1); + gTasks[taskId].data[0] = 6; + } + return; + case 6: + if (!Contest_RunTextPrinters()) + { + gContestResources->field_0->unk1925E = 0; + gTasks[taskId].data[0] = 7; + } + return; + case 7: + { + u16 move = sub_80DE834(gContestResources->field_4[gContestResources->field_0->unk19215].currMove); + + sub_80DE864(gContestResources->field_0->unk19215); + sub_80DE9DC(gContestResources->field_0->unk19215); + sub_80DEAA8(move); + DoMoveAnim(move); + gTasks[taskId].data[0] = 8; + } + return; + case 8: + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + sub_80DE9B0(r6); + if (gContestResources->field_0->unk1925E != 0) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 9; + } + else + { + if (!gContestResources->field_4[r6].hasJudgesAttention) + sub_80DC674(r6); + sub_80DE12C(); + gTasks[taskId].data[0] = 23; + } + } + return; + case 9: + if (gTasks[taskId].data[10]++ > 30) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 7; + } + return; + case 23: + gTasks[taskId].data[1] = 0; + if (gContestResources->field_4[r6].effectStringId != CONTEST_STRING_NONE) + { + sub_80DD45C(r6, gContestResources->field_4[r6].effectStringId); + gContestResources->field_4[r6].effectStringId = CONTEST_STRING_NONE; + gTasks[taskId].data[0] = 24; + } + else + { + if (gContestResources->field_4[r6].effectStringId2 != CONTEST_STRING_NONE) + { + for (i = 0; i < 4; i++) + { + if (i != r6 && gContestResources->field_4[i].effectStringId != CONTEST_STRING_NONE) + break; + } + if (i == 4) + { + sub_80DD45C(r6, gContestResources->field_4[r6].effectStringId2); + gContestResources->field_4[r6].effectStringId2 = CONTEST_STRING_NONE; + gTasks[taskId].data[0] = 24; + } + else + { + gTasks[taskId].data[0] = 48; + } + } + else + { + gTasks[taskId].data[0] = 48; + } + } + return; + case 24: + if (!Contest_RunTextPrinters()) + gTasks[taskId].data[0] = 23; + return; + case 48: + if (gContestResources->field_4[r6].turnOrderModAction == 1) + { + sub_80DD720(5); + } + else if (gContestResources->field_4[r6].turnOrderModAction == 2) + { + sub_80DD720(6); + } + else if (gContestResources->field_4[r6].turnOrderModAction == 3) + { + sub_80DD720(7); + } + else + { + gTasks[taskId].data[0] = 47; + return; + } + gTasks[taskId].data[0] = 49; + return; + case 49: + if (!gContestResources->field_0->unk1920A_4) + gTasks[taskId].data[0] = 47; + return; + case 47: + sub_80DE008(TRUE); + gTasks[taskId].data[0] = 12; + return; + case 12: + sub_80DC028(0, gContestResources->field_4[r6].appeal2, r6); + gTasks[taskId].data[0] = 13; + return; + case 13: + if (!gContestResources->field_14[gContestResources->field_0->unk19215].unk2_2) + gTasks[taskId].data[0] = 35; + return; + case 35: + if (gContestResources->field_4[r6].conditionMod == 1) + sub_80DD720(8); + gTasks[taskId].data[0] = 36; + return; + case 36: + if (!gContestResources->field_0->unk1920A_4) + gTasks[taskId].data[0] = 37; + return; + case 37: + if (sub_80DB5B8(r6, 1)) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 38; + } + else + { + gTasks[taskId].data[0] = 50; + } + return; + case 38: + if (++gTasks[taskId].data[10] > 20) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 50; + } + return; + case 50: + if (sub_80DB798(r6)) + PlaySE(SE_C_PASI); + gTasks[taskId].data[0] = 25; + return; + case 25: + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[0] = 26; + return; + case 26: + { + s32 r2 = 0; + + r3 = 0; + for (i = gTasks[taskId].data[1]; i < 4; i++) + { + r3 = 0; + for (r2 = 0; r2 < 4; r2++) + { + if (r2 != r6 && gUnknown_02039F26[r2] == i + && gContestResources->field_4[r2].effectStringId != CONTEST_STRING_NONE) + { + r3 = 1; + break; + } + } + if (r3 != 0) + break; + } + if (r3) + { + gTasks[taskId].data[1] = gUnknown_02039F26[r2]; + sub_80DD45C(r2, gContestResources->field_4[r2].effectStringId); + gContestResources->field_4[r2].effectStringId = CONTEST_STRING_NONE; + gTasks[taskId].data[0] = 27; + } + else + { + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 51; + sub_80DB884(); + } + } + return; + case 27: + if (!Contest_RunTextPrinters()) + gTasks[taskId].data[0] = 28; + return; + case 28: + for (i = 0; gTasks[taskId].data[1] != gUnknown_02039F26[i]; i++) + ; + sub_80DC028(gContestResources->field_4[i].appeal2 + gContestResources->field_4[i].jam, -gContestResources->field_4[i].jam, i); + gTasks[taskId].data[0] = 29; + return; + case 29: + for (i = 0; gTasks[taskId].data[1] != gUnknown_02039F26[i]; i++) + ; + if (!gContestResources->field_14[i].unk2_2) + gTasks[taskId].data[0] = 39; + return; + case 39: + for (i = 0; gTasks[taskId].data[1] != gUnknown_02039F26[i]; i++) + ; + if (sub_80DB5B8(i, 1)) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 40; + } + else + { + gTasks[taskId].data[0] = 30; + } + return; + case 40: + if (++gTasks[taskId].data[10] > 20) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 30; + } + return; + case 30: + for (i = 0; i < 4; i++) + { + if (gUnknown_02039F26[i] == gTasks[taskId].data[1]) + break; + } + if (sub_80DB798(i)) + PlaySE(SE_C_PASI); + else + PlaySE(SE_C_SYU); + if (gContestResources->field_4[i].judgesAttentionWasRemoved) + { + sub_80DC674(i); + gContestResources->field_4[i].judgesAttentionWasRemoved = 0; + } + gTasks[taskId].data[1]++; + gTasks[taskId].data[0] = 26; + return; + case 51: + if (gTasks[taskId].data[10]++ > 9) + { + gTasks[taskId].data[10] = 0; + if (gContestResources->field_4[r6].numTurnsSkipped != 0 + || gContestResources->field_4[r6].turnSkipped) + { + sub_80DB89C(); + StringCopy(gStringVar1, gContestMons[r6].nickname); + StringExpandPlaceholders(gStringVar4, gText_0827E793); + Contest_StartTextPrinter(gStringVar4, 1); + } + gTasks[taskId].data[0] = 52; + } + return; + case 52: + if (!Contest_RunTextPrinters()) + { + if (!gContestResources->field_4[r6].unk15_6) + gTasks[taskId].data[0] = 17; + else + gTasks[taskId].data[0] = 14; + } + return; + case 14: + r3 = gContestResources->field_4[r6].unk16; + if (gContestResources->field_4[r6].unk16 != 0) + { + sub_80DB89C(); + if (r3 == 1) + Contest_StartTextPrinter(gText_0827E32E, 1); + else if (r3 == 2) + Contest_StartTextPrinter(gText_0827E35B, 1); + else + Contest_StartTextPrinter(gText_0827E38D, 1); + sub_80DD720(3); + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 45; + } + else + { + sub_80DB89C(); + StringCopy(gStringVar1, gContestMons[r6].nickname); + StringExpandPlaceholders(gStringVar4, gText_0827E2FE); + Contest_StartTextPrinter(gStringVar4, 1); + sub_80DD720(2); + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 45; + } + return; + case 45: + if (!gContestResources->field_0->unk1920A_4) + { + sub_80DC9B4(gContestResources->field_0->unk19215); + gTasks[taskId].data[0] = 15; + } + return; + case 15: + if (!Contest_RunTextPrinters()) + { + if (++gTasks[taskId].data[10] > 50) + { + if (!gContestResources->field_4[r6].hasJudgesAttention) + { + sub_80DC028( + gContestResources->field_4[r6].appeal2, + gContestResources->field_4[r6].unk17, + r6); + gContestResources->field_4[r6].appeal2 += gContestResources->field_4[r6].unk17; + } + gTasks[taskId].data[0] = 16; + } + } + return; + case 16: + if (!gContestResources->field_14[r6].unk2_2) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 17; + } + return; + case 17: + if (gContestResources->field_4[r6].disappointedRepeat) + { + sub_80DB89C(); + StringCopy(gStringVar1, gContestMons[r6].nickname); + StringExpandPlaceholders(gStringVar4, gText_0827E6E3); + Contest_StartTextPrinter(gStringVar4, 1); + gTasks[taskId].data[10] = 0; + sub_80DD720(0); + gTasks[taskId].data[0] = 46; + } + else + { + gTasks[taskId].data[0] = 41; + } + return; + case 46: + if (!gContestResources->field_0->unk1920A_4) + gTasks[taskId].data[0] = 19; + return; + case 19: + if (!Contest_RunTextPrinters()) + { + sub_80DC028(gContestResources->field_4[r6].appeal2, -gContestResources->field_4[r6].unk18, r6); + gContestResources->field_4[r6].appeal2 -= gContestResources->field_4[r6].unk18; + gTasks[taskId].data[0] = 18; + } + return; + case 18: + sub_80DCD48(); + if (!gContestResources->field_14[r6].unk2_2) + { + gTasks[taskId].data[10] = 0; + sub_80DB89C(); + gTasks[taskId].data[0] = 41; + } + return; + case 41: + if (gContestResources->field_10->excitementFrozen && r6 != gContestResources->field_10->excitementFreezer) + { + gTasks[taskId].data[0] = 57; + } + else + { + r3 = gContestResources->field_10->bits_0; + if (gContestResources->field_4[r6].overrideCategoryExcitementMod) + { + r3 = 1; + StringCopy(gStringVar3, gMoveNames[gContestResources->field_4[r6].currMove]); + } + else + { + StringCopy(gStringVar3, gUnknown_08587F08[gContestMoves[gContestResources->field_4[r6].currMove].contestCategory]); + } + if (r3 > 0) + { + if (gContestResources->field_4[r6].disappointedRepeat) + r3 = 0; + } + sub_80DB89C(); + StringCopy(gStringVar1, gContestMons[r6].nickname); + gContestResources->field_0->applauseLevel += r3; + if (gContestResources->field_0->applauseLevel < 0) + gContestResources->field_0->applauseLevel = 0; + if (r3 == 0) + { + gTasks[taskId].data[0] = 55; + } + else + { + if (r3 < 0) + StringExpandPlaceholders(gStringVar4, gText_0827E73C); + else if (r3 > 0 && gContestResources->field_0->applauseLevel <= 4) + StringExpandPlaceholders(gStringVar4, gText_0827E717); + else + StringExpandPlaceholders(gStringVar4, gText_0827E76A); + Contest_StartTextPrinter(gStringVar4, 1); + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11] = 0; + if (r3 < 0) + gTasks[taskId].data[0] = 53; + else + gTasks[taskId].data[0] = 54; + } + } + return; + case 53: + switch (gTasks[taskId].data[10]) + { + case 0: + sub_80DDED0(-1, 1); + PlayFanfare(MUS_ME_ZANNEN); + gTasks[taskId].data[10]++; + break; + case 1: + if (!gContestResources->field_0->unk1920B_0 && !Contest_RunTextPrinters()) + { + sub_80DDCDC(-1); + gTasks[taskId].data[10]++; + } + break; + case 2: + if (!gContestResources->field_0->unk1920A_5) + { + if (gTasks[taskId].data[11]++ > 29) + { + gTasks[taskId].data[11] = 0; + sub_80DDED0(-1, -1); + gTasks[taskId].data[10]++; + } + } + break; + case 3: + if (!gPaletteFade.active) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11] = 0; + gTasks[taskId].data[0] = 43; + } + break; + } + return; + case 54: + switch (gTasks[taskId].data[10]) + { + case 0: + if (!Contest_RunTextPrinters()) + { + sub_80DDED0(1, 1); + gTasks[taskId].data[10]++; + } + break; + case 1: + if (!gContestResources->field_0->unk1920B_0) + { + sub_80DDE0C(); + PlaySE(SE_W227B); + sub_80DDCDC(1); + gTasks[taskId].data[10]++; + } + break; + case 2: + if (!gContestResources->field_0->unk1920A_5) + { + if (gTasks[taskId].data[11]++ > 29) + { + gTasks[taskId].data[11] = 0; + sub_80DC028(gContestResources->field_4[r6].appeal2, gContestResources->field_10->unk2, r6); + gContestResources->field_4[r6].appeal2 += gContestResources->field_10->unk2; + gTasks[taskId].data[10]++; + } + } + break; + case 3: + if (!gContestResources->field_14[r6].unk2_2) + { + if (!gContestResources->field_0->unk1920A_7) + { + sub_80DDED0(1, -1); + gTasks[taskId].data[10]++; + } + } + break; + case 4: + if (!gPaletteFade.active) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11] = 0; + gTasks[taskId].data[0] = 43; + } + break; + } + return; + case 43: + if (!gContestResources->field_14[r6].unk2_2) + { + sub_80DB89C(); + gTasks[taskId].data[0] = 55; + } + return; + case 57: + sub_80DB89C(); + StringCopy(gStringVar3, gContestMons[gContestResources->field_10->excitementFreezer].nickname); + StringCopy(gStringVar1, gContestMons[r6].nickname); + StringCopy(gStringVar2, gMoveNames[gContestResources->field_4[r6].currMove]); + StringExpandPlaceholders(gStringVar4, gText_0827E7EA); + Contest_StartTextPrinter(gStringVar4, 1); + gTasks[taskId].data[0] = 58; + return; + case 58: + if (!Contest_RunTextPrinters()) + { + sub_80DB89C(); + StringExpandPlaceholders(gStringVar4, gText_0827E817); + Contest_StartTextPrinter(gStringVar4, 1); + gTasks[taskId].data[0] = 59; + } + return; + case 59: + if (!Contest_RunTextPrinters()) + { + sub_80DB89C(); + gTasks[taskId].data[0] = 55; + } + return; + case 33: + if (gContestResources->field_4[r6].hasJudgesAttention) + gContestResources->field_4[r6].hasJudgesAttention = 0; + sub_80DC9B4(r6); + StringCopy(gStringVar1, gContestMons[r6].nickname); + StringCopy(gStringVar2, gMoveNames[gContestResources->field_4[r6].currMove]); + StringExpandPlaceholders(gStringVar4, gText_0827E58A); + Contest_StartTextPrinter(gStringVar4, 1); + gTasks[taskId].data[0] = 34; + return; + case 34: + if (!Contest_RunTextPrinters()) + gTasks[taskId].data[0] = 55; + return; + case 55: + sub_80DDBE8(); + gTasks[taskId].data[0] = 56; + return; + case 56: + if (!gContestResources->field_0->unk1920A_6) + { + if (gContestResources->field_0->applauseLevel > 4) + { + gContestResources->field_0->applauseLevel = 0; + sub_80DD940(); + } + gTasks[taskId].data[0] = 10; + } + return; + case 10: + spriteId = gTasks[taskId].data[2]; + gSprites[spriteId].callback = sub_80DA164; + gTasks[taskId].data[0] = 11; + return; + case 11: + spriteId = gTasks[taskId].data[2]; + if (gSprites[spriteId].invisible) + { + FreeSpriteOamMatrix(&gSprites[spriteId]); + DestroySprite(&gSprites[spriteId]); + gTasks[taskId].data[0] = 20; + } + return; + case 20: + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 21; + return; + case 31: + sub_80DB89C(); + StringCopy(gStringVar1, gContestMons[r6].nickname); + StringExpandPlaceholders(gStringVar4, gText_0827D56F); + Contest_StartTextPrinter(gStringVar4, 1); + gTasks[taskId].data[0] = 32; + return; + case 32: + if (!Contest_RunTextPrinters()) + gTasks[taskId].data[0] = 21; + return; + case 21: + if (++gTasks[taskId].data[10] > 29) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 22; + } + return; + case 22: + if (++gContestResources->field_0->unk19214 == 4) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = 0; + gTasks[taskId].func = sub_80DA198; + } + else + { + gTasks[taskId].data[0] = 0; + } + return; + } +} + +void sub_80DA110(u8 taskId) +{ + sContest.unk1920B_2 = 0; + DestroyTask(taskId); +} + +void sub_80DA134(struct Sprite *sprite) +{ + if (sprite->pos2.x != 0) + { + sprite->pos2.x -= 2; + } + else + { + if (++sprite->data[0] == 31) + { + sprite->data[0] = 0; + sprite->callback = SpriteCallbackDummy; + } + } +} + +void sub_80DA164(struct Sprite *sprite) +{ + sprite->pos2.x -= 6; + if (sprite->pos1.x + sprite->pos2.x < -32) + { + sprite->callback = SpriteCallbackDummy; + sprite->invisible = TRUE; + } +} + +void sub_80DA198(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + if (gIsLinkContest & 1) + { + u8 taskId2; + + sContest.unk1920B_2 = 1; + if (sub_80DA8A4()) + { + sub_80DB944(); + sub_80DBA18(); + } + taskId2 = CreateTask(sub_80FCC88, 0); + SetTaskFuncWithFollowupFunc(taskId2, sub_80FCC88, sub_80DA110); + sub_80DBF68(); + gTasks[taskId].data[0] = 1; + } + else + { + sub_80DB944(); + sub_80DBA18(); + gTasks[taskId].data[0] = 2; + } + break; + case 1: + if (!sContest.unk1920B_2) + gTasks[taskId].data[0] = 2; + break; + case 2: + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80DA25C; + break; + } +} + +void sub_80DA25C(u8 taskId) +{ + sub_80DE008(FALSE); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].func = sub_80DA28C; +} + +void sub_80DA28C(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + if (++gTasks[taskId].data[1] > 20) + { + sub_80DE69C(2); + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[0]++; + } + break; + case 1: + if (!sContest.unk1920B_1) + { + if (++gTasks[taskId].data[1] > 20) + { + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[0]++; + } + } + break; + case 2: + sub_80DC3AC(); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].func = sub_80DA31C; + break; + } +} + +void sub_80DA31C(u8 taskId) +{ + if (sub_80DC3C4()) + gTasks[taskId].func = sub_80DA348; +} + +void sub_80DA348(u8 taskId) +{ + DmaCopy32Defvars(3, shared18000.unk18204, gPlttBufferUnfaded, 0x400); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 2; + gTasks[taskId].func = sub_80DA38C; +} + +void sub_80DA38C(u8 taskId) +{ + if (++gTasks[taskId].data[0] > 2) + { + gTasks[taskId].data[0] = 0; + if (--gTasks[taskId].data[1] == 0) + gTasks[taskId].func = sub_80DA3CC; + } +} + +void sub_80DA3CC(u8 taskId) +{ + if (gTasks[taskId].data[0] == 0) + { + u8 r4 = sContestantStatus[gContestPlayerMonIndex].attentionLevel; + + sub_80DB89C(); + StringCopy(gStringVar1, gContestMons[gContestPlayerMonIndex].nickname); + StringExpandPlaceholders(gStringVar4, gUnknown_08587D90[r4]); + Contest_StartTextPrinter(gStringVar4, 1); + gTasks[taskId].data[0]++; + } + else + { + if (!Contest_RunTextPrinters()) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80DA464; + sub_80DCD48(); + } + } +} + +void sub_80DA464(u8 taskId) +{ + if (gTasks[taskId].data[0]++ > 29) + { + gTasks[taskId].data[0] = 0; + sub_80DC3AC(); + gTasks[taskId].func = sub_80DA49C; + } +} + +void sub_80DA49C(u8 taskId) +{ + if (sub_80DC3C4()) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80DA4CC; + } +} + +void sub_80DA4CC(u8 taskId) +{ + sub_80DE224(); + gTasks[taskId].func = sub_80DE424; +} + +void sub_80DA4F4(u8 taskId) +{ + sub_80DE350(); + gTasks[taskId].func = sub_80DA51C; +} + +void sub_80DA51C(u8 taskId) +{ + vu16 sp0 = GetGpuReg(REG_OFFSET_BG0CNT); + vu16 sp2 = GetGpuReg(REG_OFFSET_BG2CNT); + ((vBgCnt *)&sp0)->priority = 0; + ((vBgCnt *)&sp2)->priority = 0; + SetGpuReg(REG_OFFSET_BG0CNT, sp0); + SetGpuReg(REG_OFFSET_BG2CNT, sp2); + sContest.turnNumber++; + if (sContest.turnNumber == 5) + { + gTasks[taskId].func = sub_80DA5E8; + } + else + { + sub_80DDB0C(); + gTasks[taskId].func = sub_80DA5B4; + } +} + +void sub_80DA5B4(u8 taskId) +{ + if (!sContest.unk1920A_6) + gTasks[taskId].func = sub_80D833C; +} + +void sub_80DA5E8(u8 taskId) +{ + s32 i; + + gBattle_BG0_Y = 0; + gBattle_BG2_Y = 0; + for (i = 0; i < 4; i++) + gUnknown_02039F10[i] = sContestantStatus[i].unk4; + sub_80DBD18(); + sub_80DB89C(); + if (!(gIsLinkContest & 1)) + BravoTrainerPokemonProfile_BeforeInterview1(sContestantStatus[gContestPlayerMonIndex].prevMove); + else + { + sub_80DF250(); + sub_80DF4F8(); + sub_80DF750(); + } + gContestRngValue = gRngValue; + StringExpandPlaceholders(gStringVar4, gText_0827D597); + Contest_StartTextPrinter(gStringVar4, 1); + gTasks[taskId].data[2] = 0; + gTasks[taskId].func = sub_80DA6B4; +} + +void sub_80DA6B4(u8 taskId) +{ + if (!Contest_RunTextPrinters()) + { + sub_80DE224(); + gBattle_BG1_X = 0; + gBattle_BG1_Y = 160; + PlaySE12WithPanning(SE_C_MAKU_D, 0); + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80DA700; + } +} + +void sub_80DA700(u8 taskId) +{ + gBattle_BG1_Y -= 7; + if (gBattle_BG1_Y < 0) + gBattle_BG1_Y = 0; + if (*(u16 *)&gBattle_BG1_Y == 0) // Why cast? + { + gTasks[taskId].func = sub_80DA740; + gTasks[taskId].data[0] = 0; + } +} + +void sub_80DA740(u8 taskId) +{ + if (gTasks[taskId].data[0]++ >= 50) + { + gTasks[taskId].data[0] = 0; + if (gIsLinkContest & 1) + { + gTasks[taskId].func = sub_80DA7A0; + } + else + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[taskId].func = sub_80DA830; + } + } +} + +void sub_80DA7A0(u8 taskId) +{ + u8 taskId2 = CreateTask(sub_80FCACC, 0); + + SetTaskFuncWithFollowupFunc(taskId2, sub_80FCACC, sub_80DA7EC); + gTasks[taskId].func = TaskDummy1; + sub_80DBF68(); + sub_80DC490(FALSE); +} + +void sub_80DA7EC(u8 taskId) +{ + DestroyTask(taskId); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[sContest.mainTaskId].func = sub_80DA830; +} + +void sub_80DA830(u8 taskId) +{ + if (!gPaletteFade.active) + { + DestroyTask(taskId); + gFieldCallback = sub_80DA874; + FreeAllWindowBuffers(); + sub_80D7A5C(); + FreeMonSpritesGfx(); + SetMainCallback2(CB2_ReturnToField); + } +} + +void sub_80DA874(void) +{ + ScriptContext2_Disable(); + EnableBothScriptContexts(); +} + +void sub_80DA884(void) +{ + if (!(gIsLinkContest & 1)) + gContestPlayerMonIndex = 3; +} + +bool8 sub_80DA8A4(void) +{ + if (gContestPlayerMonIndex == gUnknown_02039F2B) + return TRUE; + return FALSE; +} + + +void sub_80DA8C8(u8 partyIndex) +{ + u8 name[20]; + u16 heldItem; + s16 cool; + s16 beauty; + s16 cute; + s16 smart; + s16 tough; + + StringCopy(name, gSaveBlock2Ptr->playerName); + if (gIsLinkContest & 1) + { + sub_80DF9D4(name); + } + memcpy(gContestMons[gContestPlayerMonIndex].trainerName, name, 8); + if (gSaveBlock2Ptr->playerGender == MALE) + gContestMons[gContestPlayerMonIndex].trainerGfxId = EVENT_OBJ_GFX_LINK_BRENDAN; + else + gContestMons[gContestPlayerMonIndex].trainerGfxId = EVENT_OBJ_GFX_LINK_MAY; + gContestMons[gContestPlayerMonIndex].flags = 0; + gContestMons[gContestPlayerMonIndex].unk2C[0] = 0; + gContestMons[gContestPlayerMonIndex].species = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPECIES); + GetMonData(&gPlayerParty[partyIndex], MON_DATA_NICKNAME, name); + StringGetEnd10(name); + if (gIsLinkContest & 1) + { + sub_80DF9E0(name, GetMonData(&gPlayerParty[partyIndex], MON_DATA_LANGUAGE)); + } + memcpy(gContestMons[gContestPlayerMonIndex].nickname, name, POKEMON_NAME_LENGTH + 1); + StringCopy(gContestMons[gContestPlayerMonIndex].nickname, name); + gContestMons[gContestPlayerMonIndex].cool = GetMonData(&gPlayerParty[partyIndex], MON_DATA_COOL); + gContestMons[gContestPlayerMonIndex].beauty = GetMonData(&gPlayerParty[partyIndex], MON_DATA_BEAUTY); + gContestMons[gContestPlayerMonIndex].cute = GetMonData(&gPlayerParty[partyIndex], MON_DATA_CUTE); + gContestMons[gContestPlayerMonIndex].smart = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SMART); + gContestMons[gContestPlayerMonIndex].tough = GetMonData(&gPlayerParty[partyIndex], MON_DATA_TOUGH); + gContestMons[gContestPlayerMonIndex].sheen = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SHEEN); + gContestMons[gContestPlayerMonIndex].moves[0] = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MOVE1); + gContestMons[gContestPlayerMonIndex].moves[1] = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MOVE2); + gContestMons[gContestPlayerMonIndex].moves[2] = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MOVE3); + gContestMons[gContestPlayerMonIndex].moves[3] = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MOVE4); + gContestMons[gContestPlayerMonIndex].personality = GetMonData(&gPlayerParty[partyIndex], MON_DATA_PERSONALITY); + gContestMons[gContestPlayerMonIndex].otId = GetMonData(&gPlayerParty[partyIndex], MON_DATA_OT_ID); + + heldItem = GetMonData(&gPlayerParty[partyIndex], MON_DATA_HELD_ITEM); + cool = gContestMons[gContestPlayerMonIndex].cool; + beauty = gContestMons[gContestPlayerMonIndex].beauty; + cute = gContestMons[gContestPlayerMonIndex].cute; + smart = gContestMons[gContestPlayerMonIndex].smart; + tough = gContestMons[gContestPlayerMonIndex].tough; + if (heldItem == ITEM_RED_SCARF) + cool += 20; + else if (heldItem == ITEM_BLUE_SCARF) + beauty += 20; + else if (heldItem == ITEM_PINK_SCARF) + cute += 20; + else if (heldItem == ITEM_GREEN_SCARF) + smart += 20; + else if (heldItem == ITEM_YELLOW_SCARF) + tough += 20; + if (cool > 255) + cool = 255; + if (beauty > 255) + beauty = 255; + if (cute > 255) + cute = 255; + if (smart > 255) + smart = 255; + if (tough > 255) + tough = 255; + gContestMons[gContestPlayerMonIndex].cool = cool; + gContestMons[gContestPlayerMonIndex].beauty = beauty; + gContestMons[gContestPlayerMonIndex].cute = cute; + gContestMons[gContestPlayerMonIndex].smart = smart; + gContestMons[gContestPlayerMonIndex].tough = tough; +} + +void sub_80DAB8C(u8 contestType, u8 rank) +{ + s32 i; + u8 opponentsCount = 0; + u8 opponents[100]; + bool8 r7 = FALSE; + const u8 * r3; + + sub_80DA884(); + + if (FlagGet(FLAG_SYS_GAME_CLEAR) && !(gIsLinkContest & 1)) + r7 = TRUE; + + // Find all suitable opponents + r3 = gUnknown_085898A4; + for (i = 0; i < ARRAY_COUNT(gContestOpponents); i++) + { + if (rank == gContestOpponents[i].whichRank) + { + if (r7 == TRUE) + { + if (r3[i] == 1) + continue; + } + else + { + if (r3[i] == 2) + continue; + } + if (contestType == CONTEST_CATEGORY_COOL && gContestOpponents[i].aiPool_Cool) + opponents[opponentsCount++] = i; + else if (contestType == CONTEST_CATEGORY_BEAUTY && gContestOpponents[i].aiPool_Beauty) + opponents[opponentsCount++] = i; + else if (contestType == CONTEST_CATEGORY_CUTE && gContestOpponents[i].aiPool_Cute) + opponents[opponentsCount++] = i; + else if (contestType == CONTEST_CATEGORY_SMART && gContestOpponents[i].aiPool_Smart) + opponents[opponentsCount++] = i; + else if (contestType == CONTEST_CATEGORY_TOUGH && gContestOpponents[i].aiPool_Tough) + opponents[opponentsCount++] = i; + } + } + opponents[opponentsCount] = 0xFF; + + // Choose three random opponents from the list + for (i = 0; i < 3; i++) + { + u16 rnd = Random() % opponentsCount; + s32 j; + + gContestMons[i] = gContestOpponents[opponents[rnd]]; + for (j = rnd; opponents[j] != 0xFF; j++) + opponents[j] = opponents[j + 1]; + opponentsCount--; + } + + sub_80DA8C8(gUnknown_02039F24); +} + +#ifdef NONMATCHING +void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame) +{ + s32 i; + u8 opponentsCount = 0; + u8 opponents[100]; + const u8 * r6; + + if (gUnknown_02039F30 == 4) + return; + + r6 = gUnknown_085898A4; + for (i = 0; i < ARRAY_COUNT(gContestOpponents); i++) + { + if (rank != gContestOpponents[i].whichRank) + continue; + if (isPostgame == TRUE) + { + if (r6[i] == 1) + continue; + } + else + { + if (r6[i] == 2) + continue; + } + if (contestType == CONTEST_CATEGORY_COOL && gContestOpponents[i].aiPool_Cool) + opponents[opponentsCount++] = i; + else if (contestType == CONTEST_CATEGORY_BEAUTY && gContestOpponents[i].aiPool_Beauty) + opponents[opponentsCount++] = i; + else if (contestType == CONTEST_CATEGORY_CUTE && gContestOpponents[i].aiPool_Cute) + opponents[opponentsCount++] = i; + else if (contestType == CONTEST_CATEGORY_SMART && gContestOpponents[i].aiPool_Smart) + opponents[opponentsCount++] = i; + else if (contestType == CONTEST_CATEGORY_TOUGH && gContestOpponents[i].aiPool_Tough) + opponents[opponentsCount++] = i; + } + opponents[opponentsCount] = 0xFF; + for (i = 0; i < 4 - gUnknown_02039F30; i++) + { + u16 rnd = sub_80F903C() % opponentsCount; + s32 j; + + gContestMons[gUnknown_02039F30 + i] = gContestOpponents[opponents[rnd]]; + sub_80DF9D4(gContestMons[gUnknown_02039F30 + i].trainerName); + sub_80DF9E0(gContestMons[gUnknown_02039F30 + i].nickname, GAME_LANGUAGE); + for (j = rnd; opponents[j] != 0xFF; j++) + opponents[j] = opponents[j + 1]; + opponentsCount--; + } +} +#else +NAKED void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r9\n" + "\tmov r6, r8\n" + "\tpush {r6,r7}\n" + "\tsub sp, 0x64\n" + "\tmov r8, r2\n" + "\tlsls r0, 24\n" + "\tlsrs r4, r0, 24\n" + "\tlsls r1, 24\n" + "\tlsrs r2, r1, 24\n" + "\tmovs r7, 0\n" + "\tldr r0, =gUnknown_02039F30\n" + "\tldrb r1, [r0]\n" + "\tmov r9, r0\n" + "\tcmp r1, 0x4\n" + "\tbne _080DACDE\n" + "\tb _080DADF6\n" + "_080DACDE:\n" + "\tmovs r5, 0\n" + "\tldr r3, =gContestOpponents\n" + "\tldr r6, =gUnknown_085898A4\n" + "_080DACE4:\n" + "\tldrb r0, [r3, 0x1C]\n" + "\tlsls r0, 30\n" + "\tlsrs r0, 30\n" + "\tcmp r2, r0\n" + "\tbne _080DAD56\n" + "\tmov r0, r8\n" + "\tcmp r0, 0x1\n" + "\tbne _080DAD08\n" + "\tldrb r0, [r6]\n" + "\tcmp r0, 0x1\n" + "\tbeq _080DAD56\n" + "\tb _080DAD0E\n" + "\t.pool\n" + "_080DAD08:\n" + "\tldrb r0, [r6]\n" + "\tcmp r0, 0x2\n" + "\tbeq _080DAD56\n" + "_080DAD0E:\n" + "\tcmp r4, 0\n" + "\tbne _080DAD1A\n" + "\tldrb r0, [r3, 0x1C]\n" + "\tlsls r0, 29\n" + "\tcmp r0, 0\n" + "\tblt _080DAD4A\n" + "_080DAD1A:\n" + "\tcmp r4, 0x1\n" + "\tbne _080DAD26\n" + "\tldrb r0, [r3, 0x1C]\n" + "\tlsls r0, 28\n" + "\tcmp r0, 0\n" + "\tblt _080DAD4A\n" + "_080DAD26:\n" + "\tcmp r4, 0x2\n" + "\tbne _080DAD32\n" + "\tldrb r0, [r3, 0x1C]\n" + "\tlsls r0, 27\n" + "\tcmp r0, 0\n" + "\tblt _080DAD4A\n" + "_080DAD32:\n" + "\tcmp r4, 0x3\n" + "\tbne _080DAD3E\n" + "\tldrb r0, [r3, 0x1C]\n" + "\tlsls r0, 26\n" + "\tcmp r0, 0\n" + "\tblt _080DAD4A\n" + "_080DAD3E:\n" + "\tcmp r4, 0x4\n" + "\tbne _080DAD56\n" + "\tldrb r0, [r3, 0x1C]\n" + "\tlsls r0, 25\n" + "\tcmp r0, 0\n" + "\tbge _080DAD56\n" + "_080DAD4A:\n" + "\tadds r0, r7, 0\n" + "\tadds r1, r0, 0x1\n" + "\tlsls r1, 24\n" + "\tlsrs r7, r1, 24\n" + "\tadd r0, sp\n" + "\tstrb r5, [r0]\n" + "_080DAD56:\n" + "\tadds r3, 0x40\n" + "\tadds r6, 0x1\n" + "\tadds r5, 0x1\n" + "\tcmp r5, 0x5F\n" + "\tbls _080DACE4\n" + "\tmov r3, sp\n" + "\tadds r1, r3, r7\n" + "\tmovs r0, 0xFF\n" + "\tstrb r0, [r1]\n" + "\tmovs r5, 0\n" + "\tmov r0, r9\n" + "\tldrb r1, [r0]\n" + "\tmovs r0, 0x4\n" + "\tsubs r0, r1\n" + "\tcmp r5, r0\n" + "\tbge _080DADF6\n" + "\tldr r3, =gContestMons\n" + "\tmov r8, r3\n" + "\tmov r6, r9\n" + "\tmovs r0, 0x2\n" + "\tadd r0, r8\n" + "\tmov r9, r0\n" + "_080DAD82:\n" + "\tbl sub_80F903C\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tadds r1, r7, 0\n" + "\tbl __modsi3\n" + "\tadds r1, r0, 0\n" + "\tlsls r1, 16\n" + "\tlsrs r1, 16\n" + "\tldrb r0, [r6]\n" + "\tadds r0, r5\n" + "\tlsls r0, 6\n" + "\tadd r0, r8\n" + "\tldr r2, =gContestOpponents\n" + "\tmov r3, sp\n" + "\tadds r4, r3, r1\n" + "\tldrb r1, [r4]\n" + "\tlsls r1, 6\n" + "\tadds r1, r2\n" + "\tmovs r2, 0x40\n" + "\tbl memcpy\n" + "\tldrb r0, [r6]\n" + "\tadds r0, r5\n" + "\tlsls r0, 6\n" + "\tmov r1, r8\n" + "\tadds r1, 0xD\n" + "\tadds r0, r1\n" + "\tbl sub_80DF9D4\n" + "\tldrb r0, [r6]\n" + "\tadds r0, r5\n" + "\tlsls r0, 6\n" + "\tadd r0, r9\n" + "\tmovs r1, 0x2\n" + "\tbl sub_80DF9E0\n" + "\tldrb r0, [r4]\n" + "\tadds r3, r5, 0x1\n" + "\tsubs r1, r7, 0x1\n" + "\tcmp r0, 0xFF\n" + "\tbeq _080DADE6\n" + "\tadds r2, r4, 0\n" + "_080DADDA:\n" + "\tldrb r0, [r2, 0x1]\n" + "\tstrb r0, [r2]\n" + "\tadds r2, 0x1\n" + "\tldrb r0, [r2]\n" + "\tcmp r0, 0xFF\n" + "\tbne _080DADDA\n" + "_080DADE6:\n" + "\tlsls r0, r1, 24\n" + "\tlsrs r7, r0, 24\n" + "\tadds r5, r3, 0\n" + "\tldrb r1, [r6]\n" + "\tmovs r0, 0x4\n" + "\tsubs r0, r1\n" + "\tcmp r5, r0\n" + "\tblt _080DAD82\n" + "_080DADF6:\n" + "\tadd sp, 0x64\n" + "\tpop {r3,r4}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.pool"); +} +#endif + +// GetContestAvailability? +u8 sub_80DAE0C(struct Pokemon *pkmn) +{ + u8 ribbon; + u8 retVal; + + if (GetMonData(pkmn, MON_DATA_IS_EGG)) + return 3; + if (GetMonData(pkmn, MON_DATA_HP) == 0) + return 4; + switch (gSpecialVar_ContestCategory) + { + case CONTEST_CATEGORY_COOL: + ribbon = GetMonData(pkmn, MON_DATA_COOL_RIBBON); + break; + case CONTEST_CATEGORY_BEAUTY: + ribbon = GetMonData(pkmn, MON_DATA_BEAUTY_RIBBON); + break; + case CONTEST_CATEGORY_CUTE: + ribbon = GetMonData(pkmn, MON_DATA_CUTE_RIBBON); + break; + case CONTEST_CATEGORY_SMART: + ribbon = GetMonData(pkmn, MON_DATA_SMART_RIBBON); + break; + case CONTEST_CATEGORY_TOUGH: + ribbon = GetMonData(pkmn, MON_DATA_TOUGH_RIBBON); + break; + default: + return 0; + } + + // Couldn't get this to match any other way. + // Returns 2, 1, or 0 respectively if ribbon's rank is above, equal, or below + // the current contest rank. + if (ribbon > gSpecialVar_ContestRank) + retVal = 2; + else if (ribbon >= gSpecialVar_ContestRank) + retVal = 1; + else + retVal = 0; + return retVal; +} + +void sub_80DAEA4(void) +{ + s32 i; + + for (i = 0; i < 4; i++) + { + FillWindowPixelBuffer(gUnknown_02039F26[i], 0); + sub_80DAF04(i); + sub_80DAF88(i); + } +} + +u8 * sub_80DAED4(const u8 * src, u8 color) +{ + u8 * ptr = StringCopy(gDisplayedStringBattle, gText_ColorTransparent); + ptr[-1] = color; + ptr = StringCopy(ptr, src); + + return ptr; +} + +void sub_80DAF04(u8 a0) +{ + sub_80DAF1C(a0, a0 + 10); +} + +void sub_80DAF1C(u8 a0, u8 a1) +{ + u8 buffer[32]; + s32 offset; + + StringCopy(buffer, gText_Slash); + StringAppend(buffer, gContestMons[a0].trainerName); + sub_80DAED4(buffer, a1); + offset = GetStringRightAlignXOffset(7, gDisplayedStringBattle, 0x60); + if (offset > 55) + offset = 55; + Contest_PrintTextToBg0WindowAt(gUnknown_02039F26[a0], gDisplayedStringBattle, offset, 1, 7); +} + +void sub_80DAF88(u8 a0) +{ + sub_80DAFA0(a0, a0 + 10); +} + +void sub_80DAFA0(u8 a0, u8 a1) +{ + sub_80DAED4(gContestMons[a0].nickname, a1); + Contest_PrintTextToBg0WindowAt(gUnknown_02039F26[a0], gDisplayedStringBattle, 5, 1, 7); +} + +u16 sub_80DAFE0(u8 who, u8 contestCategory) +{ + u8 statMain; + u8 statSub1; + u8 statSub2; + + switch (contestCategory) + { + case CONTEST_CATEGORY_COOL: + statMain = gContestMons[who].cool; + statSub1 = gContestMons[who].tough; + statSub2 = gContestMons[who].beauty; + break; + case CONTEST_CATEGORY_BEAUTY: + statMain = gContestMons[who].beauty; + statSub1 = gContestMons[who].cool; + statSub2 = gContestMons[who].cute; + break; + case CONTEST_CATEGORY_CUTE: + statMain = gContestMons[who].cute; + statSub1 = gContestMons[who].beauty; + statSub2 = gContestMons[who].smart; + break; + case CONTEST_CATEGORY_SMART: + statMain = gContestMons[who].smart; + statSub1 = gContestMons[who].cute; + statSub2 = gContestMons[who].tough; + break; + case CONTEST_CATEGORY_TOUGH: + default: + statMain = gContestMons[who].tough; + statSub1 = gContestMons[who].smart; + statSub2 = gContestMons[who].cool; + break; + } + return statMain + (statSub1 + statSub2 + gContestMons[who].sheen) / 2; +} + +void sub_80DB09C(u8 a0) +{ + s32 i; + + for (i = 0; i < 4; i++) + gContestMonConditions[i] = sub_80DAFE0(i, a0); +} + +u8 sub_80DB0C4(void) +{ + u8 spriteId; + + LoadCompressedObjectPic(&gUnknown_08587C00); + LoadCompressedPalette(gContest2Pal, 0x110, 32); + spriteId = CreateSprite(&gSpriteTemplate_8587BE8, 112, 36, 30); + gSprites[spriteId].oam.paletteNum = 1; + gSprites[spriteId].callback = SpriteCallbackDummy; + return spriteId; +} + +u8 sub_80DB120(void) +{ + u8 spriteId; + + LoadCompressedObjectPic(&gUnknown_08587C08); + LoadCompressedObjectPalette(&gUnknown_08587C10); + spriteId = CreateSprite(&gSpriteTemplate_8587C18, 96, 10, 29); + gSprites[spriteId].invisible = TRUE; + gSprites[spriteId].data[0] = gSprites[spriteId].oam.tileNum; + return spriteId; +} + +u8 sub_80DB174(u16 species, u32 otId, u32 personality, u32 index) +{ + u8 spriteId; + species = sub_80DE84C(species); + + if (index == gContestPlayerMonIndex) + HandleLoadSpecialPokePic_2(gMonBackPicTable + species, gMonSpritesGfxPtr->sprites[0], species, personality); + else + HandleLoadSpecialPokePic_DontHandleDeoxys(gMonBackPicTable + species, gMonSpritesGfxPtr->sprites[0], species, personality); + + LoadCompressedPalette(GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality), 0x120, 0x20); + SetMultiuseSpriteTemplateToPokemon(species, 0); + + spriteId = CreateSprite(&gMultiuseSpriteTemplate, 0x70, sub_80A600C(2, species, 0), 30); + gSprites[spriteId].oam.paletteNum = 2; + gSprites[spriteId].oam.priority = 2; + gSprites[spriteId].subpriority = sub_80A82E4(2); + gSprites[spriteId].callback = SpriteCallbackDummy; + gSprites[spriteId].data[0] = gSprites[spriteId].oam.paletteNum; + gSprites[spriteId].data[2] = species; + if (IsSpeciesNotUnown(species)) + gSprites[spriteId].affineAnims = gUnknown_082FF6C0; + else + gSprites[spriteId].affineAnims = gUnknown_082FF694; + StartSpriteAffineAnim(gSprites + spriteId, 0); + + return spriteId; +} + +bool8 IsSpeciesNotUnown(u16 species) +{ + if (species == SPECIES_UNOWN) + return FALSE; + else + return TRUE; +} + +void sub_80DB2BC(void) +{ + CpuCopy16(gContestResources->field_24[0], gContestResources->field_24[0] + 0x500, 0x280); + CpuCopy16(gContestResources->field_24[2], gContestResources->field_24[2] + 0x500, 0x280); +} + +u16 sub_80DB2EC(u16 a0, u8 a1) +{ + u16 var; + + switch (gContestEffects[gContestMoves[a0].effect].effectType) + { + case 0: + case 1: + case 8: + var = 0x9082; + break; + case 2: + case 3: + var = 0x9088; + break; + default: + var = 0x9086; + break; + } + var += 0x9000 + (a1 << 12); + return var; +} + +void prints_contest_move_description(u16 a) +{ + u8 category; + u16 categoryTile; + u8 numHearts; + + category = gContestMoves[a].contestCategory; + if (category == CONTEST_CATEGORY_COOL) + categoryTile = 0x4040; + else if (category == CONTEST_CATEGORY_BEAUTY) + categoryTile = 0x4045; + else if (category == CONTEST_CATEGORY_CUTE) + categoryTile = 0x404A; + else if (category == CONTEST_CATEGORY_SMART) + categoryTile = 0x406A; + else + categoryTile = 0x408A; + + ContestBG_FillBoxWithIncrementingTile(0, categoryTile, 0x0b, 0x1f, 0x05, 0x01, 0x11, 0x01); + ContestBG_FillBoxWithIncrementingTile(0, categoryTile + 0x10, 0x0b, 0x20, 0x05, 0x01, 0x11, 0x01); + + if (gContestEffects[gContestMoves[a].effect].appeal == 0xFF) + numHearts = 0; + else + numHearts = gContestEffects[gContestMoves[a].effect].appeal / 10; + if (numHearts > 8) + numHearts = 8; + ContestBG_FillBoxWithTile(0, 0x5035, 0x15, 0x1f, 0x08, 0x01, 0x11); + ContestBG_FillBoxWithTile(0, 0x5012, 0x15, 0x1f, numHearts, 0x01, 0x11); + + if (gContestEffects[gContestMoves[a].effect].jam == 0xFF) + numHearts = 0; + else + numHearts = gContestEffects[gContestMoves[a].effect].jam / 10; + if (numHearts > 8) + numHearts = 8; + ContestBG_FillBoxWithTile(0, 0x5036, 0x15, 0x20, 0x08, 0x01, 0x11); + ContestBG_FillBoxWithTile(0, 0x5014, 0x15, 0x20, numHearts, 0x01, 0x11); + + FillWindowPixelBuffer(10, 0); + Contest_PrintTextToBg0WindowStd(10, gContestEffectDescriptionPointers[gContestMoves[a].effect]); + Contest_PrintTextToBg0WindowStd(9, gText_Slash); +} + +void sub_80DB4E0(u16 move, u8 b) +{ + u8 r7 = gUnknown_02039F26[b] * 5 + 2; + + if (!Contest_IsMonsTurnDisabled(b) && move != MOVE_NONE) + { + u16 tile = sub_80DB2EC(move, b); + + ContestBG_FillBoxWithIncrementingTile(0, tile, 20, r7, 2, 1, 17, 1); + ContestBG_FillBoxWithIncrementingTile(0, tile + 16, 20, r7 + 1, 2, 1, 17, 1); + } + else + { + ContestBG_FillBoxWithTile(0, 0, 20, r7, 2, 2, 17); + } +} + +void sub_80DB584(void) +{ + s32 i; + + for (i = 0; i < 4; i++) + sub_80DB4E0(gContestResources->field_4[i].currMove, i); +} + +u16 sub_80DB5B0(void) +{ + return 0x2034; +} + +bool8 sub_80DB5B8(u8 contestantIdx, bool8 resetMod) +{ + u8 r6; + s32 r4; + + if (sContestantStatus[contestantIdx].conditionMod == 0) + return FALSE; + r6 = gUnknown_02039F26[contestantIdx] * 5 + 2; + r4 = sContestantStatus[contestantIdx].condition / 10; + if (sContestantStatus[contestantIdx].conditionMod == 1) + { + ContestBG_FillBoxWithTile(0, sub_80DB5B0(), 19, r6, 1, r4, 17); + if (resetMod) + { + PlaySE(SE_EXPMAX); + sContestantStatus[contestantIdx].conditionMod = 0; + } + } + else + { + ContestBG_FillBoxWithTile(0, 0, 19, r6 + r4, 1, 3 - r4, 17); + if (resetMod) + { + PlaySE(SE_FU_ZAKU2); + sContestantStatus[contestantIdx].conditionMod = 0; + } + } + return TRUE; +} + +void sub_80DB69C(void) +{ + s32 i; + s32 r6; + + for (i = 0; i < 4; i++) + { + u8 r4 = gUnknown_02039F26[i] * 5 + 2; + u16 r5 = sub_80DB5B0(); + + r6 = sContestantStatus[i].condition / 10; + ContestBG_FillBoxWithTile(0, r5, 19, r4, 1, r6, 17); + ContestBG_FillBoxWithTile(0, 0, 19, r4 + r6, 1, 3 - r6, 17); + } +} + +u16 sub_80DB748(u8 status) +{ + u16 var = 0; + + switch (status) + { + case 0: + var = 0x80; + break; + case 1: + var = 0x84; + break; + case 2: + var = 0x86; + break; + case 3: + var = 0x88; + break; + case 4: + var = 0x82; + break; + } + var += 0x9000; + return var; +} + +bool8 sub_80DB798(u8 a) +{ + bool8 r9 = TRUE; + u16 r8 = 0; + u8 r7 = gUnknown_02039F26[a] * 5 + 2; + + if (sContestantStatus[a].resistant != 0 || sContestantStatus[a].immune != 0 || sContestantStatus[a].jamSafetyCount != 0 || sContestantStatus[a].jamReduction != 0) + r8 = sub_80DB748(0); + else if (sContestantStatus[a].nervous) + r8 = sub_80DB748(1); + else if (sContestantStatus[a].numTurnsSkipped != 0 || sContestantStatus[a].noMoreTurns) + r8 = sub_80DB748(2); + else + r9 = FALSE; + if (r9) + { + ContestBG_FillBoxWithIncrementingTile(0, r8, 20, r7, 2, 1, 17, 1); + ContestBG_FillBoxWithIncrementingTile(0, r8 + 16, 20, r7 + 1, 2, 1, 17, 1); + } + else + { + ContestBG_FillBoxWithTile(0, 0, 20, r7, 2, 2, 17); + } + return r9; +} diff --git a/src/contest_ai.c b/src/contest_ai.c new file mode 100644 index 000000000..3324ddf87 --- /dev/null +++ b/src/contest_ai.c @@ -0,0 +1,1756 @@ +#include "global.h" +#include "contest.h" +#include "random.h" +#include "contest_ai.h" +#include "contest_effect.h" + +extern u16 gContestMonConditions[]; + +extern const u8 *gAIScriptPtr; +extern const u8 *gContestAIs[]; + +static void ContestAICmd_unk_00(void); +static void ContestAICmd_get_turn(void); +static void ContestAICmd_unk_02(void); +static void ContestAICmd_unk_03(void); +static void ContestAICmd_unk_04(void); +static void ContestAICmd_unk_05(void); +static void ContestAICmd_get_excitement(void); +static void ContestAICmd_unk_07(void); +static void ContestAICmd_unk_08(void); +static void ContestAICmd_unk_09(void); +static void ContestAICmd_unk_0A(void); +static void ContestAICmd_get_user_order(void); +static void ContestAICmd_unk_0C(void); +static void ContestAICmd_unk_0D(void); +static void ContestAICmd_unk_0E(void); +static void ContestAICmd_unk_0F(void); +static void ContestAICmd_get_user_condition_maybe(void); +static void ContestAICmd_unk_11(void); +static void ContestAICmd_unk_12(void); +static void ContestAICmd_unk_13(void); +static void ContestAICmd_unk_14(void); +static void ContestAICmd_unk_15(void); +static void ContestAICmd_unk_16(void); +static void ContestAICmd_unk_17(void); +static void ContestAICmd_unk_18(void); +static void ContestAICmd_unk_19(void); +static void ContestAICmd_unk_1A(void); +static void ContestAICmd_unk_1B(void); +static void ContestAICmd_unk_1C(void); +static void ContestAICmd_unk_1D(void); +static void ContestAICmd_unk_1E(void); +static void ContestAICmd_get_contest_type(void); +static void ContestAICmd_unk_20(void); +static void ContestAICmd_unk_21(void); +static void ContestAICmd_get_move_excitement(void); +static void ContestAICmd_unk_23(void); +static void ContestAICmd_unk_24(void); +static void ContestAICmd_unk_25(void); +static void ContestAICmd_unk_26(void); +static void ContestAICmd_get_move_effect(void); +static void ContestAICmd_unk_28(void); +static void ContestAICmd_unk_29(void); +static void ContestAICmd_get_move_effect_type(void); +static void ContestAICmd_unk_2B(void); +static void ContestAICmd_unk_2C(void); +static void ContestAICmd_check_move_has_highest_appeal(void); +static void ContestAICmd_unk_2E(void); +static void ContestAICmd_unk_2F(void); +static void ContestAICmd_unk_30(void); +static void ContestAICmd_unk_31(void); +static void ContestAICmd_unk_32(void); +static void ContestAICmd_unk_33(void); +static void ContestAICmd_unk_34(void); +static void ContestAICmd_unk_35(void); +static void ContestAICmd_unk_36(void); +static void ContestAICmd_unk_37(void); +static void ContestAICmd_unk_38(void); +static void ContestAICmd_unk_39(void); +static void ContestAICmd_unk_3A(void); +static void ContestAICmd_get_move_used_count(void); +static void ContestAICmd_unk_3C(void); +static void ContestAICmd_unk_3D(void); +static void ContestAICmd_unk_3E(void); +static void ContestAICmd_unk_3F(void); +static void ContestAICmd_check_combo_starter(void); +static void ContestAICmd_unk_41(void); +static void ContestAICmd_unk_42(void); +static void ContestAICmd_check_combo_finisher(void); +static void ContestAICmd_unk_44(void); +static void ContestAICmd_unk_45(void); +static void ContestAICmd_check_would_finish_combo(void); +static void ContestAICmd_unk_47(void); +static void ContestAICmd_unk_48(void); +static void ContestAICmd_get_condition(void); +static void ContestAICmd_unk_4A(void); +static void ContestAICmd_unk_4B(void); +static void ContestAICmd_unk_4C(void); +static void ContestAICmd_unk_4D(void); +static void ContestAICmd_get_used_combo_starter(void); +static void ContestAICmd_unk_4F(void); +static void ContestAICmd_unk_50(void); +static void ContestAICmd_unk_51(void); +static void ContestAICmd_unk_52(void); +static void ContestAICmd_check_can_participate(void); +static void ContestAICmd_unk_54(void); +static void ContestAICmd_unk_55(void); +static void ContestAICmd_get_val_812A188(void); +static void ContestAICmd_unk_57(void); +static void ContestAICmd_unk_58(void); +static void ContestAICmd_unk_59(void); +static void ContestAICmd_unk_5A(void); +static void ContestAICmd_unk_5B(void); +static void ContestAICmd_unk_5C(void); +static void ContestAICmd_unk_5D(void); +static void ContestAICmd_unk_5E(void); +static void ContestAICmd_unk_5F(void); +static void ContestAICmd_unk_60(void); +static void ContestAICmd_unk_61(void); +static void ContestAICmd_unk_62(void); +static void ContestAICmd_unk_63(void); +static void ContestAICmd_unk_64(void); +static void ContestAICmd_unk_65(void); +static void ContestAICmd_unk_66(void); +static void ContestAICmd_unk_67(void); +static void ContestAICmd_unk_68(void); +static void ContestAICmd_unk_69(void); +static void ContestAICmd_unk_6A(void); +static void ContestAICmd_unk_6B(void); +static void ContestAICmd_unk_6C(void); +static void ContestAICmd_unk_6D(void); +static void ContestAICmd_unk_6E(void); +static void ContestAICmd_unk_6F(void); +static void ContestAICmd_unk_70(void); +static void ContestAICmd_unk_71(void); +static void ContestAICmd_unk_72(void); +static void ContestAICmd_unk_73(void); +static void ContestAICmd_unk_74(void); +static void ContestAICmd_unk_75(void); +static void ContestAICmd_unk_76(void); +static void ContestAICmd_unk_77(void); +static void ContestAICmd_unk_78(void); +static void ContestAICmd_unk_79(void); +static void ContestAICmd_unk_7A(void); +static void ContestAICmd_unk_7B(void); +static void ContestAICmd_unk_7C(void); +static void ContestAICmd_unk_7D(void); +static void ContestAICmd_unk_7E(void); +static void ContestAICmd_unk_7F(void); +static void ContestAICmd_unk_80(void); +static void ContestAICmd_unk_81(void); +static void ContestAICmd_check_for_exciting_move(void); +static void ContestAICmd_unk_83(void); +static void ContestAICmd_unk_84(void); +static void ContestAICmd_unk_85(void); +static void ContestAICmd_unk_86(void); +static void ContestAICmd_unk_87(void); + +typedef void (* ContestAICmdFunc)(void); + +static const ContestAICmdFunc sContestAICmdTable[] = +{ + ContestAICmd_unk_00, // 0x00 + ContestAICmd_get_turn, // 0x01 + ContestAICmd_unk_02, // 0x02 + ContestAICmd_unk_03, // 0x03 + ContestAICmd_unk_04, // 0x04 + ContestAICmd_unk_05, // 0x05 + ContestAICmd_get_excitement, // 0x06 + ContestAICmd_unk_07, // 0x07 + ContestAICmd_unk_08, // 0x08 + ContestAICmd_unk_09, // 0x09 + ContestAICmd_unk_0A, // 0x0A + ContestAICmd_get_user_order, // 0x0B + ContestAICmd_unk_0C, // 0x0C + ContestAICmd_unk_0D, // 0x0D + ContestAICmd_unk_0E, // 0x0E + ContestAICmd_unk_0F, // 0x0F + ContestAICmd_get_user_condition_maybe, // 0x10 + ContestAICmd_unk_11, // 0x11 + ContestAICmd_unk_12, // 0x12 + ContestAICmd_unk_13, // 0x13 + ContestAICmd_unk_14, // 0x14 + ContestAICmd_unk_15, // 0x15 + ContestAICmd_unk_16, // 0x16 + ContestAICmd_unk_17, // 0x17 + ContestAICmd_unk_18, // 0x18 + ContestAICmd_unk_19, // 0x19 + ContestAICmd_unk_1A, // 0x1A + ContestAICmd_unk_1B, // 0x1B + ContestAICmd_unk_1C, // 0x1C + ContestAICmd_unk_1D, // 0x1D + ContestAICmd_unk_1E, // 0x1E + ContestAICmd_get_contest_type, // 0x1F + ContestAICmd_unk_20, // 0x20 + ContestAICmd_unk_21, // 0x21 + ContestAICmd_get_move_excitement, // 0x22 + ContestAICmd_unk_23, // 0x23 + ContestAICmd_unk_24, // 0x24 + ContestAICmd_unk_25, // 0x25 + ContestAICmd_unk_26, // 0x26 + ContestAICmd_get_move_effect, // 0x27 + ContestAICmd_unk_28, // 0x28 + ContestAICmd_unk_29, // 0x29 + ContestAICmd_get_move_effect_type, // 0x2A + ContestAICmd_unk_2B, // 0x2B + ContestAICmd_unk_2C, // 0x2C + ContestAICmd_check_move_has_highest_appeal, // 0x2D + ContestAICmd_unk_2E, // 0x2E + ContestAICmd_unk_2F, // 0x2F + ContestAICmd_unk_30, // 0x30 + ContestAICmd_unk_31, // 0x31 + ContestAICmd_unk_32, // 0x32 + ContestAICmd_unk_33, // 0x33 + ContestAICmd_unk_34, // 0x34 + ContestAICmd_unk_35, // 0x35 + ContestAICmd_unk_36, // 0x36 + ContestAICmd_unk_37, // 0x37 + ContestAICmd_unk_38, // 0x38 + ContestAICmd_unk_39, // 0x39 + ContestAICmd_unk_3A, // 0x3A + ContestAICmd_get_move_used_count, // 0x3B + ContestAICmd_unk_3C, // 0x3C + ContestAICmd_unk_3D, // 0x3D + ContestAICmd_unk_3E, // 0x3E + ContestAICmd_unk_3F, // 0x3F + ContestAICmd_check_combo_starter, // 0x40 + ContestAICmd_unk_41, // 0x41 + ContestAICmd_unk_42, // 0x42 + ContestAICmd_check_combo_finisher, // 0x43 + ContestAICmd_unk_44, // 0x44 + ContestAICmd_unk_45, // 0x45 + ContestAICmd_check_would_finish_combo, // 0x46 + ContestAICmd_unk_47, // 0x47 + ContestAICmd_unk_48, // 0x48 + ContestAICmd_get_condition, // 0x49 + ContestAICmd_unk_4A, // 0x4A + ContestAICmd_unk_4B, // 0x4B + ContestAICmd_unk_4C, // 0x4C + ContestAICmd_unk_4D, // 0x4D + ContestAICmd_get_used_combo_starter, // 0x4E + ContestAICmd_unk_4F, // 0x4F + ContestAICmd_unk_50, // 0x50 + ContestAICmd_unk_51, // 0x51 + ContestAICmd_unk_52, // 0x52 + ContestAICmd_check_can_participate, // 0x53 + ContestAICmd_unk_54, // 0x54 + ContestAICmd_unk_55, // 0x55 + ContestAICmd_get_val_812A188, // 0x56 + ContestAICmd_unk_57, // 0x57 + ContestAICmd_unk_58, // 0x58 + ContestAICmd_unk_59, // 0x59 + ContestAICmd_unk_5A, // 0x5A + ContestAICmd_unk_5B, // 0x5B + ContestAICmd_unk_5C, // 0x5C + ContestAICmd_unk_5D, // 0x5D + ContestAICmd_unk_5E, // 0x5E + ContestAICmd_unk_5F, // 0x5F + ContestAICmd_unk_60, // 0x60 + ContestAICmd_unk_61, // 0x61 + ContestAICmd_unk_62, // 0x62 + ContestAICmd_unk_63, // 0x63 + ContestAICmd_unk_64, // 0x64 + ContestAICmd_unk_65, // 0x65 + ContestAICmd_unk_66, // 0x66 + ContestAICmd_unk_67, // 0x67 + ContestAICmd_unk_68, // 0x68 + ContestAICmd_unk_69, // 0x69 + ContestAICmd_unk_6A, // 0x6A + ContestAICmd_unk_6B, // 0x6B + ContestAICmd_unk_6C, // 0x6C + ContestAICmd_unk_6D, // 0x6D + ContestAICmd_unk_6E, // 0x6E + ContestAICmd_unk_6F, // 0x6F + ContestAICmd_unk_70, // 0x70 + ContestAICmd_unk_71, // 0x71 + ContestAICmd_unk_72, // 0x72 + ContestAICmd_unk_73, // 0x73 + ContestAICmd_unk_74, // 0x74 + ContestAICmd_unk_75, // 0x75 + ContestAICmd_unk_76, // 0x76 + ContestAICmd_unk_77, // 0x77 + ContestAICmd_unk_78, // 0x78 + ContestAICmd_unk_79, // 0x79 + ContestAICmd_unk_7A, // 0x7A + ContestAICmd_unk_7B, // 0x7B + ContestAICmd_unk_7C, // 0x7C + ContestAICmd_unk_7D, // 0x7D + ContestAICmd_unk_7E, // 0x7E + ContestAICmd_unk_7F, // 0x7F + ContestAICmd_unk_80, // 0x80 + ContestAICmd_unk_81, // 0x81 + ContestAICmd_check_for_exciting_move, // 0x82 + ContestAICmd_unk_83, // 0x83 + ContestAICmd_unk_84, // 0x84 + ContestAICmd_unk_85, // 0x85 + ContestAICmd_unk_86, // 0x86 + ContestAICmd_unk_87, // 0x87 +}; + +static void ContestAI_DoAIProcessing(void); +static bool8 sub_81563B0(u8); +static void AIStackPushVar(const u8 *); +static u8 AIStackPop(void); + +void ContestAI_ResetAI(u8 contestantAI) +{ + int i; + memset(eContestAI, 0, sizeof(struct ContestAIInfo)); + + for (i = 0; i < 4; i++) + eContestAI->unk5[i] = 100; + + eContestAI->contestantId = contestantAI; + eContestAI->stackSize = 0; + eContestAI->flags = gContestMons[eContestAI->contestantId].flags; +} + +u8 ContestAI_GetActionToUse(void) +{ + while (eContestAI->flags != 0) + { + if (eContestAI->flags & 1) + { + eContestAI->aiState = 0; + ContestAI_DoAIProcessing(); + } + eContestAI->flags >>= 1; + eContestAI->unk10++; + eContestAI->unk4 = 0; + } + + while (1) + { + u8 rval = Random() & 3; + u8 r2 = eContestAI->unk5[rval]; + int i; + for (i = 0; i < 4; i++) + { + if (r2 < eContestAI->unk5[i]) + break; + } + if (i == 4) + return rval; + } +} + +static void ContestAI_DoAIProcessing(void) +{ + while (eContestAI->aiState != CONTESTAI_FINISHED) + { + switch(eContestAI->aiState) + { + case CONTESTAI_DO_NOT_PROCESS: + break; + case CONTESTAI_SETTING_UP: + gAIScriptPtr = gContestAIs[eContestAI->unk10]; + + if (gContestMons[eContestAI->contestantId].moves[eContestAI->unk4] == 0) + eContestAI->unk2 = 0; // don't process a move that doesn't exist. + else + eContestAI->unk2 = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4]; + eContestAI->aiState++; + break; + case CONTESTAI_PROCESSING: + if (eContestAI->unk2 != 0) + sContestAICmdTable[*gAIScriptPtr](); // run the command. + else + { + eContestAI->unk5[eContestAI->unk4] = 0; // don't consider a move that doesn't exist. + eContestAI->aiAction |= 1; + } + if (eContestAI->aiAction & 1) + { + eContestAI->unk4++; + if (eContestAI->unk4 < 4) + eContestAI->aiState = 0; + else + eContestAI->aiState++; + eContestAI->aiAction &= 0xFE; // TODO: Define action flags + } + break; + } + } +} + +static u8 sub_81563B0(u8 var) +{ + int i; + + for (i = 0; i < 4; i++) + if (shared192D0.turnOrder[i] == var) + break; + + return i; +} + +static void ContestAICmd_unk_00(void) +{ + s16 score = eContestAI->unk5[eContestAI->unk4] + (s8)gAIScriptPtr[1]; + + if (score > 255) + score = 255; + else if (score < 0) + score = 0; + + eContestAI->unk5[eContestAI->unk4] = score; + + gAIScriptPtr += 2; +} + +static void ContestAICmd_get_turn(void) +{ + eContestAI->scriptResult = sContest.turnNumber; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_02(void) +{ + ContestAICmd_get_turn(); + + if (eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_03(void) +{ + ContestAICmd_get_turn(); + + if (eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_04(void) +{ + ContestAICmd_get_turn(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_05(void) +{ + ContestAICmd_get_turn(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_get_excitement(void) +{ + eContestAI->scriptResult = sContest.applauseLevel; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_07(void) +{ + ContestAICmd_get_excitement(); + + if (eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_08(void) +{ + ContestAICmd_get_excitement(); + + if (eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_09(void) +{ + ContestAICmd_get_excitement(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_0A(void) +{ + ContestAICmd_get_excitement(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_get_user_order(void) +{ + eContestAI->scriptResult = shared192D0.turnOrder[eContestAI->contestantId]; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_0C(void) +{ + ContestAICmd_get_user_order(); + + if (eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_0D(void) +{ + ContestAICmd_get_user_order(); + + if (eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_0E(void) +{ + ContestAICmd_get_user_order(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_0F(void) +{ + ContestAICmd_get_user_order(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_get_user_condition_maybe(void) +{ + eContestAI->scriptResult = sContestantStatus[eContestAI->contestantId].condition / 10; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_11(void) +{ + ContestAICmd_get_user_condition_maybe(); + + if (eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_12(void) +{ + ContestAICmd_get_user_condition_maybe(); + + if (eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_13(void) +{ + ContestAICmd_get_user_condition_maybe(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_14(void) +{ + ContestAICmd_get_user_condition_maybe(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_15(void) +{ + eContestAI->scriptResult = sContestantStatus[eContestAI->contestantId].unk4; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_16(void) +{ + ContestAICmd_unk_15(); + + if (eContestAI->scriptResult < (s16)T1_READ_16(gAIScriptPtr + 0)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +static void ContestAICmd_unk_17(void) +{ + ContestAICmd_unk_15(); + + if (eContestAI->scriptResult > (s16)T1_READ_16(gAIScriptPtr + 0)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +static void ContestAICmd_unk_18(void) +{ + ContestAICmd_unk_15(); + + if (eContestAI->scriptResult == (s16)T1_READ_16(gAIScriptPtr + 0)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +static void ContestAICmd_unk_19(void) +{ + ContestAICmd_unk_15(); + + if (eContestAI->scriptResult != (s16)T1_READ_16(gAIScriptPtr + 0)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +static void ContestAICmd_unk_1A(void) +{ + eContestAI->scriptResult = gContestMonConditions[eContestAI->contestantId]; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_1B(void) +{ + ContestAICmd_unk_1A(); + + if (eContestAI->scriptResult < (s16)T1_READ_16(gAIScriptPtr + 0)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +static void ContestAICmd_unk_1C(void) +{ + ContestAICmd_unk_1A(); + + if (eContestAI->scriptResult > (s16)T1_READ_16(gAIScriptPtr + 0)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +static void ContestAICmd_unk_1D(void) +{ + ContestAICmd_unk_1A(); + + if (eContestAI->scriptResult == (s16)T1_READ_16(gAIScriptPtr + 0)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +static void ContestAICmd_unk_1E(void) +{ + ContestAICmd_unk_1A(); + + if (eContestAI->scriptResult != (s16)T1_READ_16(gAIScriptPtr + 0)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +static void ContestAICmd_get_contest_type(void) +{ + eContestAI->scriptResult = gSpecialVar_ContestCategory; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_20(void) +{ + ContestAICmd_get_contest_type(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_21(void) +{ + ContestAICmd_get_contest_type(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_get_move_excitement(void) +{ + eContestAI->scriptResult = Contest_GetMoveExcitement(gContestMons[eContestAI->contestantId].moves[eContestAI->unk4]); + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_23(void) +{ + ContestAICmd_get_move_excitement(); + + if (eContestAI->scriptResult < (s8)gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_24(void) +{ + ContestAICmd_get_move_excitement(); + + if (eContestAI->scriptResult > (s8)gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_25(void) +{ + ContestAICmd_get_move_excitement(); + + if (eContestAI->scriptResult == (s8)gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_26(void) +{ + ContestAICmd_get_move_excitement(); + + if (eContestAI->scriptResult != (s8)gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_get_move_effect(void) +{ + u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4]; + + eContestAI->scriptResult = gContestMoves[move].effect; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_28(void) +{ + ContestAICmd_get_move_effect(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_29(void) +{ + ContestAICmd_get_move_effect(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_get_move_effect_type(void) +{ + u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4]; + + eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].effectType; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_2B(void) +{ + ContestAICmd_get_move_effect_type(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_2C(void) +{ + ContestAICmd_get_move_effect_type(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_check_move_has_highest_appeal(void) +{ + int i; + u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4]; + u8 appeal = gContestEffects[gContestMoves[move].effect].appeal; + + for (i = 0; i < 4; i++) + { + u16 newMove = gContestMons[eContestAI->contestantId].moves[i]; + if (newMove != 0 && appeal < gContestEffects[gContestMoves[newMove].effect].appeal) + break; + } + + if (i == 4) + eContestAI->scriptResult = TRUE; + else + eContestAI->scriptResult = FALSE; + + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_2E(void) +{ + ContestAICmd_check_move_has_highest_appeal(); + + if (eContestAI->scriptResult != FALSE) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_2F(void) +{ + int i; + u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4]; + u8 jam = gContestEffects[gContestMoves[move].effect].jam; + + for (i = 0; i < 4; i++) + { + u16 newMove = gContestMons[eContestAI->contestantId].moves[i]; + if (newMove != 0 && jam < gContestEffects[gContestMoves[newMove].effect].jam) + break; + } + + if (i == 4) + eContestAI->scriptResult = TRUE; + else + eContestAI->scriptResult = FALSE; + + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_30(void) +{ + ContestAICmd_unk_2F(); + + if (eContestAI->scriptResult != FALSE) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_31(void) +{ + u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4]; + + eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].appeal / 10; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_32(void) +{ + ContestAICmd_unk_31(); + + if (eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_33(void) +{ + ContestAICmd_unk_31(); + + if (eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_34(void) +{ + ContestAICmd_unk_31(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_35(void) +{ + ContestAICmd_unk_31(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_36(void) +{ + u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4]; + + eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].jam / 10; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_37(void) +{ + ContestAICmd_unk_36(); + + if (eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_38(void) +{ + ContestAICmd_unk_36(); + + if (eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_39(void) +{ + ContestAICmd_unk_36(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_3A(void) +{ + ContestAICmd_unk_36(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_get_move_used_count(void) +{ + s16 result; + u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4]; + + if (move != sContestantStatus[eContestAI->contestantId].prevMove) + result = 0; // move is unique and not reused. + else + result = sContestantStatus[eContestAI->contestantId].moveRepeatCount + 1; + + eContestAI->scriptResult = result; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_3C(void) +{ + ContestAICmd_get_move_used_count(); + + if (eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_3D(void) +{ + ContestAICmd_get_move_used_count(); + + if (eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_3E(void) +{ + ContestAICmd_get_move_used_count(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_3F(void) +{ + ContestAICmd_get_move_used_count(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_check_combo_starter(void) +{ + u8 result = 0; + int i; + u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4]; + + for (i = 0; i < 4; i++) + { + if (gContestMons[eContestAI->contestantId].moves[i]) + { + result = AreMovesContestCombo(move, gContestMons[eContestAI->contestantId].moves[i]); + if (result) + { + result = 1; + break; + } + } + } + + if (result) + result = 1; + + eContestAI->scriptResult = result; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_41(void) +{ + ContestAICmd_check_combo_starter(); + + if (eContestAI->scriptResult != 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_42(void) +{ + ContestAICmd_check_combo_starter(); + + if (eContestAI->scriptResult == 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_check_combo_finisher(void) +{ + u8 result = 0; + int i; + u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4]; + + for (i = 0; i < 4; i++) + { + if (gContestMons[eContestAI->contestantId].moves[i]) + { + result = AreMovesContestCombo(gContestMons[eContestAI->contestantId].moves[i], move); + if (result) + { + result = 1; + break; + } + } + } + + if (result) + result = 1; + + eContestAI->scriptResult = result; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_44(void) +{ + ContestAICmd_check_combo_finisher(); + + if (eContestAI->scriptResult != 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_45(void) +{ + ContestAICmd_check_combo_finisher(); + + if (eContestAI->scriptResult == 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_check_would_finish_combo(void) +{ + u8 result = 0; + u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4]; + + if (sContestantStatus[eContestAI->contestantId].prevMove) + result = AreMovesContestCombo(sContestantStatus[eContestAI->contestantId].prevMove, move); + + if (result) + result = 1; + + eContestAI->scriptResult = result; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_47(void) +{ + ContestAICmd_check_would_finish_combo(); + + if (eContestAI->scriptResult != 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_48(void) +{ + ContestAICmd_check_would_finish_combo(); + + if (eContestAI->scriptResult == 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_get_condition(void) +{ + int var = sub_81563B0(gAIScriptPtr[1]); + + eContestAI->scriptResult = sContestantStatus[var].condition / 10; + gAIScriptPtr += 2; +} + +static void ContestAICmd_unk_4A(void) +{ + ContestAICmd_get_condition(); + + if (eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_4B(void) +{ + ContestAICmd_get_condition(); + + if (eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_4C(void) +{ + ContestAICmd_get_condition(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_4D(void) +{ + ContestAICmd_get_condition(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_get_used_combo_starter(void) +{ + u16 result = 0; + u8 var = sub_81563B0(gAIScriptPtr[1]); + + if (sub_80DE1E8(var)) + result = gContestMoves[sContestantStatus[var].prevMove].comboStarterId ? 1 : 0; + + eContestAI->scriptResult = result; + gAIScriptPtr += 2; +} + +static void ContestAICmd_unk_4F(void) +{ + ContestAICmd_get_used_combo_starter(); + + if (eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_50(void) +{ + ContestAICmd_get_used_combo_starter(); + + if (eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_51(void) +{ + ContestAICmd_get_used_combo_starter(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_52(void) +{ + ContestAICmd_get_used_combo_starter(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_check_can_participate(void) +{ + if (Contest_IsMonsTurnDisabled(sub_81563B0(gAIScriptPtr[1]))) + eContestAI->scriptResult = FALSE; + else + eContestAI->scriptResult = TRUE; + + gAIScriptPtr += 2; +} + +static void ContestAICmd_unk_54(void) +{ + ContestAICmd_check_can_participate(); + + if (eContestAI->scriptResult != 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_55(void) +{ + ContestAICmd_check_can_participate(); + + if (eContestAI->scriptResult == 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_get_val_812A188(void) +{ + u8 var = sub_81563B0(gAIScriptPtr[1]); + + eContestAI->scriptResult = sContestantStatus[var].unk15_3; + gAIScriptPtr += 2; +} + +static void ContestAICmd_unk_57(void) +{ + ContestAICmd_get_val_812A188(); + + if (eContestAI->scriptResult != 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_58(void) +{ + ContestAICmd_get_val_812A188(); + + if (eContestAI->scriptResult == 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_59(void) +{ + u8 var = sub_81563B0(gAIScriptPtr[1]); + + eContestAI->scriptResult = sContestantStatus[var].unk4 - sContestantStatus[eContestAI->contestantId].unk4; + gAIScriptPtr += 2; +} + +static void ContestAICmd_unk_5A(void) +{ + ContestAICmd_unk_59(); + + if (eContestAI->scriptResult < 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_5B(void) +{ + ContestAICmd_unk_59(); + + if (eContestAI->scriptResult > 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_5C(void) +{ + ContestAICmd_unk_59(); + + if (eContestAI->scriptResult == 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_5D(void) +{ + ContestAICmd_unk_59(); + + if (eContestAI->scriptResult != 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_5E(void) +{ + u8 var = sub_81563B0(gAIScriptPtr[1]); + + eContestAI->scriptResult = gContestMonConditions[var] - gContestMonConditions[eContestAI->contestantId]; + gAIScriptPtr += 2; +} + +static void ContestAICmd_unk_5F(void) +{ + ContestAICmd_unk_5E(); + + if (eContestAI->scriptResult < 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_60(void) +{ + ContestAICmd_unk_5E(); + + if (eContestAI->scriptResult > 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_61(void) +{ + ContestAICmd_unk_5E(); + + if (eContestAI->scriptResult == 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_62(void) +{ + ContestAICmd_unk_5E(); + + if (eContestAI->scriptResult != 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_63(void) +{ + u8 var = sub_81563B0(gAIScriptPtr[1]); + u8 var2 = gAIScriptPtr[2]; + u16 move = sContest.unk19220[var2][var]; + + eContestAI->scriptResult = gContestMoves[move].effect; + gAIScriptPtr += 3; +} + +static void ContestAICmd_unk_64(void) +{ + ContestAICmd_unk_63(); + + if (eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_65(void) +{ + ContestAICmd_unk_63(); + + if (eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_66(void) +{ + ContestAICmd_unk_63(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_67(void) +{ + ContestAICmd_unk_63(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_68(void) +{ + u8 var = sub_81563B0(gAIScriptPtr[1]); + u8 var2 = gAIScriptPtr[2]; + s8 result = sContest.unk19248[var2][var]; + + eContestAI->scriptResult = result; + gAIScriptPtr += 3; +} + +static void ContestAICmd_unk_69(void) +{ + ContestAICmd_unk_68(); + + if (eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_6A(void) +{ + ContestAICmd_unk_68(); + + if (eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_6B(void) +{ + ContestAICmd_unk_68(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_6C(void) +{ + ContestAICmd_unk_68(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_6D(void) +{ + u8 var = sub_81563B0(gAIScriptPtr[1]); + u8 var2 = gAIScriptPtr[2]; + u16 move = sContest.unk19220[var2][var]; + + eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].effectType; + gAIScriptPtr += 3; +} + +static void ContestAICmd_unk_6E(void) +{ + ContestAICmd_unk_6D(); + + if (eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_6F(void) +{ + ContestAICmd_unk_6D(); + + if (eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +static void ContestAICmd_unk_70(void) +{ + eContestAI->scriptArr[gAIScriptPtr[1]] = eContestAI->scriptResult; + gAIScriptPtr += 2; +} + +static void ContestAICmd_unk_71(void) +{ + eContestAI->scriptArr[gAIScriptPtr[1]] = T1_READ_16(gAIScriptPtr + 2); + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_72(void) +{ + // wtf? shouldn't T1_READ_16 work here? why the signed 8 load by gAIScriptPtr[2]? + eContestAI->scriptArr[gAIScriptPtr[1]] += ((s8)gAIScriptPtr[2] | gAIScriptPtr[3] << 8); + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_73(void) +{ + eContestAI->scriptArr[gAIScriptPtr[1]] += eContestAI->scriptArr[gAIScriptPtr[2]]; + gAIScriptPtr += 3; +} + +static void ContestAICmd_unk_74(void) +{ + eContestAI->scriptArr[gAIScriptPtr[1]] += eContestAI->scriptArr[gAIScriptPtr[2]]; + gAIScriptPtr += 3; +} + +static void ContestAICmd_unk_75(void) +{ + if (eContestAI->scriptArr[gAIScriptPtr[1]] < T1_READ_16(gAIScriptPtr + 2)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4); + else + gAIScriptPtr += 8; +} + +static void ContestAICmd_unk_76(void) +{ + if (eContestAI->scriptArr[gAIScriptPtr[1]] > T1_READ_16(gAIScriptPtr + 2)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4); + else + gAIScriptPtr += 8; +} + +static void ContestAICmd_unk_77(void) +{ + if (eContestAI->scriptArr[gAIScriptPtr[1]] == T1_READ_16(gAIScriptPtr + 2)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4); + else + gAIScriptPtr += 8; +} + +static void ContestAICmd_unk_78(void) +{ + if (eContestAI->scriptArr[gAIScriptPtr[1]] != T1_READ_16(gAIScriptPtr + 2)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4); + else + gAIScriptPtr += 8; +} + +static void ContestAICmd_unk_79(void) +{ + if (eContestAI->scriptArr[gAIScriptPtr[1]] < (eContestAI->scriptArr[gAIScriptPtr[2]])) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3); + else + gAIScriptPtr += 7; +} + +static void ContestAICmd_unk_7A(void) +{ + if (eContestAI->scriptArr[gAIScriptPtr[1]] > (eContestAI->scriptArr[gAIScriptPtr[2]])) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3); + else + gAIScriptPtr += 7; +} + +static void ContestAICmd_unk_7B(void) +{ + if (eContestAI->scriptArr[gAIScriptPtr[1]] == (eContestAI->scriptArr[gAIScriptPtr[2]])) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3); + else + gAIScriptPtr += 7; +} + +static void ContestAICmd_unk_7C(void) +{ + if (eContestAI->scriptArr[gAIScriptPtr[1]] != (eContestAI->scriptArr[gAIScriptPtr[2]])) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3); + else + gAIScriptPtr += 7; +} + +static void ContestAICmd_unk_7D(void) +{ + if ((Random() & 0xFF) < eContestAI->scriptArr[gAIScriptPtr[1]]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +static void ContestAICmd_unk_7E(void) +{ + if ((Random() & 0xFF) > eContestAI->scriptArr[gAIScriptPtr[1]]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +// jump +static void ContestAICmd_unk_7F(void) +{ + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); +} + +static void ContestAICmd_unk_80(void) +{ + AIStackPushVar(gAIScriptPtr + 5); + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); +} + +static void ContestAICmd_unk_81(void) +{ + if (!AIStackPop()) + eContestAI->aiAction |= 1; +} + +static void AIStackPushVar(const u8 *ptr) +{ + eContestAI->stack[eContestAI->stackSize++] = ptr; +} + +static bool8 AIStackPop(void) +{ + if (eContestAI->stackSize != 0) + { + --eContestAI->stackSize; + gAIScriptPtr = eContestAI->stack[eContestAI->stackSize]; + return TRUE; + } + else + { + return FALSE; + } +} + +static void ContestAICmd_check_for_exciting_move(void) +{ + int result = 0; + int i; + + for (i = 0; i < 4; i++) + { + if (gContestMons[eContestAI->contestantId].moves[i]) + { + if (Contest_GetMoveExcitement(gContestMons[eContestAI->contestantId].moves[i]) == 1) + { + result = 1; + break; + } + } + } + + eContestAI->scriptResult = result; + gAIScriptPtr += 1; +} + +static void ContestAICmd_unk_83(void) +{ + ContestAICmd_check_for_exciting_move(); + + if (eContestAI->scriptResult != 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_84(void) +{ + ContestAICmd_check_for_exciting_move(); + + if (eContestAI->scriptResult == 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_85(void) +{ + int result = 0; + int i; + u16 arg = T1_READ_16(gAIScriptPtr + 1); + + for (i = 0; i < 4; i++) + { + u16 move = gContestMons[eContestAI->contestantId].moves[i]; + if (move == arg) + { + result = 1; + break; + } + } + + eContestAI->scriptResult = result; + gAIScriptPtr += 3; +} + +static void ContestAICmd_unk_86(void) +{ + ContestAICmd_unk_85(); + + if (eContestAI->scriptResult != 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +static void ContestAICmd_unk_87(void) +{ + ContestAICmd_unk_85(); + + if (eContestAI->scriptResult == 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} diff --git a/src/contest_effect.c b/src/contest_effect.c new file mode 100644 index 000000000..760d74d69 --- /dev/null +++ b/src/contest_effect.c @@ -0,0 +1,1080 @@ +#include "global.h" +#include "random.h" +#include "constants/moves.h" +#include "contest.h" +#include "contest_effect.h" + +static void ContestEffect_HighlyAppealing(void); +static void ContestEffect_UserMoreEasilyStartled(void); +static void ContestEffect_GreatAppealButNoMoreMoves(void); +static void ContestEffect_RepetitionNotBoring(void); +static void ContestEffect_AvoidStartleOnce(void); +static void ContestEffect_AvoidStartle(void); +static void ContestEffect_AvoidStartleSlightly(void); +static void ContestEffect_UserLessEasilyStartled(void); +static void ContestEffect_StartleFrontMon(void); +static void ContestEffect_StartlePrevMons(void); +static void ContestEffect_StartlePrevMon2(void); +static void ContestEffect_StartlePrevMons2(void); +static void ContestEffect_ShiftJudgeAttention(void); +static void ContestEffect_StartleMonWithJudgesAttention(void); +static void ContestEffect_JamsOthersButMissOneTurn(void); +static void ContestEffect_StartleMonsSameTypeAppeal(void); +static void ContestEffect_StartleMonsCoolAppeal(void); +static void ContestEffect_StartleMonsBeautyAppeal(void); +static void ContestEffect_StartleMonsCuteAppeal(void); +static void ContestEffect_StartleMonsSmartAppeal(void); +static void ContestEffect_StartleMonsToughAppeal(void); +static void ContestEffect_MakeFollowingMonNervous(void); +static void ContestEffect_MakeFollowingMonsNervous(void); +static void ContestEffect_WorsenConditionOfPrevMons(void); +static void ContestEffect_BadlyStartlesMonsInGoodCondition(void); +static void ContestEffect_BetterIfFirst(void); +static void ContestEffect_BetterIfLast(void); +static void ContestEffect_AppealAsGoodAsPrevOnes(void); +static void ContestEffect_AppealAsGoodAsPrevOne(void); +static void ContestEffect_BetterWhenLater(void); +static void ContestEffect_QualityDependsOnTiming(void); +static void ContestEffect_BetterIfSameType(void); +static void ContestEffect_BetterIfDiffType(void); +static void ContestEffect_AffectedByPrevAppeal(void); +static void ContestEffect_ImproveConditionPreventNervousness(void); +static void ContestEffect_BetterWithGoodCondition(void); +static void ContestEffect_NextAppealEarlier(void); +static void ContestEffect_NextAppealLater(void); +static void ContestEffect_MakeScramblingTurnOrderEasier(void); +static void ContestEffect_ScrambleNextTurnOrder(void); +static void ContestEffect_ExciteAudienceInAnyContest(void); +static void ContestEffect_BadlyStartleMonsWithGoodAppeals(void); +static void ContestEffect_BetterWhenAudienceExcited(void); +static void ContestEffect_DontExciteAudience(void); +static void JamByMoveCategory(u8); +static bool8 CanUnnerveContestant(u8); +static u8 WasAtLeastOneOpponentJammed(void); +static void JamContestant(u8, u8); +static s16 RoundTowardsZero(s16); +static s16 RoundUp(s16); + +#include "data/contest_moves.h" + +bool8 AreMovesContestCombo(u16 lastMove, u16 nextMove) +{ + u8 nextMoveComboMoves[4]; + u8 lastMoveComboStarterId = gContestMoves[lastMove].comboStarterId; + nextMoveComboMoves[0] = gContestMoves[nextMove].comboMoves[0]; + nextMoveComboMoves[1] = gContestMoves[nextMove].comboMoves[1]; + nextMoveComboMoves[2] = gContestMoves[nextMove].comboMoves[2]; + nextMoveComboMoves[3] = gContestMoves[nextMove].comboMoves[3]; + + if (lastMoveComboStarterId == 0) + return FALSE; + else if (lastMoveComboStarterId == nextMoveComboMoves[0] || lastMoveComboStarterId == nextMoveComboMoves[1] || lastMoveComboStarterId == nextMoveComboMoves[2] || lastMoveComboStarterId == nextMoveComboMoves[3]) + return gComboStarterLookupTable[lastMoveComboStarterId]; + else + return FALSE; +} + +// A highly appealing move. +static void ContestEffect_HighlyAppealing(void) +{ +} + +// After this move, the user is more easily startled. +static void ContestEffect_UserMoreEasilyStartled(void) +{ + sContestantStatus[shared192D0.contestant].moreEasilyStartled = TRUE; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_MORE_CONSCIOUS); +} + +// Makes a great appeal, but allows no more to the end. +static void ContestEffect_GreatAppealButNoMoreMoves(void) +{ + sContestantStatus[shared192D0.contestant].exploded = TRUE; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_NO_APPEAL); +} + +// Can be used repeatedly without boring the JUDGE. +static void ContestEffect_RepetitionNotBoring(void) +{ + sContestantStatus[shared192D0.contestant].usedRepeatableMove = TRUE; + sContestantStatus[shared192D0.contestant].disappointedRepeat = FALSE; + sContestantStatus[shared192D0.contestant].moveRepeatCount = 0; +} + +// Can avoid being startled by others once. +static void ContestEffect_AvoidStartleOnce(void) +{ + sContestantStatus[shared192D0.contestant].jamSafetyCount = 1; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_SETTLE_DOWN); +} + +// Can avoid being startled by others. +static void ContestEffect_AvoidStartle(void) +{ + sContestantStatus[shared192D0.contestant].immune = TRUE; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_OBLIVIOUS_TO_OTHERS); +} + +// Can avoid being startled by others a little. +static void ContestEffect_AvoidStartleSlightly(void) +{ + sContestantStatus[shared192D0.contestant].jamReduction = 20; + SetContestantEffectStringID(shared192D0.contestant,CONTEST_STRING_LESS_AWARE); +} + +// After this move, the user is less likely to be startled. +static void ContestEffect_UserLessEasilyStartled(void) +{ + sContestantStatus[shared192D0.contestant].resistant = TRUE; + SetContestantEffectStringID(shared192D0.contestant,CONTEST_STRING_STOPPED_CARING); +} + +// Slightly startles the POKMON in front. +static void ContestEffect_StartleFrontMon(void) +{ + u8 idx = 0; + u8 a = shared192D0.contestant; + + if (shared192D0.turnOrder[a] != 0) { + int i; + + for (i = 0; i < 4; i++) + { + if (shared192D0.turnOrder[a] - 1 == shared192D0.turnOrder[i]) + break; + } + shared192D0.jamQueue[0] = i; + shared192D0.jamQueue[1] = 0xFF; + idx = WasAtLeastOneOpponentJammed(); + } + if (idx == 0) + SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2); + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE); +} + +// Slightly startles those that have made appeals. +static void ContestEffect_StartlePrevMons(void) +{ + u8 idx = 0; + u8 a = shared192D0.contestant; + + if (shared192D0.turnOrder[a] != 0) + { + int i, j; + + for (i = 0, j = 0; i < 4; i++) + { + if (shared192D0.turnOrder[a] > shared192D0.turnOrder[i]) + shared192D0.jamQueue[j++] = i; + } + + shared192D0.jamQueue[j] = 0xFF; + idx = WasAtLeastOneOpponentJammed(); + } + if (idx == 0) + SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2); + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE); +} + +// Startles the POKMON 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 POKMON that appealed before the user. +static void ContestEffect_StartlePrevMons2(void) +{ + u8 numStartled = 0; + u8 contestant = shared192D0.contestant; + u8 turnOrder = shared192D0.turnOrder[contestant]; + + if (turnOrder != 0) + { + int i; + + for (i = 0; i < 4; i++) + { + if (shared192D0.turnOrder[contestant] > shared192D0.turnOrder[i]) + { + u8 rval, jam; + + shared192D0.jamQueue[0] = i; + shared192D0.jamQueue[1] = 0xFF; + rval = Random() % 10; + + if (rval == 0) + jam = 0; + else if (rval <= 2) + jam = 10; + else if (rval <= 4) + jam = 20; + else if (rval <= 6) + jam = 30; + else if (rval <= 8) + jam = 40; + else + jam = 60; + + shared192D0.jam = jam; + + if (WasAtLeastOneOpponentJammed()) + numStartled++; + } + } + } + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE); + if (numStartled == 0) + SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2); +} + +// Shifts the JUDGEs 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 POKMON that has the JUDGEs 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 POKMON 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 POKMON that made COOL appeals. +static void ContestEffect_StartleMonsCoolAppeal(void) +{ + JamByMoveCategory(CONTEST_CATEGORY_COOL); + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE); +} + +// Badly startles POKMON that made BEAUTY appeals. +static void ContestEffect_StartleMonsBeautyAppeal(void) +{ + JamByMoveCategory(CONTEST_CATEGORY_BEAUTY); + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE); +} + +// Badly startles POKMON that made CUTE appeals. +static void ContestEffect_StartleMonsCuteAppeal(void) +{ + JamByMoveCategory(CONTEST_CATEGORY_CUTE); + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE); +} + +// Badly startles POKMON that made SMART appeals. +static void ContestEffect_StartleMonsSmartAppeal(void) +{ + JamByMoveCategory(CONTEST_CATEGORY_SMART); + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE); +} + +// Badly startles POKMON that made TOUGH appeals. +static void ContestEffect_StartleMonsToughAppeal(void) +{ + JamByMoveCategory(CONTEST_CATEGORY_TOUGH); + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE); +} + +// Makes one POKMON 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 POKMON 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 POKMON 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 appeals quality varies depending on its timing. +static void ContestEffect_QualityDependsOnTiming(void) +{ + u8 rval = Random() % 10; + s16 appeal; + + if (rval < 3) + { + appeal = 10; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_NOT_VERY_WELL); + } else if (rval < 6) + { + appeal = 20; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_SLIGHTLY_WELL2); + } else if (rval < 8) + { + appeal = 40; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_PRETTY_WELL2); + } else if (rval < 9) + { + appeal = 60; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_VERY_WELL); + } + else + { + appeal = 80; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_EXCELLENTLY2); + } + sContestantStatus[shared192D0.contestant].appeal2 = appeal; +} + +static void ContestEffect_BetterIfSameType(void) +{ + s8 turnOrder = shared192D0.turnOrder[shared192D0.contestant]; + s8 i = turnOrder - 1, j; + u16 move; + + if (turnOrder == 0) + return; + + while (1) + { + for (j = 0; j < 4; j++) + { + if (shared192D0.turnOrder[j] == i) + break; + } + if (sContestantStatus[j].noMoreTurns || sContestantStatus[j].nervous || sContestantStatus[j].numTurnsSkipped) + { + if (--i < 0) + return; + } + else + { + break; + } + } + + move = sContestantStatus[shared192D0.contestant].currMove; + if (gContestMoves[move].contestCategory == gContestMoves[sContestantStatus[j].currMove].contestCategory) + { + sContestantStatus[shared192D0.contestant].appeal2 += gContestEffects[gContestMoves[move].effect].appeal * 2; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_SAME_TYPE_GOOD); + } +} + +// Works well if different in type than the one before. +static void ContestEffect_BetterIfDiffType(void) +{ + if (shared192D0.turnOrder[shared192D0.contestant] != 0) + { + u16 move = sContestantStatus[shared192D0.contestant].currMove; + int i; + + for (i = 0; i < 4; i++) + { + if (shared192D0.turnOrder[shared192D0.contestant] - 1 == shared192D0.turnOrder[i] && + gContestMoves[move].contestCategory != gContestMoves[sContestantStatus[i].currMove].contestCategory) + { + sContestantStatus[shared192D0.contestant].appeal2 += gContestEffects[gContestMoves[move].effect].appeal * 2; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_DIFF_TYPE_GOOD); + break; + } + } + } +} + +// Affected by how well the appeal in front goes. +static void ContestEffect_AffectedByPrevAppeal(void) +{ + if (shared192D0.turnOrder[shared192D0.contestant] != 0) + { + int i; + + for (i = 0; i < 4; i++) + { + if (shared192D0.turnOrder[shared192D0.contestant] - 1 == shared192D0.turnOrder[i]) + { + if (sContestantStatus[shared192D0.contestant].appeal2 > sContestantStatus[i].appeal2) + { + sContestantStatus[shared192D0.contestant].appeal2 *= 2; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_STOOD_OUT_AS_MUCH); + } + else if (sContestantStatus[shared192D0.contestant].appeal2 < sContestantStatus[i].appeal2) + { + sContestantStatus[shared192D0.contestant].appeal2 = 0; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_NOT_AS_WELL); + } + } + } + } +} + +// Ups the users 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 users 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 turns 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 POKMON that made good appeals. +static void ContestEffect_BadlyStartleMonsWithGoodAppeals(void) +{ + int i; + u8 numJammed = 0; + + for (i = 0; i < 4; i++) + { + if (shared192D0.turnOrder[shared192D0.contestant] > shared192D0.turnOrder[i]) + { + if (sContestantStatus[i].appeal2 > 0) + { + shared192D0.jam = sContestantStatus[i].appeal2 / 2; + shared192D0.jam = RoundUp(shared192D0.jam); + } + else + shared192D0.jam = 10; + shared192D0.jamQueue[0] = i; + shared192D0.jamQueue[1] = 0xFF; + if (WasAtLeastOneOpponentJammed()) + numJammed++; + } + } + if (numJammed == 0) + SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2); + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE); +} + +// The appeal works best the more the crowd is excited. +static void ContestEffect_BetterWhenAudienceExcited(void) +{ + s16 appeal; + + if (sContest.applauseLevel == 0) + { + appeal = 10; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_NOT_VERY_WELL); + } + else if (sContest.applauseLevel == 1) + { + appeal = 20; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_SLIGHTLY_WELL2); + } + else if (sContest.applauseLevel == 2) + { + appeal = 30; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_PRETTY_WELL2); + } + else if (sContest.applauseLevel == 3) + { + appeal = 50; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_VERY_WELL); + } + else + { + appeal = 60; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_EXCELLENTLY2); + } + sContestantStatus[shared192D0.contestant].appeal2 = appeal; +} + +// Temporarily stops the crowd from growing excited. +static void ContestEffect_DontExciteAudience(void) +{ + if (!shared19328.excitementFrozen) + { + shared19328.excitementFrozen = TRUE; + shared19328.excitementFreezer = shared192D0.contestant; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTRACTED_ATTENTION); + } +} + +static void JamByMoveCategory(u8 category) +{ + int i; + int numJammed = 0; + + for (i = 0; i < 4; i++) + { + if (shared192D0.turnOrder[shared192D0.contestant] > shared192D0.turnOrder[i]) + { + if (category == gContestMoves[sContestantStatus[i].currMove].contestCategory) + shared192D0.jam = 40; + else + shared192D0.jam = 10; + shared192D0.jamQueue[0] = i; + shared192D0.jamQueue[1] = 0xFF; + if (WasAtLeastOneOpponentJammed()) + numJammed++; + } + } + + if (numJammed == 0) + SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2); +} + +static bool8 CanUnnerveContestant(u8 i) +{ + shared192D0.unnervedPokes[i] = 1; + if (sContestantStatus[i].immune) + { + SetContestantEffectStringID(i, CONTEST_STRING_AVOID_SEEING); + return FALSE; + } + else if (sContestantStatus[i].jamSafetyCount != 0) + { + sContestantStatus[i].jamSafetyCount--; + SetContestantEffectStringID(i, CONTEST_STRING_AVERT_GAZE); + return FALSE; + } + else if (!sContestantStatus[i].noMoreTurns && sContestantStatus[i].numTurnsSkipped == 0) + { + return TRUE; + } + else + { + return FALSE; + } +} + +static bool8 WasAtLeastOneOpponentJammed(void) +{ + s16 jamBuffer[4] = {0}; + int i; + + for (i = 0; shared192D0.jamQueue[i] != 0xFF; i++) + { + u8 contestant = shared192D0.jamQueue[i]; + if (CanUnnerveContestant(contestant)) + { + shared192D0.jam2 = shared192D0.jam; + if (sContestantStatus[contestant].moreEasilyStartled) + shared192D0.jam2 *= 2; + if (sContestantStatus[contestant].resistant) + { + shared192D0.jam2 = 10; + SetContestantEffectStringID(contestant, CONTEST_STRING_LITTLE_DISTRACTED); + } + else + { + shared192D0.jam2 -= sContestantStatus[contestant].jamReduction; + if (shared192D0.jam2 <= 0) + { + shared192D0.jam2 = 0; + SetContestantEffectStringID(contestant, CONTEST_STRING_NOT_FAZED); + } + else + { + JamContestant(contestant, shared192D0.jam2); + SetStartledString(contestant, shared192D0.jam2); + jamBuffer[contestant] = shared192D0.jam2; + } + } + } + } + + for (i = 0; i < 4; i++) + { + if (jamBuffer[i] != 0) + return TRUE; + } + return FALSE; +} + +static void JamContestant(u8 i, u8 jam) +{ + sContestantStatus[i].appeal2 -= jam; + sContestantStatus[i].jam += jam; +} + +static s16 RoundTowardsZero(s16 score) +{ + s16 absScore = abs(score) % 10; + if (score < 0) + { + if (absScore != 0) + score -= 10 - absScore; + } + else + score -= absScore; + return score; +} + +static s16 RoundUp(s16 score) +{ + s16 absScore = abs(score) % 10; + if (absScore != 0) + score += 10 - absScore; + return score; +} diff --git a/src/credits.c b/src/credits.c index 168f3e8a3..cbf77f1b3 100644 --- a/src/credits.c +++ b/src/credits.c @@ -12,7 +12,7 @@ #include "gpu_regs.h" #include "m4a.h" #include "constants/rgb.h" -#include "battle_dome_cards.h" +#include "trainer_pokemon_sprites.h" #include "starter_choose.h" #include "decompress.h" #include "intro_credits_graphics.h" @@ -948,7 +948,15 @@ static const struct BgTemplate gUnknown_085E6F68[] = }; static const struct WindowTemplate gUnknown_085E6F6C[] = { - { 0x00, 0x00, 0x09, 0x1E, 0x0C, 0x08, 0x0001 }, + { + .priority = 0, + .tilemapLeft = 0, + .tilemapTop = 9, + .width = 30, + .height = 12, + .paletteNum = 8, + .baseBlock = 1 + }, DUMMY_WIN_TEMPLATE, }; static const u8 gUnknown_085E6F7C[][2] = @@ -1197,7 +1205,6 @@ void sub_8175620(void) u8 taskIdA; s16 taskIdC; u8 taskIdB; - u16 savedIme; sub_8175CE4(); SetVBlankCallback(NULL); @@ -1333,7 +1340,7 @@ static void sub_81758E4(u8 taskIdA) u16 *temp; ResetSpriteData(); - dp13_810BB8C(); + ResetAllPicSprites(); FreeAllSpritePalettes(); gReservedSpritePaletteCount = 8; LZ77UnCompVram(&gBirchHelpGfx, (void *)VRAM); @@ -2164,7 +2171,7 @@ static void sub_8177050(struct Sprite *sprite) { if (gUnknown_0203BD28) { - sub_818D820(sprite->data[6]); + FreeAndDestroyMonPicSprite(sprite->data[6]); return; } @@ -2242,7 +2249,7 @@ static void sub_8177050(struct Sprite *sprite) case 10: SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_BLDALPHA, 0); - sub_818D820(sprite->data[6]); + FreeAndDestroyMonPicSprite(sprite->data[6]); break; } } @@ -2285,7 +2292,7 @@ static void sub_81772B8(struct Sprite *sprite) static void sub_8177388(void) { - u16 starter = SpeciesToNationalPokedexNum(GetStarterPokemon(VarGet(VAR_FIRST_POKE))); + u16 starter = SpeciesToNationalPokedexNum(GetStarterPokemon(VarGet(VAR_STARTER_MON))); u16 page; u16 dexNum; u16 j; diff --git a/src/data/bard_music/actions.h b/src/data/bard_music/actions.h new file mode 100644 index 000000000..fd8e63061 --- /dev/null +++ b/src/data/bard_music/actions.h @@ -0,0 +1,630 @@ +#ifndef GUARD_DATA_BARD_MUSIC_ACTIONS_H +#define GUARD_DATA_BARD_MUSIC_ACTIONS_H +const struct BardSound gBardSounds_Actions[][6] = { + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x10, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x10, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x4, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x8, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xd, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xd, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1d, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x2f, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2f, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2f, 0x0, 0x0, 0x0, 0x0 }, + { 0xa, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2f, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0xd, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x29, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x23, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0xa, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xd, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0xa, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + } +}; + +#endif // GUARD_DATA_BARD_MUSIC_ACTIONS_H diff --git a/src/data/bard_music/adjectives.h b/src/data/bard_music/adjectives.h new file mode 100644 index 000000000..e56efaa24 --- /dev/null +++ b/src/data/bard_music/adjectives.h @@ -0,0 +1,294 @@ +#ifndef GUARD_DATA_BARD_MUSIC_ADJECTIVES_H +#define GUARD_DATA_BARD_MUSIC_ADJECTIVES_H +const struct BardSound gBardSounds_Adjectives[][6] = { + { + { 0x1d, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x24, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x8, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2d, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1d, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x1e, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x1d, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 } + } +}; + +#endif // GUARD_DATA_BARD_MUSIC_ADJECTIVES_H diff --git a/src/data/bard_music/bard_sounds.h b/src/data/bard_music/bard_sounds.h new file mode 100644 index 000000000..4a0911726 --- /dev/null +++ b/src/data/bard_music/bard_sounds.h @@ -0,0 +1,52 @@ +#ifndef GUARD_BARD_SOUNDS_TABLE_H +#define GUARD_BARD_SOUNDS_TABLE_H + +#define NULL_BARD_SOUND { 0xff } + +#include "pokemon.h" +#include "moves.h" +#include "trainer.h" +#include "status.h" +#include "battle.h" +#include "greetings.h" +#include "people.h" +#include "voices.h" +#include "speech.h" +#include "endings.h" +#include "feelings.h" +#include "conditions.h" +#include "actions.h" +#include "lifestyle.h" +#include "hobbies.h" +#include "time.h" +#include "misc.h" +#include "adjectives.h" +#include "events.h" +#include "trendysaying.h" + +const struct BardSound (*const gBardSoundsTable[])[6] = { + NULL, + gBardSounds_Trainer, + gBardSounds_Status, + gBardSounds_Battle, + gBardSounds_Greetings, + gBardSounds_People, + gBardSounds_Voices, + gBardSounds_Speech, + gBardSounds_Endings, + gBardSounds_Feelings, + gBardSounds_Conditions, + gBardSounds_Actions, + gBardSounds_Lifestyle, + gBardSounds_Hobbies, + gBardSounds_Time, + gBardSounds_Misc, + gBardSounds_Adjectives, + gBardSounds_Events, + NULL, + NULL, + gBardSounds_TrendySaying, + NULL +}; + +#endif //GUARD_BARD_SOUNDS_TABLE_H diff --git a/src/data/bard_music/battle.h b/src/data/bard_music/battle.h new file mode 100644 index 000000000..19d032f56 --- /dev/null +++ b/src/data/bard_music/battle.h @@ -0,0 +1,510 @@ +#ifndef GUARD_DATA_BARD_MUSIC_BATTLE_H +#define GUARD_DATA_BARD_MUSIC_BATTLE_H +const struct BardSound gBardSounds_Battle[][6] = { + { + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x17, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x8, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x1, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x17, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x15, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x23, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1, 0x0, 0x0, 0x0, 0x0 }, + { 0xa, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x29, 0x0, 0x0, 0x0, 0x0 }, + { 0x1d, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1e, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x17, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x16, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x8, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x15, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x24, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x29, 0x0, 0x0, 0x0, 0x0 }, + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x29, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + } +}; + +#endif // GUARD_DATA_BARD_MUSIC_BATTLE_H diff --git a/src/data/bard_music/conditions.h b/src/data/bard_music/conditions.h new file mode 100644 index 000000000..d79cc100b --- /dev/null +++ b/src/data/bard_music/conditions.h @@ -0,0 +1,558 @@ +#ifndef GUARD_DATA_BARD_MUSIC_CONDITIONS_H +#define GUARD_DATA_BARD_MUSIC_CONDITIONS_H +const struct BardSound gBardSounds_Conditions[][6] = { + { + { 0x15, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x29, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x29, 0x0, 0x0, 0x0, 0x0 }, + { 0xa, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x20, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x19, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x17, 0x0, 0x0, 0x0, 0x0 }, + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND + }, + { + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xa, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x23, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0xa, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x1e, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xa, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0xa, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x1d, 0x0, 0x0, 0x0, 0x0 }, + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1d, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x17, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x17, 0x0, 0x0, 0x0, 0x0 }, + { 0x16, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x16, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x29, 0x0, 0x0, 0x0, 0x0 }, + { 0x1c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x8, 0x0, 0x0, 0x0, 0x0 }, + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x21, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xd, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + } +}; + +#endif // GUARD_DATA_BARD_MUSIC_CONDITIONS_H diff --git a/src/data/bard_music/default_sound.h b/src/data/bard_music/default_sound.h new file mode 100644 index 000000000..ad4008e16 --- /dev/null +++ b/src/data/bard_music/default_sound.h @@ -0,0 +1,13 @@ +#ifndef GUARD_default_sound_H +#define GUARD_default_sound_H + +const struct BardSound gBardSound_InvalidWord[] = { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND +}; + +#endif //GUARD_default_sound_H diff --git a/src/data/bard_music/endings.h b/src/data/bard_music/endings.h new file mode 100644 index 000000000..7e4304521 --- /dev/null +++ b/src/data/bard_music/endings.h @@ -0,0 +1,558 @@ +#ifndef GUARD_DATA_BARD_MUSIC_ENDINGS_H +#define GUARD_DATA_BARD_MUSIC_ENDINGS_H +const struct BardSound gBardSounds_Endings[][6] = { + { + { 0x10, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x10, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x10, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x17, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x4, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x23, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1d, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x21, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x23, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + } +}; + +#endif // GUARD_DATA_BARD_MUSIC_ENDINGS_H diff --git a/src/data/bard_music/events.h b/src/data/bard_music/events.h new file mode 100644 index 000000000..70960e15d --- /dev/null +++ b/src/data/bard_music/events.h @@ -0,0 +1,238 @@ +#ifndef GUARD_DATA_BARD_MUSIC_EVENTS_H +#define GUARD_DATA_BARD_MUSIC_EVENTS_H +const struct BardSound gBardSounds_Events[][6] = { + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1d, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2b, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x15, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x4, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x21, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x4, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xa, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x1d, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + } +}; + +#endif // GUARD_DATA_BARD_MUSIC_EVENTS_H diff --git a/src/data/bard_music/feelings.h b/src/data/bard_music/feelings.h new file mode 100644 index 000000000..cdab88639 --- /dev/null +++ b/src/data/bard_music/feelings.h @@ -0,0 +1,558 @@ +#ifndef GUARD_DATA_BARD_MUSIC_FEELINGS_H +#define GUARD_DATA_BARD_MUSIC_FEELINGS_H +const struct BardSound gBardSounds_Feelings[][6] = { + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x4, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x19, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x17, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x1e, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x20, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x31, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xd, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x31, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x8, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x20, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x20, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x8, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x21, 0x0, 0x0, 0x0, 0x0 }, + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x31, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x31, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x20, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x20, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1d, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x29, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x4, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + } +}; + +#endif // GUARD_DATA_BARD_MUSIC_FEELINGS_H diff --git a/src/data/bard_music/greetings.h b/src/data/bard_music/greetings.h new file mode 100644 index 000000000..22af4dd5c --- /dev/null +++ b/src/data/bard_music/greetings.h @@ -0,0 +1,342 @@ +#ifndef GUARD_DATA_BARD_MUSIC_GREETINGS_H +#define GUARD_DATA_BARD_MUSIC_GREETINGS_H +const struct BardSound gBardSounds_Greetings[][6] = { + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x17, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x17, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1e, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x21, 0x0, 0x0, 0x0, 0x0 }, + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x17, 0x0, 0x0, 0x0, 0x0 }, + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x10, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x4, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1d, 0x0, 0x0, 0x0, 0x0 }, + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x28, 0x0, 0x0, 0x0, 0x0 }, + { 0xd, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x4, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x2b, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xa, 0x0, 0x0, 0x0, 0x0 }, + { 0xa, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xd, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x1, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x23, 0x0, 0x0, 0x0, 0x0 }, + { 0x17, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + } +}; + +#endif // GUARD_DATA_BARD_MUSIC_GREETINGS_H diff --git a/src/data/bard_music/hobbies.h b/src/data/bard_music/hobbies.h new file mode 100644 index 000000000..66fdbc0c7 --- /dev/null +++ b/src/data/bard_music/hobbies.h @@ -0,0 +1,438 @@ +#ifndef GUARD_DATA_BARD_MUSIC_HOBBIES_H +#define GUARD_DATA_BARD_MUSIC_HOBBIES_H +const struct BardSound gBardSounds_Hobbies[][6] = { + { + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x17, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + { 0x4, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1e, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2f, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x17, 0x0, 0x0, 0x0, 0x0 }, + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x15, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2f, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x15, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x17, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x17, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xa, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x1d, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x21, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x8, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1d, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x1d, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + } +}; + +#endif // GUARD_DATA_BARD_MUSIC_HOBBIES_H diff --git a/src/data/bard_music/length_table.h b/src/data/bard_music/length_table.h new file mode 100644 index 000000000..144c70dfc --- /dev/null +++ b/src/data/bard_music/length_table.h @@ -0,0 +1,21 @@ +#ifndef GUARD_LENGTH_TABLE_H +#define GUARD_LENGTH_TABLE_H + +const int gBardSoundLengthTable[] = { + 0x09, 0x16, 0x0f, 0x10, + 0x27, 0x15, 0x09, 0x1e, + 0x18, 0x0f, 0x19, 0x0c, + 0x16, 0x2d, 0x18, 0x0f, + 0x28, 0x09, 0x15, 0x2a, + 0x12, 0x09, 0x16, 0x0f, + 0x1b, 0x30, 0x12, 0x1b, + 0x21, 0x18, 0x19, 0x27, + 0x13, 0x10, 0x36, 0x12, + 0x09, 0x2d, 0x0f, 0x0c, + 0x27, 0x17, 0x05, 0x2d, + 0x0c, 0x15, 0x30, 0x0c, + 0x15, 0x45, 0x12, 0x0f +}; + + +#endif //GUARD_LENGTH_TABLE_H diff --git a/src/data/bard_music/lifestyle.h b/src/data/bard_music/lifestyle.h new file mode 100644 index 000000000..7054283f4 --- /dev/null +++ b/src/data/bard_music/lifestyle.h @@ -0,0 +1,366 @@ +#ifndef GUARD_DATA_BARD_MUSIC_LIFESTYLE_H +#define GUARD_DATA_BARD_MUSIC_LIFESTYLE_H +const struct BardSound gBardSounds_Lifestyle[][6] = { + { + { 0x31, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x23, 0x0, 0x0, 0x0, 0x0 }, + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND + }, + { + { 0x29, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x1d, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1d, 0x0, 0x0, 0x0, 0x0 }, + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1c, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x24, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1d, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x17, 0x0, 0x0, 0x0, 0x0 }, + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x24, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + } +}; + +#endif // GUARD_DATA_BARD_MUSIC_LIFESTYLE_H diff --git a/src/data/bard_music/misc.h b/src/data/bard_music/misc.h new file mode 100644 index 000000000..84e1d5530 --- /dev/null +++ b/src/data/bard_music/misc.h @@ -0,0 +1,342 @@ +#ifndef GUARD_DATA_BARD_MUSIC_MISC_H +#define GUARD_DATA_BARD_MUSIC_MISC_H +const struct BardSound gBardSounds_Misc[][6] = { + { + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2b, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x21, 0x0, 0x0, 0x0, 0x0 }, + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x21, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x10, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2b, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x4, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x10, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1, 0x0, 0x0, 0x0, 0x0 }, + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x2e, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1d, 0x0, 0x0, 0x0, 0x0 }, + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + } +}; + +#endif // GUARD_DATA_BARD_MUSIC_MISC_H diff --git a/src/data/bard_music/moves.h b/src/data/bard_music/moves.h new file mode 100644 index 000000000..6bb350a7c --- /dev/null +++ b/src/data/bard_music/moves.h @@ -0,0 +1,2851 @@ +#ifndef GUARD_DATA_BARD_MUSIC_MOVES_H +#define GUARD_DATA_BARD_MUSIC_MOVES_H + +#include "moves.h" + +const u16 gUnknown_085FA1D4 = 0x163; + +const struct BardSound gBardSounds_Moves[][6] = { + { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x21, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0xa, 0x0, 0x0, 0x0, 0x0}, + { 0x2, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + { 0xb, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0}, + { 0x5, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x14, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x1, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x14, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x2, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x24, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x23, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x2, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x24, 0x0, 0x0, 0x0, 0x0}, + { 0xa, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1e, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x24, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x24, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x21, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x24, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + { 0x32, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x32, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x24, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0xb, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0xb, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x21, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x32, 0x0, 0x0, 0x0, 0x0}, + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1e, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x21, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x21, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x2, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x32, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x5, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x5, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x5, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x32, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x29, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0xe, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x5, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0xd, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x2d, 0x0, 0x0, 0x0, 0x0}, + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0xb, 0x0, 0x0, 0x0, 0x0}, + { 0x32, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0}, + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0xb, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0}, + { 0x32, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x32, 0x0, 0x0, 0x0, 0x0}, + { 0x29, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x14, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0}, + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x1e, 0x0, 0x0, 0x0, 0x0}, + { 0xb, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1e, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x24, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x1, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x24, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x24, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x5, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x24, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x21, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x3, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2b, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x28, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x1, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x14, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0xf, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x21, 0x0, 0x0, 0x0, 0x0}, + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x15, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x21, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0xd, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x24, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0xa, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0xb, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0xf, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0xb, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x5, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x24, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x24, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0xf, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x21, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x5, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x21, 0x0, 0x0, 0x0, 0x0}, + { 0x32, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x21, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x14, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x15, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x21, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x21, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x24, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x5, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x21, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x4, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x32, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x1e, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1e, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0} + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0xe, 0x0, 0x0, 0x0, 0x0} + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0xf, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x21, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x24, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x24, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x21, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x21, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x3, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x21, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x21, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1e, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x5, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x24, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x24, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x5, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + } +}; + +#endif //GUARD_DATA_BARD_MUSIC_MOVES_H diff --git a/src/data/bard_music/people.h b/src/data/bard_music/people.h new file mode 100644 index 000000000..2db017080 --- /dev/null +++ b/src/data/bard_music/people.h @@ -0,0 +1,606 @@ +#ifndef GUARD_DATA_BARD_MUSIC_PEOPLE_H +#define GUARD_DATA_BARD_MUSIC_PEOPLE_H +const struct BardSound gBardSounds_People[][6] = { + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x13, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2d, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, -0x9, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2d, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1, 0x0, 0x0, 0x0, 0x0 }, + { 0x8, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x8, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1e, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x24, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x15, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x7, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xd, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x4, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x10, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0xa, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0xd, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x29, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x29, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x10, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x10, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x1d, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x28, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x31, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x31, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x21, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x24, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x2b, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x10, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x1, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + } +}; + +#endif // GUARD_DATA_BARD_MUSIC_PEOPLE_H diff --git a/src/data/bard_music/pokemon.h b/src/data/bard_music/pokemon.h new file mode 100644 index 000000000..693005360 --- /dev/null +++ b/src/data/bard_music/pokemon.h @@ -0,0 +1,3306 @@ +#ifndef GUARD_DATA_BARD_MUSIC_POKEMON_H +#define GUARD_DATA_BARD_MUSIC_POKEMON_H +#include "constants/species.h" + +const u16 gUnknown_085F5490 = NUM_SPECIES; + +const struct BardSound gBardSounds_Pokemon[][6] = { + { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x24, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x14, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x32, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0}, + { 0x2, 0x0, 0x0, 0x0, 0x0}, + { 0x32, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x15, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x32, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x24, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x8, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x24, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x1e, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x15, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x26, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x15, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x3, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0}, + { 0x17, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0xb, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x24, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x24, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x5, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x15, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x14, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x15, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x21, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x32, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x21, 0x0, 0x0, 0x0, 0x0}, + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0}, + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x15, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x15, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x15, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x15, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0}, + { 0x21, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0xb, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0}, + { 0xb, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x15, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1e, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x15, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x8, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x15, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x21, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x32, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND + }, + { + { 0x2d, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x15, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x15, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x15, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x14, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x15, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x15, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x15, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x15, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x15, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x15, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x15, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x15, 0x0, 0x0, 0x0, 0x0}, + { 0xb, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x15, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2d, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2d, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x6, 0x0, 0x0, 0x0, 0x0}, + { 0x8, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x21, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x21, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x6, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x8, 0x0, 0x0, 0x0, 0x0}, + { 0x10, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x8, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x10, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x32, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x1c, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x32, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x26, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x26, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x3, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x23, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x21, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x26, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x15, 0x0, 0x0, 0x0, 0x0}, + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0}, + { 0xb, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x15, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x15, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x14, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x24, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x28, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2d, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x17, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x6, 0x0, 0x0, 0x0, 0x0}, + { 0x6, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x24, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1, 0x0, 0x0, 0x0, 0x0}, + { 0x1e, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0xb, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x1, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0xb, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1e, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x24, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x26, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x24, 0x0, 0x0, 0x0, 0x0}, + { 0xf, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x21, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x21, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x32, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x5, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x2c, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x1d, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x1a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x27, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x3, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x7, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0xe, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x30, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x21, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x3, 0x0, 0x0, 0x0, 0x0}, + { 0x2a, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0}, + { 0x1b, 0x0, 0x0, 0x0, 0x0}, + { 0x11, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0}, + { 0x9, 0x0, 0x0, 0x0, 0x0}, + { 0x18, 0x0, 0x0, 0x0, 0x0}, + { 0x33, 0x0, 0x0, 0x0, 0x0}, + NULL_BARD_SOUND, + NULL_BARD_SOUND + } +}; + +#endif //GUARD_DATA_BARD_MUSIC_POKEMON_H diff --git a/src/data/bard_music/speech.h b/src/data/bard_music/speech.h new file mode 100644 index 000000000..d0d4abb11 --- /dev/null +++ b/src/data/bard_music/speech.h @@ -0,0 +1,486 @@ +#ifndef GUARD_DATA_BARD_MUSIC_SPEECH_H +#define GUARD_DATA_BARD_MUSIC_SPEECH_H +const struct BardSound gBardSounds_Speech[][6] = { + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x10, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x15, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xa, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2b, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x21, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2b, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x21, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x17, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x2d, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xa, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x15, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xa, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x23, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0x23, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x1, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0xa, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x7, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x10, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x28, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x8, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2b, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + } +}; + +#endif // GUARD_DATA_BARD_MUSIC_SPEECH_H diff --git a/src/data/bard_music/status.h b/src/data/bard_music/status.h new file mode 100644 index 000000000..418fe639a --- /dev/null +++ b/src/data/bard_music/status.h @@ -0,0 +1,878 @@ +#ifndef GUARD_DATA_BARD_MUSIC_STATUS_H +#define GUARD_DATA_BARD_MUSIC_STATUS_H +const struct BardSound gBardSounds_Status[][6] = { + { + { 0x8, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x15, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x1, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND + }, + { + { 0x15, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x24, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x15, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x29, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x29, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2d, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2d, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x17, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x15, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x8, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x21, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2d, 0x0, 0x0, 0x0, 0x0 }, + { 0x21, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x24, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x20, 0x0, 0x0, 0x0, 0x0 }, + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x20, 0x0, 0x0, 0x0, 0x0 }, + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0x1e, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1, 0x0, 0x0, 0x0, 0x0 }, + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x4, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x8, 0x0, 0x0, 0x0, 0x0 }, + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x21, 0x0, 0x0, 0x0, 0x0 }, + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x21, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x15, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x15, 0x0, 0x0, 0x0, 0x0 }, + { 0x21, 0x0, 0x0, 0x0, 0x0 }, + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x24, 0x0, 0x0, 0x0, 0x0 }, + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x15, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x17, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x21, 0x0, 0x0, 0x0, 0x0 }, + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x15, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x4, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x7, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2d, 0x0, 0x0, 0x0, 0x0 }, + { 0x7, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2d, 0x0, 0x0, 0x0, 0x0 }, + { 0x21, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x2b, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + } +}; + +#endif // GUARD_DATA_BARD_MUSIC_STATUS_H diff --git a/src/data/bard_music/time.h b/src/data/bard_music/time.h new file mode 100644 index 000000000..5755353a0 --- /dev/null +++ b/src/data/bard_music/time.h @@ -0,0 +1,366 @@ +#ifndef GUARD_DATA_BARD_MUSIC_TIME_H +#define GUARD_DATA_BARD_MUSIC_TIME_H +const struct BardSound gBardSounds_Time[][6] = { + { + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x1c, 0x0, 0x0, 0x0, 0x0 }, + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xa, 0x0, 0x0, 0x0, 0x0 }, + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x28, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x17, 0x0, 0x0, 0x0, 0x0 }, + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1d, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x21, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x24, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0xa, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + } +}; + +#endif // GUARD_DATA_BARD_MUSIC_TIME_H diff --git a/src/data/bard_music/trainer.h b/src/data/bard_music/trainer.h new file mode 100644 index 000000000..a59689b6c --- /dev/null +++ b/src/data/bard_music/trainer.h @@ -0,0 +1,222 @@ +#ifndef GUARD_DATA_BARD_MUSIC_TRAINER_H +#define GUARD_DATA_BARD_MUSIC_TRAINER_H +const struct BardSound gBardSounds_Trainer[][6] = { + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x2d, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x15, 0x0, 0x0, 0x0, 0x0 }, + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x6, 0x0, 0x0, 0x0, 0x0 } + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x8, 0x0, 0x0, 0x0, 0x0 }, + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 } + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x32, 0x0, 0x0, 0x0, 0x0 }, + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + } +}; + +#endif // GUARD_DATA_BARD_MUSIC_TRAINER_H diff --git a/src/data/bard_music/trendysaying.h b/src/data/bard_music/trendysaying.h new file mode 100644 index 000000000..4830725ad --- /dev/null +++ b/src/data/bard_music/trendysaying.h @@ -0,0 +1,270 @@ +#ifndef GUARD_DATA_BARD_MUSIC_TRENDYSAYING_H +#define GUARD_DATA_BARD_MUSIC_TRENDYSAYING_H +const struct BardSound gBardSounds_TrendySaying[][6] = { + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x14, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0x1b, 0x0, 0x0, 0x0, 0x0 }, + { 0x17, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x26, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xd, 0x0, 0x0, 0x0, 0x0 }, + { 0x1d, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x1, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1d, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xa, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x3, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1d, 0x0, 0x0, 0x0, 0x0 }, + { 0x23, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x24, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1d, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2b, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + } +}; + +#endif // GUARD_DATA_BARD_MUSIC_TRENDYSAYING_H diff --git a/src/data/bard_music/voices.h b/src/data/bard_music/voices.h new file mode 100644 index 000000000..868ebaecf --- /dev/null +++ b/src/data/bard_music/voices.h @@ -0,0 +1,510 @@ +#ifndef GUARD_DATA_BARD_MUSIC_VOICES_H +#define GUARD_DATA_BARD_MUSIC_VOICES_H +const struct BardSound gBardSounds_Voices[][6] = { + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1b, 0x5, 0x8, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x31, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x28, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x19, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1c, 0x0, 0x0, 0x0, 0x0 }, + { 0x31, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x23, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + { 0x11, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xa, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x2, 0x0, 0x0, 0x0, 0x0 }, + { 0x24, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND + }, + { + { 0x13, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x12, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1e, 0x0, 0x0, 0x0, 0x0 }, + { 0x1e, 0x0, 0x0, 0x0, 0x0 }, + { 0x1e, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x1, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x17, 0x0, 0x0, 0x0, 0x0 }, + { 0xb, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xd, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x17, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x5, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x13, 0x0, 0x0, 0x0, 0x0 }, + { 0xd, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0x7, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + { 0xc, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x9, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x2a, 0x0, 0x0, 0x0, 0x0 }, + { 0x2c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0xe, 0x0, 0x0, 0x0, 0x0 }, + { 0x30, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x1c, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + { 0x27, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0xf, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x4, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x18, 0x0, 0x0, 0x0, 0x0 }, + { 0x4, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x4, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x7, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x22, 0x0, 0x0, 0x0, 0x0 }, + { 0xd, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x7, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + { 0x33, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND, + NULL_BARD_SOUND + }, + { + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + { 0x6, 0x0, 0x0, 0x0, 0x0 }, + NULL_BARD_SOUND, + NULL_BARD_SOUND + } +}; + +#endif // GUARD_DATA_BARD_MUSIC_VOICES_H diff --git a/src/data/bard_music/word_pitch.h b/src/data/bard_music/word_pitch.h new file mode 100644 index 000000000..54a87acc9 --- /dev/null +++ b/src/data/bard_music/word_pitch.h @@ -0,0 +1,183 @@ +#ifndef GUARD_WORD_PITCH_H +#define GUARD_WORD_PITCH_H + +const s16 gUnknown_0860A1C0[] = { + -0x300, 0x1800 +}; + +const s16 gUnknown_0860A1C4[] = { + 0x0900, 0x1800 +}; + +const s16 gUnknown_0860A1C8[] = { + 0x0100, 0x1800 +}; + +const s16 gUnknown_0860A1CC[] = { + 0x0400, 0x1800 +}; + +const s16 gUnknown_0860A1D0[] = { + 0x0b00, 0x1800 +}; + +const s16 gUnknown_0860A1D4[] = { + -0x300, -0x100, 0x1800 +}; + +const s16 gUnknown_0860A1DA[] = { + -0x300, 0x0200, 0x1800 +}; + +const s16 gUnknown_0860A1E0[] = { + 0x0200, 0x0400, 0x1800 +}; + +const s16 gUnknown_0860A1E6[] = { + 0x0600, 0x0800, 0x1800 +}; + +const s16 gUnknown_0860A1EC[] = { + 0x0900, 0x0800, 0x1800 +}; + +const s16 gUnknown_0860A1F2[] = { + -0x300, -0x100, -0x300, 0x1800 +}; + +const s16 gUnknown_0860A1FA[] = { + 0x0400, -0x300, 0x0400, 0x1800 +}; + +const s16 gUnknown_0860A202[] = { + 0x0900, 0x0800, 0x0600, 0x1800 +}; + +const s16 gUnknown_0860A20A[] = { + 0x0100, 0x0200, 0x0400, 0x1800 +}; + +const s16 gUnknown_0860A212[] = { + 0x0600, 0x1000, 0x0d00, 0x1800 +}; + +const s16 gUnknown_0860A21A[] = { + 0x0400, 0x0900, 0x0400, 0x0900, 0x1800 +}; + +const s16 gUnknown_0860A224[] = { + 0x0900, 0x0400, 0x0d00, 0x0400, 0x1800 +}; + +const s16 gUnknown_0860A22E[] = { + 0x0100, 0x0200, 0x0400, 0x0600, 0x1800 +}; + +const s16 gUnknown_0860A238[] = { + 0x0800, 0x0600, 0x0400, 0x0200, 0x1800 +}; + +const s16 gUnknown_0860A242[] = { + 0x0f00, 0x0d00, 0x0b00, 0x0a00, 0x1800 +}; + +const s16 gUnknown_0860A24C[] = { + -0x300, -0x100, 0x0100, 0x0200, 0x0400, 0x1800 +}; + +const s16 gUnknown_0860A258[] = { + 0x0900, 0x0800, 0x0600, 0x0400, 0x0200, 0x1800 +}; + +const s16 gUnknown_0860A264[] = { + 0x0100, 0x0400, 0x0900, 0x0400, 0x0100, 0x1800 +}; + +const s16 gUnknown_0860A270[] = { + 0x0900, 0x0400, 0x0900, 0x0400, -0x300, 0x1800 +}; + +const s16 gUnknown_0860A27C[] = { + 0x0b00, 0x0800, 0x0400, 0x0400, 0x0600, 0x1800 +}; + +const s16 gUnknown_0860A288[] = { + -0x300, -0x100, 0x0100, 0x0200, 0x0400, 0x0600, 0x1800 +}; + +const s16 gUnknown_0860A296[] = { + 0x0800, 0x0600, 0x0400, 0x0200, 0x0100, -0x100, 0x1800 +}; + +const s16 gUnknown_0860A2A4[] = { + 0x0100, 0x0200, 0x0400, 0x0100, 0x0200, 0x1000, 0x1800 +}; + +const s16 gUnknown_0860A2B2[] = { + 0x0400, -0x300, 0x0900, 0x0400, 0x0900, 0x0400, 0x1800 +}; + +const s16 gUnknown_0860A2C0[] = { + 0x0800, 0x0900, 0x0800, 0x0900, 0x0800, 0x0900, 0x1800 +}; + +const s16 gUnknown_0860A2CE[] = { + 0x0200, 0x0100, 0x0200, 0x0100, 0x0200, 0x0400, 0x0200, 0x1800 +}; + +const s16 gUnknown_0860A2DE[] = { + 0x0100, 0x0100, -0x100, -0x100, -0x300, 0x0400, -0x300, 0x1800 +}; + +const s16 gUnknown_0860A2EE[] = { + 0x0800, 0x0900, 0x0b00, 0x0d00, 0x0e00, 0x0d00, 0x0b00, 0x1800 +}; + +const s16 gUnknown_0860A2FE[] = { + 0x0800, 0x0600, 0x0400, 0x0200, 0x0d00, 0x0b00, 0x0900, 0x1800 +}; + +const s16 gUnknown_0860A30E[] = { + 0x0300, 0x0400, 0x0600, 0x0800, 0x0700, 0x0800, 0x0400, 0x1800 +}; + +const s16 *const gBardSoundPitchTables[] = { + gUnknown_0860A1C0, + gUnknown_0860A1C4, + gUnknown_0860A1C8, + gUnknown_0860A1CC, + gUnknown_0860A1D0, + gUnknown_0860A1D4, + gUnknown_0860A1DA, + gUnknown_0860A1E0, + gUnknown_0860A1E6, + gUnknown_0860A1EC, + gUnknown_0860A1F2, + gUnknown_0860A1FA, + gUnknown_0860A202, + gUnknown_0860A20A, + gUnknown_0860A212, + gUnknown_0860A21A, + gUnknown_0860A224, + gUnknown_0860A22E, + gUnknown_0860A238, + gUnknown_0860A242, + gUnknown_0860A24C, + gUnknown_0860A258, + gUnknown_0860A264, + gUnknown_0860A270, + gUnknown_0860A27C, + gUnknown_0860A288, + gUnknown_0860A296, + gUnknown_0860A2A4, + gUnknown_0860A2B2, + gUnknown_0860A2C0, + gUnknown_0860A2CE, + gUnknown_0860A2DE, + gUnknown_0860A2EE, + gUnknown_0860A2FE, + gUnknown_0860A30E +}; + + +#endif //GUARD_WORD_PITCH_H diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h new file mode 100644 index 000000000..00a6f7fdb --- /dev/null +++ b/src/data/battle_moves.h @@ -0,0 +1,3913 @@ +#ifndef GUARD_DATA_BATTLE_MOVES +#define GUARD_DATA_BATTLE_MOVES + +const struct BattleMove gBattleMoves[MOVES_COUNT] = +{ + { // MOVE_NONE + .effect = EFFECT_HIT, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 0, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + }, + { // MOVE_POUND + .effect = EFFECT_HIT, + .power = 40, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 35, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_KARATE_CHOP + .effect = EFFECT_HIGH_CRITICAL, + .power = 50, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 25, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_DOUBLE_SLAP + .effect = EFFECT_MULTI_HIT, + .power = 15, + .type = TYPE_NORMAL, + .accuracy = 85, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_COMET_PUNCH + .effect = EFFECT_MULTI_HIT, + .power = 18, + .type = TYPE_NORMAL, + .accuracy = 85, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_MEGA_PUNCH + .effect = EFFECT_HIT, + .power = 80, + .type = TYPE_NORMAL, + .accuracy = 85, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_PAY_DAY + .effect = EFFECT_PAY_DAY, + .power = 40, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_FIRE_PUNCH + .effect = EFFECT_BURN_HIT, + .power = 75, + .type = TYPE_FIRE, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_ICE_PUNCH + .effect = EFFECT_FREEZE_HIT, + .power = 75, + .type = TYPE_ICE, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_THUNDER_PUNCH + .effect = EFFECT_PARALYZE_HIT, + .power = 75, + .type = TYPE_ELECTRIC, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SCRATCH + .effect = EFFECT_HIT, + .power = 40, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 35, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_VICE_GRIP + .effect = EFFECT_HIT, + .power = 55, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_GUILLOTINE + .effect = EFFECT_OHKO, + .power = 1, + .type = TYPE_NORMAL, + .accuracy = 30, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_RAZOR_WIND + .effect = EFFECT_RAZOR_WIND, + .power = 80, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SWORDS_DANCE + .effect = EFFECT_ATTACK_UP_2, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_CUT + .effect = EFFECT_HIT, + .power = 50, + .type = TYPE_NORMAL, + .accuracy = 95, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_GUST + .effect = EFFECT_GUST, + .power = 40, + .type = TYPE_FLYING, + .accuracy = 100, + .pp = 35, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_WING_ATTACK + .effect = EFFECT_HIT, + .power = 60, + .type = TYPE_FLYING, + .accuracy = 100, + .pp = 35, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_WHIRLWIND + .effect = EFFECT_ROAR, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = -6, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FLY + .effect = EFFECT_SEMI_INVULNERABLE, + .power = 70, + .type = TYPE_FLYING, + .accuracy = 95, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_BIND + .effect = EFFECT_TRAP, + .power = 15, + .type = TYPE_NORMAL, + .accuracy = 75, + .pp = 20, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SLAM + .effect = EFFECT_HIT, + .power = 80, + .type = TYPE_NORMAL, + .accuracy = 75, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_VINE_WHIP + .effect = EFFECT_HIT, + .power = 35, + .type = TYPE_GRASS, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_STOMP + .effect = EFFECT_FLINCH_MINIMIZE_HIT, + .power = 65, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_DOUBLE_KICK + .effect = EFFECT_DOUBLE_HIT, + .power = 30, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_MEGA_KICK + .effect = EFFECT_HIT, + .power = 120, + .type = TYPE_NORMAL, + .accuracy = 75, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_JUMP_KICK + .effect = EFFECT_RECOIL_IF_MISS, + .power = 70, + .type = TYPE_FIGHTING, + .accuracy = 95, + .pp = 25, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_ROLLING_KICK + .effect = EFFECT_FLINCH_HIT, + .power = 60, + .type = TYPE_FIGHTING, + .accuracy = 85, + .pp = 15, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SAND_ATTACK + .effect = EFFECT_ACCURACY_DOWN, + .power = 0, + .type = TYPE_GROUND, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_HEADBUTT + .effect = EFFECT_FLINCH_HIT, + .power = 70, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_HORN_ATTACK + .effect = EFFECT_HIT, + .power = 65, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 25, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_FURY_ATTACK + .effect = EFFECT_MULTI_HIT, + .power = 15, + .type = TYPE_NORMAL, + .accuracy = 85, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_HORN_DRILL + .effect = EFFECT_OHKO, + .power = 1, + .type = TYPE_NORMAL, + .accuracy = 30, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_TACKLE + .effect = EFFECT_HIT, + .power = 35, + .type = TYPE_NORMAL, + .accuracy = 95, + .pp = 35, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_BODY_SLAM + .effect = EFFECT_PARALYZE_HIT, + .power = 85, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_WRAP + .effect = EFFECT_TRAP, + .power = 15, + .type = TYPE_NORMAL, + .accuracy = 85, + .pp = 20, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_TAKE_DOWN + .effect = EFFECT_RECOIL, + .power = 90, + .type = TYPE_NORMAL, + .accuracy = 85, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_THRASH + .effect = EFFECT_RAMPAGE, + .power = 90, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_RANDOM, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_DOUBLE_EDGE + .effect = EFFECT_DOUBLE_EDGE, + .power = 120, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_TAIL_WHIP + .effect = EFFECT_DEFENSE_DOWN, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_POISON_STING + .effect = EFFECT_POISON_HIT, + .power = 15, + .type = TYPE_POISON, + .accuracy = 100, + .pp = 35, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_TWINEEDLE + .effect = EFFECT_TWINEEDLE, + .power = 25, + .type = TYPE_BUG, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 20, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_PIN_MISSILE + .effect = EFFECT_MULTI_HIT, + .power = 14, + .type = TYPE_BUG, + .accuracy = 85, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_LEER + .effect = EFFECT_DEFENSE_DOWN, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_BITE + .effect = EFFECT_FLINCH_HIT, + .power = 60, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 25, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_GROWL + .effect = EFFECT_ATTACK_DOWN, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_ROAR + .effect = EFFECT_ROAR, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = -6, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SING + .effect = EFFECT_SLEEP, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 55, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SUPERSONIC + .effect = EFFECT_CONFUSE, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 55, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SONIC_BOOM + .effect = EFFECT_SONICBOOM, + .power = 1, + .type = TYPE_NORMAL, + .accuracy = 90, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_DISABLE + .effect = EFFECT_DISABLE, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 55, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_ACID + .effect = EFFECT_DEFENSE_DOWN_HIT, + .power = 40, + .type = TYPE_POISON, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_EMBER + .effect = EFFECT_BURN_HIT, + .power = 40, + .type = TYPE_FIRE, + .accuracy = 100, + .pp = 25, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FLAMETHROWER + .effect = EFFECT_BURN_HIT, + .power = 95, + .type = TYPE_FIRE, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MIST + .effect = EFFECT_MIST, + .power = 0, + .type = TYPE_ICE, + .accuracy = 0, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_WATER_GUN + .effect = EFFECT_HIT, + .power = 40, + .type = TYPE_WATER, + .accuracy = 100, + .pp = 25, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_HYDRO_PUMP + .effect = EFFECT_HIT, + .power = 120, + .type = TYPE_WATER, + .accuracy = 80, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SURF + .effect = EFFECT_HIT, + .power = 95, + .type = TYPE_WATER, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_ICE_BEAM + .effect = EFFECT_FREEZE_HIT, + .power = 95, + .type = TYPE_ICE, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_BLIZZARD + .effect = EFFECT_FREEZE_HIT, + .power = 120, + .type = TYPE_ICE, + .accuracy = 70, + .pp = 5, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_PSYBEAM + .effect = EFFECT_CONFUSE_HIT, + .power = 65, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_BUBBLE_BEAM + .effect = EFFECT_SPEED_DOWN_HIT, + .power = 65, + .type = TYPE_WATER, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_AURORA_BEAM + .effect = EFFECT_ATTACK_DOWN_HIT, + .power = 65, + .type = TYPE_ICE, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_HYPER_BEAM + .effect = EFFECT_RECHARGE, + .power = 150, + .type = TYPE_NORMAL, + .accuracy = 90, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_PECK + .effect = EFFECT_HIT, + .power = 35, + .type = TYPE_FLYING, + .accuracy = 100, + .pp = 35, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_DRILL_PECK + .effect = EFFECT_HIT, + .power = 80, + .type = TYPE_FLYING, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SUBMISSION + .effect = EFFECT_RECOIL, + .power = 80, + .type = TYPE_FIGHTING, + .accuracy = 80, + .pp = 25, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_LOW_KICK + .effect = EFFECT_LOW_KICK, + .power = 1, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_COUNTER + .effect = EFFECT_COUNTER, + .power = 1, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_DEPENDS, + .priority = -5, + .flags = FLAG_MAKES_CONTACT | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SEISMIC_TOSS + .effect = EFFECT_LEVEL_DAMAGE, + .power = 1, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_STRENGTH + .effect = EFFECT_HIT, + .power = 80, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_ABSORB + .effect = EFFECT_ABSORB, + .power = 20, + .type = TYPE_GRASS, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MEGA_DRAIN + .effect = EFFECT_ABSORB, + .power = 40, + .type = TYPE_GRASS, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_LEECH_SEED + .effect = EFFECT_LEECH_SEED, + .power = 0, + .type = TYPE_GRASS, + .accuracy = 90, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_GROWTH + .effect = EFFECT_SPECIAL_ATTACK_UP, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_RAZOR_LEAF + .effect = EFFECT_HIGH_CRITICAL, + .power = 55, + .type = TYPE_GRASS, + .accuracy = 95, + .pp = 25, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SOLAR_BEAM + .effect = EFFECT_SOLARBEAM, + .power = 120, + .type = TYPE_GRASS, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_POISON_POWDER + .effect = EFFECT_POISON, + .power = 0, + .type = TYPE_POISON, + .accuracy = 75, + .pp = 35, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_STUN_SPORE + .effect = EFFECT_PARALYZE, + .power = 0, + .type = TYPE_GRASS, + .accuracy = 75, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SLEEP_POWDER + .effect = EFFECT_SLEEP, + .power = 0, + .type = TYPE_GRASS, + .accuracy = 75, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_PETAL_DANCE + .effect = EFFECT_RAMPAGE, + .power = 70, + .type = TYPE_GRASS, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_RANDOM, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_STRING_SHOT + .effect = EFFECT_SPEED_DOWN, + .power = 0, + .type = TYPE_BUG, + .accuracy = 95, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_DRAGON_RAGE + .effect = EFFECT_DRAGON_RAGE, + .power = 1, + .type = TYPE_DRAGON, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_FIRE_SPIN + .effect = EFFECT_TRAP, + .power = 15, + .type = TYPE_FIRE, + .accuracy = 70, + .pp = 15, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_THUNDER_SHOCK + .effect = EFFECT_PARALYZE_HIT, + .power = 40, + .type = TYPE_ELECTRIC, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_THUNDERBOLT + .effect = EFFECT_PARALYZE_HIT, + .power = 95, + .type = TYPE_ELECTRIC, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_THUNDER_WAVE + .effect = EFFECT_PARALYZE, + .power = 0, + .type = TYPE_ELECTRIC, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_THUNDER + .effect = EFFECT_THUNDER, + .power = 120, + .type = TYPE_ELECTRIC, + .accuracy = 70, + .pp = 10, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_ROCK_THROW + .effect = EFFECT_HIT, + .power = 50, + .type = TYPE_ROCK, + .accuracy = 90, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_EARTHQUAKE + .effect = EFFECT_EARTHQUAKE, + .power = 100, + .type = TYPE_GROUND, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_FOES_AND_ALLY, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_FISSURE + .effect = EFFECT_OHKO, + .power = 1, + .type = TYPE_GROUND, + .accuracy = 30, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_DIG + .effect = EFFECT_SEMI_INVULNERABLE, + .power = 60, + .type = TYPE_GROUND, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_TOXIC + .effect = EFFECT_TOXIC, + .power = 0, + .type = TYPE_POISON, + .accuracy = 85, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_CONFUSION + .effect = EFFECT_CONFUSE_HIT, + .power = 50, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 25, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_PSYCHIC + .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT, + .power = 90, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_HYPNOSIS + .effect = EFFECT_SLEEP, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 60, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MEDITATE + .effect = EFFECT_ATTACK_UP, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_AGILITY + .effect = EFFECT_SPEED_UP_2, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_QUICK_ATTACK + .effect = EFFECT_QUICK_ATTACK, + .power = 40, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 1, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_RAGE + .effect = EFFECT_RAGE, + .power = 20, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_TELEPORT + .effect = EFFECT_TELEPORT, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + }, + { // MOVE_NIGHT_SHADE + .effect = EFFECT_LEVEL_DAMAGE, + .power = 1, + .type = TYPE_GHOST, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_MIMIC + .effect = EFFECT_MIMIC, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED, + }, + { // MOVE_SCREECH + .effect = EFFECT_DEFENSE_DOWN_2, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 85, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_DOUBLE_TEAM + .effect = EFFECT_EVASION_UP, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_RECOVER + .effect = EFFECT_RESTORE_HP, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_HARDEN + .effect = EFFECT_DEFENSE_UP, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_MINIMIZE + .effect = EFFECT_MINIMIZE, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_SMOKESCREEN + .effect = EFFECT_ACCURACY_DOWN, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_CONFUSE_RAY + .effect = EFFECT_CONFUSE, + .power = 0, + .type = TYPE_GHOST, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_WITHDRAW + .effect = EFFECT_DEFENSE_UP, + .power = 0, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_DEFENSE_CURL + .effect = EFFECT_DEFENSE_CURL, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_BARRIER + .effect = EFFECT_DEFENSE_UP_2, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_LIGHT_SCREEN + .effect = EFFECT_LIGHT_SCREEN, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_HAZE + .effect = EFFECT_HAZE, + .power = 0, + .type = TYPE_ICE, + .accuracy = 0, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED, + }, + { // MOVE_REFLECT + .effect = EFFECT_REFLECT, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_FOCUS_ENERGY + .effect = EFFECT_FOCUS_ENERGY, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_BIDE + .effect = EFFECT_BIDE, + .power = 1, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_METRONOME + .effect = EFFECT_METRONOME, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_DEPENDS, + .priority = 0, + .flags = 0, + }, + { // MOVE_MIRROR_MOVE + .effect = EFFECT_MIRROR_MOVE, + .power = 0, + .type = TYPE_FLYING, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_DEPENDS, + .priority = 0, + .flags = 0, + }, + { // MOVE_SELF_DESTRUCT + .effect = EFFECT_EXPLOSION, + .power = 200, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_FOES_AND_ALLY, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_EGG_BOMB + .effect = EFFECT_HIT, + .power = 100, + .type = TYPE_NORMAL, + .accuracy = 75, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_LICK + .effect = EFFECT_PARALYZE_HIT, + .power = 20, + .type = TYPE_GHOST, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SMOG + .effect = EFFECT_POISON_HIT, + .power = 20, + .type = TYPE_POISON, + .accuracy = 70, + .pp = 20, + .secondaryEffectChance = 40, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SLUDGE + .effect = EFFECT_POISON_HIT, + .power = 65, + .type = TYPE_POISON, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_BONE_CLUB + .effect = EFFECT_FLINCH_HIT, + .power = 65, + .type = TYPE_GROUND, + .accuracy = 85, + .pp = 20, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FIRE_BLAST + .effect = EFFECT_BURN_HIT, + .power = 120, + .type = TYPE_FIRE, + .accuracy = 85, + .pp = 5, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_WATERFALL + .effect = EFFECT_HIT, + .power = 80, + .type = TYPE_WATER, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_CLAMP + .effect = EFFECT_TRAP, + .power = 35, + .type = TYPE_WATER, + .accuracy = 75, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SWIFT + .effect = EFFECT_ALWAYS_HIT, + .power = 60, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SKULL_BASH + .effect = EFFECT_SKULL_BASH, + .power = 100, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SPIKE_CANNON + .effect = EFFECT_MULTI_HIT, + .power = 20, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_CONSTRICT + .effect = EFFECT_SPEED_DOWN_HIT, + .power = 10, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 35, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_AMNESIA + .effect = EFFECT_SPECIAL_DEFENSE_UP_2, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_KINESIS + .effect = EFFECT_ACCURACY_DOWN, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 80, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SOFT_BOILED + .effect = EFFECT_SOFTBOILED, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_HI_JUMP_KICK + .effect = EFFECT_RECOIL_IF_MISS, + .power = 85, + .type = TYPE_FIGHTING, + .accuracy = 90, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_GLARE + .effect = EFFECT_PARALYZE, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 75, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_DREAM_EATER + .effect = EFFECT_DREAM_EATER, + .power = 100, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_POISON_GAS + .effect = EFFECT_POISON, + .power = 0, + .type = TYPE_POISON, + .accuracy = 55, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_BARRAGE + .effect = EFFECT_MULTI_HIT, + .power = 15, + .type = TYPE_NORMAL, + .accuracy = 85, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_LEECH_LIFE + .effect = EFFECT_ABSORB, + .power = 20, + .type = TYPE_BUG, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_LOVELY_KISS + .effect = EFFECT_SLEEP, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 75, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SKY_ATTACK + .effect = EFFECT_SKY_ATTACK, + .power = 140, + .type = TYPE_FLYING, + .accuracy = 90, + .pp = 5, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_TRANSFORM + .effect = EFFECT_TRANSFORM, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + }, + { // MOVE_BUBBLE + .effect = EFFECT_SPEED_DOWN_HIT, + .power = 20, + .type = TYPE_WATER, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_DIZZY_PUNCH + .effect = EFFECT_CONFUSE_HIT, + .power = 70, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 20, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SPORE + .effect = EFFECT_SLEEP, + .power = 0, + .type = TYPE_GRASS, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FLASH + .effect = EFFECT_ACCURACY_DOWN, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 70, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_PSYWAVE + .effect = EFFECT_PSYWAVE, + .power = 1, + .type = TYPE_PSYCHIC, + .accuracy = 80, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SPLASH + .effect = EFFECT_SPLASH, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + }, + { // MOVE_ACID_ARMOR + .effect = EFFECT_DEFENSE_UP_2, + .power = 0, + .type = TYPE_POISON, + .accuracy = 0, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_CRABHAMMER + .effect = EFFECT_HIGH_CRITICAL, + .power = 90, + .type = TYPE_WATER, + .accuracy = 85, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_EXPLOSION + .effect = EFFECT_EXPLOSION, + .power = 250, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_FOES_AND_ALLY, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_FURY_SWIPES + .effect = EFFECT_MULTI_HIT, + .power = 18, + .type = TYPE_NORMAL, + .accuracy = 80, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_BONEMERANG + .effect = EFFECT_DOUBLE_HIT, + .power = 50, + .type = TYPE_GROUND, + .accuracy = 90, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_REST + .effect = EFFECT_REST, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_ROCK_SLIDE + .effect = EFFECT_FLINCH_HIT, + .power = 75, + .type = TYPE_ROCK, + .accuracy = 90, + .pp = 10, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_HYPER_FANG + .effect = EFFECT_FLINCH_HIT, + .power = 80, + .type = TYPE_NORMAL, + .accuracy = 90, + .pp = 15, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SHARPEN + .effect = EFFECT_ATTACK_UP, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_CONVERSION + .effect = EFFECT_CONVERSION, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + }, + { // MOVE_TRI_ATTACK + .effect = EFFECT_TRI_ATTACK, + .power = 80, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 20, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SUPER_FANG + .effect = EFFECT_SUPER_FANG, + .power = 1, + .type = TYPE_NORMAL, + .accuracy = 90, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SLASH + .effect = EFFECT_HIGH_CRITICAL, + .power = 70, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SUBSTITUTE + .effect = EFFECT_SUBSTITUTE, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_STRUGGLE + .effect = EFFECT_RECOIL, + .power = 50, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 1, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SKETCH + .effect = EFFECT_SKETCH, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 1, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + }, + { // MOVE_TRIPLE_KICK + .effect = EFFECT_TRIPLE_KICK, + .power = 10, + .type = TYPE_FIGHTING, + .accuracy = 90, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_THIEF + .effect = EFFECT_THIEF, + .power = 40, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SPIDER_WEB + .effect = EFFECT_MEAN_LOOK, + .power = 0, + .type = TYPE_BUG, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MIND_READER + .effect = EFFECT_LOCK_ON, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_NIGHTMARE + .effect = EFFECT_NIGHTMARE, + .power = 0, + .type = TYPE_GHOST, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FLAME_WHEEL + .effect = EFFECT_THAW_HIT, + .power = 60, + .type = TYPE_FIRE, + .accuracy = 100, + .pp = 25, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SNORE + .effect = EFFECT_SNORE, + .power = 40, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_CURSE + .effect = EFFECT_CURSE, + .power = 0, + .type = TYPE_MYSTERY, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + }, + { // MOVE_FLAIL + .effect = EFFECT_FLAIL, + .power = 1, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_CONVERSION_2 + .effect = EFFECT_CONVERSION_2, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + }, + { // MOVE_AEROBLAST + .effect = EFFECT_HIGH_CRITICAL, + .power = 100, + .type = TYPE_FLYING, + .accuracy = 95, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_COTTON_SPORE + .effect = EFFECT_SPEED_DOWN_2, + .power = 0, + .type = TYPE_GRASS, + .accuracy = 85, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_REVERSAL + .effect = EFFECT_FLAIL, + .power = 1, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SPITE + .effect = EFFECT_SPITE, + .power = 0, + .type = TYPE_GHOST, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_POWDER_SNOW + .effect = EFFECT_FREEZE_HIT, + .power = 40, + .type = TYPE_ICE, + .accuracy = 100, + .pp = 25, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_PROTECT + .effect = EFFECT_PROTECT, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 3, + .flags = 0, + }, + { // MOVE_MACH_PUNCH + .effect = EFFECT_QUICK_ATTACK, + .power = 40, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 1, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SCARY_FACE + .effect = EFFECT_SPEED_DOWN_2, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 90, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FAINT_ATTACK + .effect = EFFECT_ALWAYS_HIT, + .power = 60, + .type = TYPE_DARK, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SWEET_KISS + .effect = EFFECT_CONFUSE, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 75, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_BELLY_DRUM + .effect = EFFECT_BELLY_DRUM, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_SLUDGE_BOMB + .effect = EFFECT_POISON_HIT, + .power = 90, + .type = TYPE_POISON, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MUD_SLAP + .effect = EFFECT_ACCURACY_DOWN_HIT, + .power = 20, + .type = TYPE_GROUND, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_OCTAZOOKA + .effect = EFFECT_ACCURACY_DOWN_HIT, + .power = 65, + .type = TYPE_WATER, + .accuracy = 85, + .pp = 10, + .secondaryEffectChance = 50, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SPIKES + .effect = EFFECT_SPIKES, + .power = 0, + .type = TYPE_GROUND, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_OPPONENTS_FIELD, + .priority = 0, + .flags = 0, + }, + { // MOVE_ZAP_CANNON + .effect = EFFECT_PARALYZE_HIT, + .power = 100, + .type = TYPE_ELECTRIC, + .accuracy = 50, + .pp = 5, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FORESIGHT + .effect = EFFECT_FORESIGHT, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_DESTINY_BOND + .effect = EFFECT_DESTINY_BOND, + .power = 0, + .type = TYPE_GHOST, + .accuracy = 0, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + }, + { // MOVE_PERISH_SONG + .effect = EFFECT_PERISH_SONG, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + }, + { // MOVE_ICY_WIND + .effect = EFFECT_SPEED_DOWN_HIT, + .power = 55, + .type = TYPE_ICE, + .accuracy = 95, + .pp = 15, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_DETECT + .effect = EFFECT_PROTECT, + .power = 0, + .type = TYPE_FIGHTING, + .accuracy = 0, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 3, + .flags = 0, + }, + { // MOVE_BONE_RUSH + .effect = EFFECT_MULTI_HIT, + .power = 25, + .type = TYPE_GROUND, + .accuracy = 80, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_LOCK_ON + .effect = EFFECT_LOCK_ON, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_OUTRAGE + .effect = EFFECT_RAMPAGE, + .power = 90, + .type = TYPE_DRAGON, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_RANDOM, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SANDSTORM + .effect = EFFECT_SANDSTORM, + .power = 0, + .type = TYPE_ROCK, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + }, + { // MOVE_GIGA_DRAIN + .effect = EFFECT_ABSORB, + .power = 60, + .type = TYPE_GRASS, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_ENDURE + .effect = EFFECT_ENDURE, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 3, + .flags = 0, + }, + { // MOVE_CHARM + .effect = EFFECT_ATTACK_DOWN_2, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_ROLLOUT + .effect = EFFECT_ROLLOUT, + .power = 30, + .type = TYPE_ROCK, + .accuracy = 90, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_FALSE_SWIPE + .effect = EFFECT_FALSE_SWIPE, + .power = 40, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SWAGGER + .effect = EFFECT_SWAGGER, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 90, + .pp = 15, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MILK_DRINK + .effect = EFFECT_SOFTBOILED, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_SNATCH_AFFECTED, + }, + { // MOVE_SPARK + .effect = EFFECT_PARALYZE_HIT, + .power = 65, + .type = TYPE_ELECTRIC, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FURY_CUTTER + .effect = EFFECT_FURY_CUTTER, + .power = 10, + .type = TYPE_BUG, + .accuracy = 95, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_STEEL_WING + .effect = EFFECT_DEFENSE_UP_HIT, + .power = 70, + .type = TYPE_STEEL, + .accuracy = 90, + .pp = 25, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_MEAN_LOOK + .effect = EFFECT_MEAN_LOOK, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_ATTRACT + .effect = EFFECT_ATTRACT, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SLEEP_TALK + .effect = EFFECT_SLEEP_TALK, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_DEPENDS, + .priority = 0, + .flags = 0, + }, + { // MOVE_HEAL_BELL + .effect = EFFECT_HEAL_BELL, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_RETURN + .effect = EFFECT_RETURN, + .power = 1, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_PRESENT + .effect = EFFECT_PRESENT, + .power = 1, + .type = TYPE_NORMAL, + .accuracy = 90, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FRUSTRATION + .effect = EFFECT_FRUSTRATION, + .power = 1, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SAFEGUARD + .effect = EFFECT_SAFEGUARD, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 25, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_PAIN_SPLIT + .effect = EFFECT_PAIN_SPLIT, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SACRED_FIRE + .effect = EFFECT_THAW_HIT, + .power = 100, + .type = TYPE_FIRE, + .accuracy = 95, + .pp = 5, + .secondaryEffectChance = 50, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MAGNITUDE + .effect = EFFECT_MAGNITUDE, + .power = 1, + .type = TYPE_GROUND, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_FOES_AND_ALLY, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_DYNAMIC_PUNCH + .effect = EFFECT_CONFUSE_HIT, + .power = 100, + .type = TYPE_FIGHTING, + .accuracy = 50, + .pp = 5, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MEGAHORN + .effect = EFFECT_HIT, + .power = 120, + .type = TYPE_BUG, + .accuracy = 85, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_DRAGON_BREATH + .effect = EFFECT_PARALYZE_HIT, + .power = 60, + .type = TYPE_DRAGON, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_BATON_PASS + .effect = EFFECT_BATON_PASS, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + }, + { // MOVE_ENCORE + .effect = EFFECT_ENCORE, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_PURSUIT + .effect = EFFECT_PURSUIT, + .power = 40, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_RAPID_SPIN + .effect = EFFECT_RAPID_SPIN, + .power = 20, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SWEET_SCENT + .effect = EFFECT_EVASION_DOWN, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_IRON_TAIL + .effect = EFFECT_DEFENSE_DOWN_HIT, + .power = 100, + .type = TYPE_STEEL, + .accuracy = 75, + .pp = 15, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_METAL_CLAW + .effect = EFFECT_ATTACK_UP_HIT, + .power = 50, + .type = TYPE_STEEL, + .accuracy = 95, + .pp = 35, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_VITAL_THROW + .effect = EFFECT_VITAL_THROW, + .power = 70, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = -1, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_MORNING_SUN + .effect = EFFECT_MORNING_SUN, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_SYNTHESIS + .effect = EFFECT_SYNTHESIS, + .power = 0, + .type = TYPE_GRASS, + .accuracy = 0, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_MOONLIGHT + .effect = EFFECT_MOONLIGHT, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_HIDDEN_POWER + .effect = EFFECT_HIDDEN_POWER, + .power = 1, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_CROSS_CHOP + .effect = EFFECT_HIGH_CRITICAL, + .power = 100, + .type = TYPE_FIGHTING, + .accuracy = 80, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_TWISTER + .effect = EFFECT_TWISTER, + .power = 40, + .type = TYPE_DRAGON, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 20, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_RAIN_DANCE + .effect = EFFECT_RAIN_DANCE, + .power = 0, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + }, + { // MOVE_SUNNY_DAY + .effect = EFFECT_SUNNY_DAY, + .power = 0, + .type = TYPE_FIRE, + .accuracy = 0, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + }, + { // MOVE_CRUNCH + .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT, + .power = 80, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 20, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MIRROR_COAT + .effect = EFFECT_MIRROR_COAT, + .power = 1, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_DEPENDS, + .priority = -5, + .flags = FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_PSYCH_UP + .effect = EFFECT_PSYCH_UP, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_EXTREME_SPEED + .effect = EFFECT_QUICK_ATTACK, + .power = 80, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 1, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_ANCIENT_POWER + .effect = EFFECT_ALL_STATS_UP_HIT, + .power = 60, + .type = TYPE_ROCK, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SHADOW_BALL + .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT, + .power = 80, + .type = TYPE_GHOST, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 20, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FUTURE_SIGHT + .effect = EFFECT_FUTURE_SIGHT, + .power = 80, + .type = TYPE_PSYCHIC, + .accuracy = 90, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + }, + { // MOVE_ROCK_SMASH + .effect = EFFECT_DEFENSE_DOWN_HIT, + .power = 20, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 50, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_WHIRLPOOL + .effect = EFFECT_TRAP, + .power = 15, + .type = TYPE_WATER, + .accuracy = 70, + .pp = 15, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_BEAT_UP + .effect = EFFECT_BEAT_UP, + .power = 10, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_FAKE_OUT + .effect = EFFECT_FAKE_OUT, + .power = 40, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 1, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_UPROAR + .effect = EFFECT_UPROAR, + .power = 50, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_RANDOM, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_STOCKPILE + .effect = EFFECT_STOCKPILE, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_SPIT_UP + .effect = EFFECT_SPIT_UP, + .power = 100, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SWALLOW + .effect = EFFECT_SWALLOW, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_HEAT_WAVE + .effect = EFFECT_BURN_HIT, + .power = 100, + .type = TYPE_FIRE, + .accuracy = 90, + .pp = 10, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_HAIL + .effect = EFFECT_HAIL, + .power = 0, + .type = TYPE_ICE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED, + }, + { // MOVE_TORMENT + .effect = EFFECT_TORMENT, + .power = 0, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FLATTER + .effect = EFFECT_FLATTER, + .power = 0, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_WILL_O_WISP + .effect = EFFECT_WILL_O_WISP, + .power = 0, + .type = TYPE_FIRE, + .accuracy = 75, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MEMENTO + .effect = EFFECT_MEMENTO, + .power = 0, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FACADE + .effect = EFFECT_FACADE, + .power = 70, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FOCUS_PUNCH + .effect = EFFECT_FOCUS_PUNCH, + .power = 150, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = -3, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED, + }, + { // MOVE_SMELLING_SALT + .effect = EFFECT_SMELLINGSALT, + .power = 60, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FOLLOW_ME + .effect = EFFECT_FOLLOW_ME, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 3, + .flags = 0, + }, + { // MOVE_NATURE_POWER + .effect = EFFECT_NATURE_POWER, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 95, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_DEPENDS, + .priority = 0, + .flags = 0, + }, + { // MOVE_CHARGE + .effect = EFFECT_CHARGE, + .power = 0, + .type = TYPE_ELECTRIC, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_TAUNT + .effect = EFFECT_TAUNT, + .power = 0, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED, + }, + { // MOVE_HELPING_HAND + .effect = EFFECT_HELPING_HAND, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 5, + .flags = 0, + }, + { // MOVE_TRICK + .effect = EFFECT_TRICK, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_ROLE_PLAY + .effect = EFFECT_ROLE_PLAY, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + }, + { // MOVE_WISH + .effect = EFFECT_WISH, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED, + }, + { // MOVE_ASSIST + .effect = EFFECT_ASSIST, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_DEPENDS, + .priority = 0, + .flags = 0, + }, + { // MOVE_INGRAIN + .effect = EFFECT_INGRAIN, + .power = 0, + .type = TYPE_GRASS, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_SUPERPOWER + .effect = EFFECT_SUPERPOWER, + .power = 120, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MAGIC_COAT + .effect = EFFECT_MAGIC_COAT, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_DEPENDS, + .priority = 4, + .flags = 0, + }, + { // MOVE_RECYCLE + .effect = EFFECT_RECYCLE, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + }, + { // MOVE_REVENGE + .effect = EFFECT_REVENGE, + .power = 60, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = -4, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_BRICK_BREAK + .effect = EFFECT_BRICK_BREAK, + .power = 75, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_YAWN + .effect = EFFECT_YAWN, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_KNOCK_OFF + .effect = EFFECT_KNOCK_OFF, + .power = 20, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_ENDEAVOR + .effect = EFFECT_ENDEAVOR, + .power = 1, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_ERUPTION + .effect = EFFECT_ERUPTION, + .power = 150, + .type = TYPE_FIRE, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SKILL_SWAP + .effect = EFFECT_SKILL_SWAP, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_IMPRISON + .effect = EFFECT_IMPRISON, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED, + }, + { // MOVE_REFRESH + .effect = EFFECT_REFRESH, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_GRUDGE + .effect = EFFECT_GRUDGE, + .power = 0, + .type = TYPE_GHOST, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SNATCH + .effect = EFFECT_SNATCH, + .power = 0, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_DEPENDS, + .priority = 4, + .flags = FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SECRET_POWER + .effect = EFFECT_SECRET_POWER, + .power = 70, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_DIVE + .effect = EFFECT_SEMI_INVULNERABLE, + .power = 60, + .type = TYPE_WATER, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_ARM_THRUST + .effect = EFFECT_MULTI_HIT, + .power = 15, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_CAMOUFLAGE + .effect = EFFECT_CAMOUFLAGE, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_TAIL_GLOW + .effect = EFFECT_SPECIAL_ATTACK_UP_2, + .power = 0, + .type = TYPE_BUG, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_LUSTER_PURGE + .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT, + .power = 70, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 50, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MIST_BALL + .effect = EFFECT_SPECIAL_ATTACK_DOWN_HIT, + .power = 70, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 50, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_FEATHER_DANCE + .effect = EFFECT_ATTACK_DOWN_2, + .power = 0, + .type = TYPE_FLYING, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_TEETER_DANCE + .effect = EFFECT_TEETER_DANCE, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_FOES_AND_ALLY, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED, + }, + { // MOVE_BLAZE_KICK + .effect = EFFECT_BLAZE_KICK, + .power = 85, + .type = TYPE_FIRE, + .accuracy = 90, + .pp = 10, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MUD_SPORT + .effect = EFFECT_MUD_SPORT, + .power = 0, + .type = TYPE_GROUND, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + }, + { // MOVE_ICE_BALL + .effect = EFFECT_ROLLOUT, + .power = 30, + .type = TYPE_ICE, + .accuracy = 90, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_NEEDLE_ARM + .effect = EFFECT_FLINCH_MINIMIZE_HIT, + .power = 60, + .type = TYPE_GRASS, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SLACK_OFF + .effect = EFFECT_RESTORE_HP, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_HYPER_VOICE + .effect = EFFECT_HIT, + .power = 90, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_POISON_FANG + .effect = EFFECT_POISON_FANG, + .power = 50, + .type = TYPE_POISON, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_CRUSH_CLAW + .effect = EFFECT_DEFENSE_DOWN_HIT, + .power = 75, + .type = TYPE_NORMAL, + .accuracy = 95, + .pp = 10, + .secondaryEffectChance = 50, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_BLAST_BURN + .effect = EFFECT_RECHARGE, + .power = 150, + .type = TYPE_FIRE, + .accuracy = 90, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_HYDRO_CANNON + .effect = EFFECT_RECHARGE, + .power = 150, + .type = TYPE_WATER, + .accuracy = 90, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_METEOR_MASH + .effect = EFFECT_ATTACK_UP_HIT, + .power = 100, + .type = TYPE_STEEL, + .accuracy = 85, + .pp = 10, + .secondaryEffectChance = 20, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_ASTONISH + .effect = EFFECT_FLINCH_MINIMIZE_HIT, + .power = 30, + .type = TYPE_GHOST, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_WEATHER_BALL + .effect = EFFECT_WEATHER_BALL, + .power = 50, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_AROMATHERAPY + .effect = EFFECT_HEAL_BELL, + .power = 0, + .type = TYPE_GRASS, + .accuracy = 0, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_FAKE_TEARS + .effect = EFFECT_SPECIAL_DEFENSE_DOWN_2, + .power = 0, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_AIR_CUTTER + .effect = EFFECT_HIGH_CRITICAL, + .power = 55, + .type = TYPE_FLYING, + .accuracy = 95, + .pp = 25, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_OVERHEAT + .effect = EFFECT_OVERHEAT, + .power = 140, + .type = TYPE_FIRE, + .accuracy = 90, + .pp = 5, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_ODOR_SLEUTH + .effect = EFFECT_FORESIGHT, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_ROCK_TOMB + .effect = EFFECT_SPEED_DOWN_HIT, + .power = 50, + .type = TYPE_ROCK, + .accuracy = 80, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SILVER_WIND + .effect = EFFECT_ALL_STATS_UP_HIT, + .power = 60, + .type = TYPE_BUG, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_METAL_SOUND + .effect = EFFECT_SPECIAL_DEFENSE_DOWN_2, + .power = 0, + .type = TYPE_STEEL, + .accuracy = 85, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_GRASS_WHISTLE + .effect = EFFECT_SLEEP, + .power = 0, + .type = TYPE_GRASS, + .accuracy = 55, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_TICKLE + .effect = EFFECT_TICKLE, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_COSMIC_POWER + .effect = EFFECT_COSMIC_POWER, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_WATER_SPOUT + .effect = EFFECT_ERUPTION, + .power = 150, + .type = TYPE_WATER, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SIGNAL_BEAM + .effect = EFFECT_CONFUSE_HIT, + .power = 75, + .type = TYPE_BUG, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SHADOW_PUNCH + .effect = EFFECT_ALWAYS_HIT, + .power = 60, + .type = TYPE_GHOST, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_EXTRASENSORY + .effect = EFFECT_FLINCH_MINIMIZE_HIT, + .power = 80, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_SKY_UPPERCUT + .effect = EFFECT_SKY_UPPERCUT, + .power = 85, + .type = TYPE_FIGHTING, + .accuracy = 90, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SAND_TOMB + .effect = EFFECT_TRAP, + .power = 15, + .type = TYPE_GROUND, + .accuracy = 70, + .pp = 15, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SHEER_COLD + .effect = EFFECT_OHKO, + .power = 1, + .type = TYPE_ICE, + .accuracy = 30, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_MUDDY_WATER + .effect = EFFECT_ACCURACY_DOWN_HIT, + .power = 95, + .type = TYPE_WATER, + .accuracy = 85, + .pp = 10, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_BULLET_SEED + .effect = EFFECT_MULTI_HIT, + .power = 10, + .type = TYPE_GRASS, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_AERIAL_ACE + .effect = EFFECT_ALWAYS_HIT, + .power = 60, + .type = TYPE_FLYING, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_ICICLE_SPEAR + .effect = EFFECT_MULTI_HIT, + .power = 10, + .type = TYPE_ICE, + .accuracy = 100, + .pp = 30, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_IRON_DEFENSE + .effect = EFFECT_DEFENSE_UP_2, + .power = 0, + .type = TYPE_STEEL, + .accuracy = 0, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_BLOCK + .effect = EFFECT_MEAN_LOOK, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_HOWL + .effect = EFFECT_ATTACK_UP, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 40, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_DRAGON_CLAW + .effect = EFFECT_HIT, + .power = 80, + .type = TYPE_DRAGON, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_FRENZY_PLANT + .effect = EFFECT_RECHARGE, + .power = 150, + .type = TYPE_GRASS, + .accuracy = 90, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_BULK_UP + .effect = EFFECT_BULK_UP, + .power = 0, + .type = TYPE_FIGHTING, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_BOUNCE + .effect = EFFECT_SEMI_INVULNERABLE, + .power = 85, + .type = TYPE_FLYING, + .accuracy = 85, + .pp = 5, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_MUD_SHOT + .effect = EFFECT_SPEED_DOWN_HIT, + .power = 55, + .type = TYPE_GROUND, + .accuracy = 95, + .pp = 15, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_POISON_TAIL + .effect = EFFECT_POISON_TAIL, + .power = 50, + .type = TYPE_POISON, + .accuracy = 100, + .pp = 25, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_COVET + .effect = EFFECT_THIEF, + .power = 40, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 40, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + }, + { // MOVE_VOLT_TACKLE + .effect = EFFECT_DOUBLE_EDGE, + .power = 120, + .type = TYPE_ELECTRIC, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_MAGICAL_LEAF + .effect = EFFECT_ALWAYS_HIT, + .power = 60, + .type = TYPE_GRASS, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_WATER_SPORT + .effect = EFFECT_WATER_SPORT, + .power = 0, + .type = TYPE_WATER, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + }, + { // MOVE_CALM_MIND + .effect = EFFECT_CALM_MIND, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_LEAF_BLADE + .effect = EFFECT_HIGH_CRITICAL, + .power = 70, + .type = TYPE_GRASS, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_DRAGON_DANCE + .effect = EFFECT_DRAGON_DANCE, + .power = 0, + .type = TYPE_DRAGON, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + }, + { // MOVE_ROCK_BLAST + .effect = EFFECT_MULTI_HIT, + .power = 25, + .type = TYPE_ROCK, + .accuracy = 80, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_SHOCK_WAVE + .effect = EFFECT_ALWAYS_HIT, + .power = 60, + .type = TYPE_ELECTRIC, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_WATER_PULSE + .effect = EFFECT_CONFUSE_HIT, + .power = 60, + .type = TYPE_WATER, + .accuracy = 100, + .pp = 20, + .secondaryEffectChance = 20, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, + { // MOVE_DOOM_DESIRE + .effect = EFFECT_FUTURE_SIGHT, + .power = 120, + .type = TYPE_STEEL, + .accuracy = 85, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = 0, + }, + { // MOVE_PSYCHO_BOOST + .effect = EFFECT_OVERHEAT, + .power = 140, + .type = TYPE_PSYCHIC, + .accuracy = 90, + .pp = 5, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + }, +}; + +#endif // GUARD_DATA_BATTLE_MOVES diff --git a/src/data/contest_moves.h b/src/data/contest_moves.h new file mode 100644 index 000000000..ae560c833 --- /dev/null +++ b/src/data/contest_moves.h @@ -0,0 +1,3008 @@ +const struct ContestMove gContestMoves[MOVES_COUNT] = +{ + [MOVE_NONE] = {0}, + + [MOVE_POUND] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_POUND, + .comboMoves = {0}, + }, + + [MOVE_KARATE_CHOP] = + { + .effect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY}, + }, + + [MOVE_DOUBLE_SLAP] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_POUND}, + }, + + [MOVE_COMET_PUNCH] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_MEGA_PUNCH] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_MIND_READER}, + }, + + [MOVE_PAY_DAY] = + { + .effect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_FIRE_PUNCH] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = COMBO_STARTER_FIRE_PUNCH, + .comboMoves = {COMBO_STARTER_SUNNY_DAY, COMBO_STARTER_THUNDER_PUNCH, COMBO_STARTER_ICE_PUNCH}, + }, + + [MOVE_ICE_PUNCH] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = COMBO_STARTER_ICE_PUNCH, + .comboMoves = {COMBO_STARTER_THUNDER_PUNCH, COMBO_STARTER_FIRE_PUNCH}, + }, + + [MOVE_THUNDER_PUNCH] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = COMBO_STARTER_THUNDER_PUNCH, + .comboMoves = {COMBO_STARTER_CHARGE, COMBO_STARTER_FIRE_PUNCH, COMBO_STARTER_ICE_PUNCH}, + }, + + [MOVE_SCRATCH] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_SCRATCH, + .comboMoves = {COMBO_STARTER_LEER}, + }, + + [MOVE_VICE_GRIP] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_VICE_GRIP, + .comboMoves = {0}, + }, + + [MOVE_GUILLOTINE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_VICE_GRIP}, + }, + + [MOVE_RAZOR_WIND] = + { + .effect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SWORDS_DANCE] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = COMBO_STARTER_SWORDS_DANCE, + .comboMoves = {0}, + }, + + [MOVE_CUT] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SWORDS_DANCE}, + }, + + [MOVE_GUST] = + { + .effect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_WING_ATTACK] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_WHIRLWIND] = + { + .effect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_FLY] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_BIND] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_VICE_GRIP}, + }, + + [MOVE_SLAM] = + { + .effect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_POUND}, + }, + + [MOVE_VINE_WHIP] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_GROWTH}, + }, + + [MOVE_STOMP] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0,{0, COMBO_STARTER_LEER}, + }, + + [MOVE_DOUBLE_KICK] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_MEGA_KICK] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_MIND_READER}, + }, + + [MOVE_JUMP_KICK] = + { + .effect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_MIND_READER}, + }, + + [MOVE_ROLLING_KICK] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SAND_ATTACK] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = COMBO_STARTER_SAND_ATTACK, + .comboMoves = {COMBO_STARTER_MUD_SLAP, COMBO_STARTER_SANDSTORM}, + }, + + [MOVE_HEADBUTT] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MON, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY}, + }, + + [MOVE_HORN_ATTACK] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = COMBO_STARTER_HORN_ATTACK, + .comboMoves = {COMBO_STARTER_LEER}, + }, + + [MOVE_FURY_ATTACK] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_HORN_ATTACK, COMBO_STARTER_PECK}, + }, + + [MOVE_HORN_DRILL] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_HORN_ATTACK}, + }, + + [MOVE_TACKLE] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_DEFENSE_CURL, COMBO_STARTER_LEER, COMBO_STARTER_HARDEN}, + }, + + [MOVE_BODY_SLAM] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_WRAP] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_TAKE_DOWN] = + { + .effect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_HARDEN}, + }, + + [MOVE_THRASH] = + { + .effect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAGE}, + }, + + [MOVE_DOUBLE_EDGE] = + { + .effect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_HARDEN}, + }, + + [MOVE_TAIL_WHIP] = + { + .effect = CONTEST_EFFECT_BETTER_IF_LAST, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CHARM}, + }, + + [MOVE_POISON_STING] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_TWINEEDLE] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MON, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_PIN_MISSILE] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_LEER] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = COMBO_STARTER_LEER, + .comboMoves = {COMBO_STARTER_RAGE, COMBO_STARTER_SCARY_FACE}, + }, + + [MOVE_BITE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_LEER, COMBO_STARTER_SCARY_FACE}, + }, + + [MOVE_GROWL] = + { + .effect = CONTEST_EFFECT_BETTER_IF_LAST, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CHARM}, + }, + + [MOVE_ROAR] = + { + .effect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SING] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = COMBO_STARTER_SING, + .comboMoves = {0}, + }, + + [MOVE_SUPERSONIC] = + { + .effect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SONIC_BOOM] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_DISABLE] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_ACID] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_EMBER] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_FLAMETHROWER] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_MIST] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_WATER_GUN] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_WATER_SPORT, COMBO_STARTER_MUD_SPORT}, + }, + + [MOVE_HYDRO_PUMP] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE}, + }, + + [MOVE_SURF] = + { + .effect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = COMBO_STARTER_SURF, + .comboMoves = {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_DIVE}, + }, + + [MOVE_ICE_BEAM] = + { + .effect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_BLIZZARD] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_POWDER_SNOW, COMBO_STARTER_HAIL}, + }, + + [MOVE_PSYBEAM] = + { + .effect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CALM_MIND}, + }, + + [MOVE_BUBBLE_BEAM] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE}, + }, + + [MOVE_AURORA_BEAM] = + { + .effect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_HYPER_BEAM] = + { + .effect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_PECK] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = COMBO_STARTER_PECK, + .comboMoves = {0}, + }, + + [MOVE_DRILL_PECK] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_PECK}, + }, + + [MOVE_SUBMISSION] = + { + .effect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_MIND_READER}, + }, + + [MOVE_LOW_KICK] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_COUNTER] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_TAUNT}, + }, + + [MOVE_SEISMIC_TOSS] = + { + .effect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FAKE_OUT}, + }, + + [MOVE_STRENGTH] = + { + .effect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_ABSORB] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_GROWTH}, + }, + + [MOVE_MEGA_DRAIN] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_GROWTH}, + }, + + [MOVE_LEECH_SEED] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_GROWTH] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = COMBO_STARTER_GROWTH, + .comboMoves = {0}, + }, + + [MOVE_RAZOR_LEAF] = + { + .effect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_GROWTH}, + }, + + [MOVE_SOLAR_BEAM] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY, COMBO_STARTER_GROWTH}, + }, + + [MOVE_POISON_POWDER] = + { + .effect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SWEET_SCENT}, + }, + + [MOVE_STUN_SPORE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SWEET_SCENT}, + }, + + [MOVE_SLEEP_POWDER] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SWEET_SCENT}, + }, + + [MOVE_PETAL_DANCE] = + { + .effect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_GROWTH}, + }, + + [MOVE_STRING_SHOT] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = COMBO_STARTER_STRING_SHOT, + .comboMoves = {0}, + }, + + [MOVE_DRAGON_RAGE] = + { + .effect = CONTEST_EFFECT_BETTER_WHEN_LATER, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = COMBO_STARTER_DRAGON_RAGE, + .comboMoves = {COMBO_STARTER_DRAGON_BREATH, COMBO_STARTER_DRAGON_DANCE}, + }, + + [MOVE_FIRE_SPIN] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_THUNDER_SHOCK] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CHARGE}, + }, + + [MOVE_THUNDERBOLT] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CHARGE}, + }, + + [MOVE_THUNDER_WAVE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CHARGE}, + }, + + [MOVE_THUNDER] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CHARGE, COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_LOCK_ON}, + }, + + [MOVE_ROCK_THROW] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_ROCK_THROW, + .comboMoves = {0}, + }, + + [MOVE_EARTHQUAKE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_EARTHQUAKE, + .comboMoves = {0}, + }, + + [MOVE_FISSURE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_EARTHQUAKE}, + }, + + [MOVE_DIG] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_TOXIC] = + { + .effect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_CONFUSION] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = COMBO_STARTER_CONFUSION, + .comboMoves = {COMBO_STARTER_PSYCHIC, COMBO_STARTER_KINESIS, COMBO_STARTER_CALM_MIND}, + }, + + [MOVE_PSYCHIC] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = COMBO_STARTER_PSYCHIC, + .comboMoves = {COMBO_STARTER_KINESIS, COMBO_STARTER_CONFUSION, COMBO_STARTER_CALM_MIND}, + }, + + [MOVE_HYPNOSIS] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = COMBO_STARTER_HYPNOSIS, + .comboMoves = {0}, + }, + + [MOVE_MEDITATE] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CALM_MIND}, + }, + + [MOVE_AGILITY] = + { + .effect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_DOUBLE_TEAM}, + }, + + [MOVE_QUICK_ATTACK] = + { + .effect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_DOUBLE_TEAM}, + }, + + [MOVE_RAGE] = + { + .effect = CONTEST_EFFECT_REPETITION_NOT_BORING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = COMBO_STARTER_RAGE, + .comboMoves = {0}, + }, + + [MOVE_TELEPORT] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_DOUBLE_TEAM, COMBO_STARTER_PSYCHIC, COMBO_STARTER_KINESIS, COMBO_STARTER_CONFUSION}, + }, + + [MOVE_NIGHT_SHADE] = + { + .effect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_MIMIC] = + { + .effect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SCREECH] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_DOUBLE_TEAM] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = COMBO_STARTER_DOUBLE_TEAM, + .comboMoves = {0}, + }, + + [MOVE_RECOVER] = + { + .effect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_HARDEN] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_HARDEN, + .comboMoves = {0}, + }, + + [MOVE_MINIMIZE] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SMOKESCREEN] = + { + .effect = CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SMOG}, + }, + + [MOVE_CONFUSE_RAY] = + { + .effect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_WITHDRAW] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE}, + }, + + [MOVE_DEFENSE_CURL] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = COMBO_STARTER_DEFENSE_CURL, + .comboMoves = {0}, + }, + + [MOVE_BARRIER] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_LIGHT_SCREEN] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CALM_MIND}, + }, + + [MOVE_HAZE] = + { + .effect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_REFLECT] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CALM_MIND}, + }, + + [MOVE_FOCUS_ENERGY] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = COMBO_STARTER_FOCUS_ENERGY, + .comboMoves = {0}, + }, + + [MOVE_BIDE] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_METRONOME] = + { + .effect = CONTEST_EFFECT_REPETITION_NOT_BORING, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_MIRROR_MOVE] = + { + .effect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SELF_DESTRUCT] = + { + .effect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_EGG_BOMB] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SOFT_BOILED}, + }, + + [MOVE_LICK] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SMOG] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_SMOG, + .comboMoves = {0}, + }, + + [MOVE_SLUDGE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_SLUDGE, + .comboMoves = {COMBO_STARTER_SLUDGE_BOMB}, + }, + + [MOVE_BONE_CLUB] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_BONE_CLUB, + .comboMoves = {COMBO_STARTER_BONEMERANG, COMBO_STARTER_BONE_RUSH}, + }, + + [MOVE_FIRE_BLAST] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_WATERFALL] = + { + .effect = CONTEST_EFFECT_BETTER_IF_LAST, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE}, + }, + + [MOVE_CLAMP] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE}, + }, + + [MOVE_SWIFT] = + { + .effect = CONTEST_EFFECT_BETTER_IF_FIRST, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SKULL_BASH] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SPIKE_CANNON] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_CONSTRICT] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MON, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_AMNESIA] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_KINESIS] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = COMBO_STARTER_KINESIS, + .comboMoves = {COMBO_STARTER_PSYCHIC, COMBO_STARTER_CONFUSION}, + }, + + [MOVE_SOFT_BOILED] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = COMBO_STARTER_SOFT_BOILED, + .comboMoves = {0}, + }, + + [MOVE_HI_JUMP_KICK] = + { + .effect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_MIND_READER}, + }, + + [MOVE_GLARE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_LEER}, + }, + + [MOVE_DREAM_EATER] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_HYPNOSIS, COMBO_STARTER_CALM_MIND}, + }, + + [MOVE_POISON_GAS] = + { + .effect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_BARRAGE] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_LEECH_LIFE] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_LOVELY_KISS] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SKY_ATTACK] = + { + .effect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_TRANSFORM] = + { + .effect = CONTEST_EFFECT_REPETITION_NOT_BORING, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_BUBBLE] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE}, + }, + + [MOVE_DIZZY_PUNCH] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SPORE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_FLASH] = + { + .effect = CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_PSYWAVE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CALM_MIND}, + }, + + [MOVE_SPLASH] = + { + .effect = CONTEST_EFFECT_BETTER_IF_LAST, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_ACID_ARMOR] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_CRABHAMMER] = + { + .effect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_SWORDS_DANCE}, + }, + + [MOVE_EXPLOSION] = + { + .effect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_FURY_SWIPES] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SCRATCH}, + }, + + [MOVE_BONEMERANG] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_BONEMERANG, + .comboMoves = {COMBO_STARTER_BONE_CLUB, COMBO_STARTER_BONE_RUSH}, + }, + + [MOVE_REST] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = COMBO_STARTER_REST, + .comboMoves = {COMBO_STARTER_BELLY_DRUM, COMBO_STARTER_CHARM, COMBO_STARTER_YAWN}, + }, + + [MOVE_ROCK_SLIDE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_ROCK_THROW}, + }, + + [MOVE_HYPER_FANG] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SHARPEN] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_CONVERSION] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_TRI_ATTACK] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_LOCK_ON}, + }, + + [MOVE_SUPER_FANG] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SCARY_FACE}, + }, + + [MOVE_SLASH] = + { + .effect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SWORDS_DANCE, COMBO_STARTER_SCRATCH}, + }, + + [MOVE_SUBSTITUTE] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_STRUGGLE] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SKETCH] = + { + .effect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_TRIPLE_KICK] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY}, + }, + + [MOVE_THIEF] = + { + .effect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SPIDER_WEB] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_STRING_SHOT}, + }, + + [MOVE_MIND_READER] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = COMBO_STARTER_MIND_READER, + .comboMoves = {0}, + }, + + [MOVE_NIGHTMARE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_HYPNOSIS}, + }, + + [MOVE_FLAME_WHEEL] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_SNORE] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_REST}, + }, + + [MOVE_CURSE] = + { + .effect = CONTEST_EFFECT_NEXT_APPEAL_LATER, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_CURSE, + .comboMoves = {0}, + }, + + [MOVE_FLAIL] = + { + .effect = CONTEST_EFFECT_BETTER_WHEN_LATER, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_ENDURE}, + }, + + [MOVE_CONVERSION_2] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_AEROBLAST] = + { + .effect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_COTTON_SPORE] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_REVERSAL] = + { + .effect = CONTEST_EFFECT_BETTER_IF_LAST, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_ENDURE}, + }, + + [MOVE_SPITE] = + { + .effect = CONTEST_EFFECT_BETTER_WHEN_LATER, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CURSE}, + }, + + [MOVE_POWDER_SNOW] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = COMBO_STARTER_POWDER_SNOW, + .comboMoves = {COMBO_STARTER_HAIL}, + }, + + [MOVE_PROTECT] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_HARDEN}, + }, + + [MOVE_MACH_PUNCH] = + { + .effect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SCARY_FACE] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_SCARY_FACE, + .comboMoves = {COMBO_STARTER_RAGE, COMBO_STARTER_LEER}, + }, + + [MOVE_FAINT_ATTACK] = + { + .effect = CONTEST_EFFECT_BETTER_IF_FIRST, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FAKE_OUT, COMBO_STARTER_LEER, COMBO_STARTER_POUND}, + }, + + [MOVE_SWEET_KISS] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CHARM}, + }, + + [MOVE_BELLY_DRUM] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = COMBO_STARTER_BELLY_DRUM, + .comboMoves = {0}, + }, + + [MOVE_SLUDGE_BOMB] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_SLUDGE_BOMB, + .comboMoves = {COMBO_STARTER_SLUDGE}, + }, + + [MOVE_MUD_SLAP] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = COMBO_STARTER_MUD_SLAP, + .comboMoves = {COMBO_STARTER_SAND_ATTACK, COMBO_STARTER_MUD_SPORT, COMBO_STARTER_SANDSTORM}, + }, + + [MOVE_OCTAZOOKA] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_LOCK_ON}, + }, + + [MOVE_SPIKES] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_ZAP_CANNON] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_LOCK_ON}, + }, + + [MOVE_FORESIGHT] = + { + .effect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_DESTINY_BOND] = + { + .effect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_MEAN_LOOK, COMBO_STARTER_CURSE, COMBO_STARTER_ENDURE}, + }, + + [MOVE_PERISH_SONG] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_MEAN_LOOK, COMBO_STARTER_SING}, + }, + + [MOVE_ICY_WIND] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_DETECT] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_TAUNT}, + }, + + [MOVE_BONE_RUSH] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_BONE_RUSH, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_BONE_CLUB, COMBO_STARTER_BONEMERANG}, + }, + + [MOVE_LOCK_ON] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = COMBO_STARTER_LOCK_ON, + .comboMoves = {0}, + }, + + [MOVE_OUTRAGE] = + { + .effect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SANDSTORM] = + { + .effect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_SANDSTORM, + .comboMoves = {0}, + }, + + [MOVE_GIGA_DRAIN] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_GROWTH}, + }, + + [MOVE_ENDURE] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_ENDURE, + .comboMoves = {0}, + }, + + [MOVE_CHARM] = + { + .effect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = COMBO_STARTER_CHARM, + .comboMoves = {0}, + }, + + [MOVE_ROLLOUT] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_DEFENSE_CURL, COMBO_STARTER_HARDEN}, + }, + + [MOVE_FALSE_SWIPE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SWORDS_DANCE}, + }, + + [MOVE_SWAGGER] = + { + .effect = CONTEST_EFFECT_BETTER_IF_FIRST, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_MILK_DRINK] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SPARK] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CHARGE}, + }, + + [MOVE_FURY_CUTTER] = + { + .effect = CONTEST_EFFECT_REPETITION_NOT_BORING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SWORDS_DANCE}, + }, + + [MOVE_STEEL_WING] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_MEAN_LOOK] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = COMBO_STARTER_MEAN_LOOK, + .comboMoves = {COMBO_STARTER_CURSE}, + }, + + [MOVE_ATTRACT] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SLEEP_TALK] = + { + .effect = CONTEST_EFFECT_REPETITION_NOT_BORING, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_REST}, + }, + + [MOVE_HEAL_BELL] = + { + .effect = CONTEST_EFFECT_BETTER_IF_LAST, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_RETURN] = + { + .effect = CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_PRESENT] = + { + .effect = CONTEST_EFFECT_REPETITION_NOT_BORING, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_FRUSTRATION] = + { + .effect = CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SAFEGUARD] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_PAIN_SPLIT] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_ENDURE}, + }, + + [MOVE_SACRED_FIRE] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_MAGNITUDE] = + { + .effect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_DYNAMIC_PUNCH] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_MIND_READER}, + }, + + [MOVE_MEGAHORN] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_DRAGON_BREATH] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = COMBO_STARTER_DRAGON_BREATH, + .comboMoves = {COMBO_STARTER_DRAGON_RAGE, COMBO_STARTER_DRAGON_DANCE}, + }, + + [MOVE_BATON_PASS] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_ENCORE] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_PURSUIT] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_RAPID_SPIN] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SWEET_SCENT] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = COMBO_STARTER_SWEET_SCENT, + .comboMoves = {0}, + }, + + [MOVE_IRON_TAIL] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_METAL_CLAW] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_METAL_SOUND}, + }, + + [MOVE_VITAL_THROW] = + { + .effect = CONTEST_EFFECT_NEXT_APPEAL_LATER, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FAKE_OUT}, + }, + + [MOVE_MORNING_SUN] = + { + .effect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_SYNTHESIS] = + { + .effect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_MOONLIGHT] = + { + .effect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_HIDDEN_POWER] = + { + .effect = CONTEST_EFFECT_REPETITION_NOT_BORING, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_CROSS_CHOP] = + { + .effect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY}, + }, + + [MOVE_TWISTER] = + { + .effect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_RAIN_DANCE] = + { + .effect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_RAIN_DANCE, + .comboMoves = {0}, + }, + + [MOVE_SUNNY_DAY] = + { + .effect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = COMBO_STARTER_SUNNY_DAY, + .comboMoves = {0}, + }, + + [MOVE_CRUNCH] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SCARY_FACE}, + }, + + [MOVE_MIRROR_COAT] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_TAUNT}, + }, + + [MOVE_PSYCH_UP] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_EXTREME_SPEED] = + { + .effect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_ANCIENT_POWER] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SHADOW_BALL] = + { + .effect = CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_FUTURE_SIGHT] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_PSYCHIC, COMBO_STARTER_KINESIS, COMBO_STARTER_CONFUSION, COMBO_STARTER_CALM_MIND}, + }, + + [MOVE_ROCK_SMASH] = + { + .effect = CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_WHIRLPOOL] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE}, + }, + + [MOVE_BEAT_UP] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_FAKE_OUT] = + { + .effect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = COMBO_STARTER_FAKE_OUT, + .comboMoves = {0}, + }, + + [MOVE_UPROAR] = + { + .effect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_STOCKPILE] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = COMBO_STARTER_STOCKPILE, + .comboMoves = {0}, + }, + + [MOVE_SPIT_UP] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_STOCKPILE}, + }, + + [MOVE_SWALLOW] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_STOCKPILE}, + }, + + [MOVE_HEAT_WAVE] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_HAIL] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = COMBO_STARTER_HAIL, + .comboMoves = {0}, + }, + + [MOVE_TORMENT] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_FLATTER] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CHARM}, + }, + + [MOVE_WILL_O_WISP] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_MEMENTO] = + { + .effect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_FACADE] = + { + .effect = CONTEST_EFFECT_BETTER_IF_LAST, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_FOCUS_PUNCH] = + { + .effect = CONTEST_EFFECT_NEXT_APPEAL_LATER, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY}, + }, + + [MOVE_SMELLING_SALT] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_FOLLOW_ME] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_NATURE_POWER] = + { + .effect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_CHARGE] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = COMBO_STARTER_CHARGE, + .comboMoves = {0}, + }, + + [MOVE_TAUNT] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = COMBO_STARTER_TAUNT, + .comboMoves = {0}, + }, + + [MOVE_HELPING_HAND] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_TRICK] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_ROLE_PLAY] = + { + .effect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_WISH] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_ASSIST] = + { + .effect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_INGRAIN] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SUPERPOWER] = + { + .effect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_LOCK_ON}, + }, + + [MOVE_MAGIC_COAT] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_RECYCLE] = + { + .effect = CONTEST_EFFECT_REPETITION_NOT_BORING, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_REVENGE] = + { + .effect = CONTEST_EFFECT_NEXT_APPEAL_LATER, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_BRICK_BREAK] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY}, + }, + + [MOVE_YAWN] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = COMBO_STARTER_YAWN, + .comboMoves = {0}, + }, + + [MOVE_KNOCK_OFF] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FAKE_OUT}, + }, + + [MOVE_ENDEAVOR] = + { + .effect = CONTEST_EFFECT_BETTER_IF_LAST, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_ENDURE}, + }, + + [MOVE_ERUPTION] = + { + .effect = CONTEST_EFFECT_BETTER_WHEN_LATER, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_ENDURE, COMBO_STARTER_EARTHQUAKE, COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_SKILL_SWAP] = + { + .effect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_IMPRISON] = + { + .effect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_REFRESH] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_WATER_SPORT, COMBO_STARTER_SING}, + }, + + [MOVE_GRUDGE] = + { + .effect = CONTEST_EFFECT_BETTER_WHEN_LATER, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CURSE}, + }, + + [MOVE_SNATCH] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SECRET_POWER] = + { + .effect = CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_DIVE] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = COMBO_STARTER_DIVE, + .comboMoves = {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_SURF}, + }, + + [MOVE_ARM_THRUST] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_FAKE_OUT}, + }, + + [MOVE_CAMOUFLAGE] = + { + .effect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_TAIL_GLOW] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_LUSTER_PURGE] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CALM_MIND}, + }, + + [MOVE_MIST_BALL] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CALM_MIND}, + }, + + [MOVE_FEATHER_DANCE] = + { + .effect = CONTEST_EFFECT_BETTER_IF_LAST, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_TEETER_DANCE] = + { + .effect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_BLAZE_KICK] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_MUD_SPORT] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = COMBO_STARTER_MUD_SPORT, + .comboMoves = {COMBO_STARTER_MUD_SLAP, COMBO_STARTER_WATER_SPORT}, + }, + + [MOVE_ICE_BALL] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_NEEDLE_ARM] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SLACK_OFF] = + { + .effect = CONTEST_EFFECT_BETTER_WHEN_LATER, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_YAWN}, + }, + + [MOVE_HYPER_VOICE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_POISON_FANG] = + { + .effect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_CRUSH_CLAW] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SWORDS_DANCE}, + }, + + [MOVE_BLAST_BURN] = + { + .effect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_HYDRO_CANNON] = + { + .effect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE}, + }, + + [MOVE_METEOR_MASH] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_ASTONISH] = + { + .effect = CONTEST_EFFECT_STARTLE_PREV_MON, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_WEATHER_BALL] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_SUNNY_DAY, COMBO_STARTER_HAIL, COMBO_STARTER_SANDSTORM}, + }, + + [MOVE_AROMATHERAPY] = + { + .effect = CONTEST_EFFECT_BETTER_IF_LAST, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_FAKE_TEARS] = + { + .effect = CONTEST_EFFECT_BETTER_IF_LAST, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_AIR_CUTTER] = + { + .effect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_OVERHEAT] = + { + .effect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SUNNY_DAY}, + }, + + [MOVE_ODOR_SLEUTH] = + { + .effect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_ROCK_TOMB] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_ROCK_THROW}, + }, + + [MOVE_SILVER_WIND] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_METAL_SOUND] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = COMBO_STARTER_METAL_SOUND, + .comboMoves = {0}, + }, + + [MOVE_GRASS_WHISTLE] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_TICKLE] = + { + .effect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_COSMIC_POWER] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_WATER_SPOUT] = + { + .effect = CONTEST_EFFECT_BETTER_WHEN_LATER, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE}, + }, + + [MOVE_SIGNAL_BEAM] = + { + .effect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SHADOW_PUNCH] = + { + .effect = CONTEST_EFFECT_BETTER_IF_FIRST, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_EXTRASENSORY] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SKY_UPPERCUT] = + { + .effect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_FOCUS_ENERGY}, + }, + + [MOVE_SAND_TOMB] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_SANDSTORM}, + }, + + [MOVE_SHEER_COLD] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_MUDDY_WATER] = + { + .effect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE}, + }, + + [MOVE_BULLET_SEED] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_GROWTH}, + }, + + [MOVE_AERIAL_ACE] = + { + .effect = CONTEST_EFFECT_BETTER_IF_FIRST, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_ICICLE_SPEAR] = + { + .effect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_IRON_DEFENSE] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_BLOCK] = + { + .effect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_HOWL] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_DRAGON_CLAW] = + { + .effect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_DRAGON_BREATH, COMBO_STARTER_DRAGON_RAGE, COMBO_STARTER_DRAGON_DANCE}, + }, + + [MOVE_FRENZY_PLANT] = + { + .effect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_GROWTH}, + }, + + [MOVE_BULK_UP] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_BOUNCE] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_MUD_SHOT] = + { + .effect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_POISON_TAIL] = + { + .effect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_COVET] = + { + .effect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_VOLT_TACKLE] = + { + .effect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CHARGE}, + }, + + [MOVE_MAGICAL_LEAF] = + { + .effect = CONTEST_EFFECT_BETTER_IF_FIRST, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_GROWTH}, + }, + + [MOVE_WATER_SPORT] = + { + .effect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_CUTE, + .comboStarterId = COMBO_STARTER_WATER_SPORT, + .comboMoves = {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_MUD_SPORT}, + }, + + [MOVE_CALM_MIND] = + { + .effect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = COMBO_STARTER_CALM_MIND, + .comboMoves = {0}, + }, + + [MOVE_LEAF_BLADE] = + { + .effect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_DRAGON_DANCE] = + { + .effect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = COMBO_STARTER_DRAGON_DANCE, + .comboMoves = {COMBO_STARTER_DRAGON_RAGE, COMBO_STARTER_DRAGON_BREATH}, + }, + + [MOVE_ROCK_BLAST] = + { + .effect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_SHOCK_WAVE] = + { + .effect = CONTEST_EFFECT_BETTER_IF_FIRST, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CHARGE}, + }, + + [MOVE_WATER_PULSE] = + { + .effect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, + .contestCategory = CONTEST_CATEGORY_BEAUTY, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_RAIN_DANCE}, + }, + + [MOVE_DOOM_DESIRE] = + { + .effect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, + .contestCategory = CONTEST_CATEGORY_COOL, + .comboStarterId = 0, + .comboMoves = {0}, + }, + + [MOVE_PSYCHO_BOOST] = + { + .effect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, + .contestCategory = CONTEST_CATEGORY_SMART, + .comboStarterId = 0, + .comboMoves = {COMBO_STARTER_CALM_MIND}, + }, +}; + +const struct ContestEffect gContestEffects[] = +{ + {0, 40, 0}, // CONTEST_EFFECT_HIGHLY_APPEALING + {0, 60, 0}, // CONTEST_EFFECT_USER_MORE_EASILY_STARTLED + {0, 80, 0}, // CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES + {0, 30, 0}, // CONTEST_EFFECT_REPETITION_NOT_BORING + {1, 20, 0}, // CONTEST_EFFECT_AVOID_STARTLE_ONCE + {1, 10, 0}, // CONTEST_EFFECT_AVOID_STARTLE + {1, 30, 0}, // CONTEST_EFFECT_AVOID_STARTLE_SLIGHTLY + {1, 30, 0}, // CONTEST_EFFECT_USER_LESS_EASILY_STARTLED + {2, 30, 20}, // CONTEST_EFFECT_STARTLE_FRONT_MON + {3, 30, 10}, // CONTEST_EFFECT_SLIGHTLY_STARTLE_PREV_MONS + {2, 20, 30}, // CONTEST_EFFECT_STARTLE_PREV_MON + {3, 20, 20}, // CONTEST_EFFECT_STARTLE_PREV_MONS + {2, 10, 40}, // CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON + {3, 10, 30}, // CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS + {2, 30, 20}, // CONTEST_EFFECT_STARTLE_PREV_MON_2 + {3, 30, 10}, // CONTEST_EFFECT_STARTLE_PREV_MONS_2 + {4, 30, 0}, // CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION + {3, 20, 10}, // CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION + {3, 40, 40}, // CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN + {3, 20, 10}, // CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL + {3, 20, 10}, // CONTEST_EFFECT_STARTLE_MONS_COOL_APPEAL + {3, 20, 10}, // CONTEST_EFFECT_STARTLE_MONS_BEAUTY_APPEAL + {3, 20, 10}, // CONTEST_EFFECT_STARTLE_MONS_CUTE_APPEAL + {3, 20, 10}, // CONTEST_EFFECT_STARTLE_MONS_SMART_APPEAL + {3, 20, 10}, // CONTEST_EFFECT_STARTLE_MONS_TOUGH_APPEAL + {4, 20, 0}, // CONTEST_EFFECT_MAKE_FOLLOWING_MON_NERVOUS + {4, 20, 0}, // CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS + {4, 30, 0}, // CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS + {3, 30, 10}, // CONTEST_EFFECT_BADLY_STARTLES_MONS_IN_GOOD_CONDITION + {5, 20, 0}, // CONTEST_EFFECT_BETTER_IF_FIRST + {5, 20, 0}, // CONTEST_EFFECT_BETTER_IF_LAST + {5, 10, 0}, // CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES + {5, 10, 0}, // CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE + {5, 10, 0}, // CONTEST_EFFECT_BETTER_WHEN_LATER + {5, 10, 0}, // CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING + {5, 20, 0}, // CONTEST_EFFECT_BETTER_IF_SAME_TYPE + {5, 20, 0}, // CONTEST_EFFECT_BETTER_IF_DIFF_TYPE + {5, 30, 0}, // CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL + {5, 10, 0}, // CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS + {5, 10, 0}, // CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION + {6, 30, 0}, // CONTEST_EFFECT_NEXT_APPEAL_EARLIER + {6, 30, 0}, // CONTEST_EFFECT_NEXT_APPEAL_LATER + {6, 30, 0}, // CONTEST_EFFECT_MAKE_SCRAMBLING_TURN_ORDER_EASIER + {6, 30, 0}, // CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER + {5, 10, 0}, // CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST + {3, 20, 10}, // CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS + {5, 10, 0}, // CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED + {4, 30, 0} // CONTEST_EFFECT_DONT_EXCITE_AUDIENCE +}; + +// A lookup table with TRUE for each combo starter ID and FALSE for ID 0, +// which means "not a combo starter move". +const bool8 gComboStarterLookupTable[] = +{ + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE +}; + +void (*const gContestEffectFuncs[])(void) = +{ + ContestEffect_HighlyAppealing, + ContestEffect_UserMoreEasilyStartled, + ContestEffect_GreatAppealButNoMoreMoves, + ContestEffect_RepetitionNotBoring, + ContestEffect_AvoidStartleOnce, + ContestEffect_AvoidStartle, + ContestEffect_AvoidStartleSlightly, + ContestEffect_UserLessEasilyStartled, + ContestEffect_StartleFrontMon, + ContestEffect_StartlePrevMons, + ContestEffect_StartleFrontMon, + ContestEffect_StartlePrevMons, + ContestEffect_StartleFrontMon, + ContestEffect_StartlePrevMons, + ContestEffect_StartlePrevMon2, + ContestEffect_StartlePrevMons2, + ContestEffect_ShiftJudgeAttention, + ContestEffect_StartleMonWithJudgesAttention, + ContestEffect_JamsOthersButMissOneTurn, + ContestEffect_StartleMonsSameTypeAppeal, + ContestEffect_StartleMonsCoolAppeal, + ContestEffect_StartleMonsBeautyAppeal, + ContestEffect_StartleMonsCuteAppeal, + ContestEffect_StartleMonsSmartAppeal, + ContestEffect_StartleMonsToughAppeal, + ContestEffect_MakeFollowingMonNervous, + ContestEffect_MakeFollowingMonsNervous, + ContestEffect_WorsenConditionOfPrevMons, + ContestEffect_BadlyStartlesMonsInGoodCondition, + ContestEffect_BetterIfFirst, + ContestEffect_BetterIfLast, + ContestEffect_AppealAsGoodAsPrevOnes, + ContestEffect_AppealAsGoodAsPrevOne, + ContestEffect_BetterWhenLater, + ContestEffect_QualityDependsOnTiming, + ContestEffect_BetterIfSameType, + ContestEffect_BetterIfDiffType, + ContestEffect_AffectedByPrevAppeal, + ContestEffect_ImproveConditionPreventNervousness, + ContestEffect_BetterWithGoodCondition, + ContestEffect_NextAppealEarlier, + ContestEffect_NextAppealLater, + ContestEffect_MakeScramblingTurnOrderEasier, + ContestEffect_ScrambleNextTurnOrder, + ContestEffect_ExciteAudienceInAnyContest, + ContestEffect_BadlyStartleMonsWithGoodAppeals, + ContestEffect_BetterWhenAudienceExcited, + ContestEffect_DontExciteAudience, +}; diff --git a/src/data/decoration/description.h b/src/data/decoration/description.h new file mode 100644 index 000000000..ba4c3dd54 --- /dev/null +++ b/src/data/decoration/description.h @@ -0,0 +1,581 @@ +// +// Created by scott on 10/21/2017. +// + +#ifndef GUARD_DATA_DECORATION_DESCRIPTION_H +#define GUARD_DATA_DECORATION_DESCRIPTION_H + +const u8 DecorDesc_SMALL_DESK[] = _( + "A small desk built\n" + "for one."); + +const u8 DecorDesc_POKEMON_DESK[] = _( + "A small desk built in\n" + "the shape of a POKé\n" + "BALL."); + +const u8 DecorDesc_HEAVY_DESK[] = _( + "A large desk made\n" + "of steel. Put some\n" + "decorations on it."); + +const u8 DecorDesc_RAGGED_DESK[] = _( + "A large desk made\n" + "of wood. Put some\n" + "decorations on it."); + +const u8 DecorDesc_COMFORT_DESK[] = _( + "A large desk made\n" + "of leaves. Put some\n" + "decorations on it."); + +const u8 DecorDesc_PRETTY_DESK[] = _( + "A huge desk made\n" + "of glass. Holds lots\n" + "of decorations."); + +const u8 DecorDesc_BRICK_DESK[] = _( + "A huge desk made\n" + "of brick. Holds lots\n" + "of decorations."); + +const u8 DecorDesc_CAMP_DESK[] = _( + "A huge desk made\n" + "of logs. Put lots of\n" + "decorations on it."); + +const u8 DecorDesc_HARD_DESK[] = _( + "A huge desk made\n" + "of rocks. Holds\n" + "many decorations."); + +const u8 DecorDesc_SMALL_CHAIR[] = _( + "A small chair made\n" + "for one."); + +const u8 DecorDesc_POKEMON_CHAIR[] = _( + "A small chair built\n" + "in the shape of a\n" + "POKé BALL."); + +const u8 DecorDesc_HEAVY_CHAIR[] = _( + "A small chair made\n" + "of steel."); + +const u8 DecorDesc_PRETTY_CHAIR[] = _( + "A small chair made\n" + "of glass."); + +const u8 DecorDesc_COMFORT_CHAIR[] = _( + "A small chair made\n" + "of leaves."); + +const u8 DecorDesc_RAGGED_CHAIR[] = _( + "A small chair made\n" + "of wood."); + +const u8 DecorDesc_BRICK_CHAIR[] = _( + "A small chair made\n" + "of brick."); + +const u8 DecorDesc_CAMP_CHAIR[] = _( + "A small chair made\n" + "of logs."); + +const u8 DecorDesc_HARD_CHAIR[] = _( + "A small chair made\n" + "of rock."); + +const u8 DecorDesc_RED_PLANT[] = _( + "A vivid red potted\n" + "plant."); + +const u8 DecorDesc_TROPICAL_PLANT[] = _( + "A flowering tropical\n" + "plant in a pot."); + +const u8 DecorDesc_PRETTY_FLOWERS[] = _( + "A pot of cute\n" + "flowers."); + +const u8 DecorDesc_COLORFUL_PLANT[] = _( + "A large pot with\n" + "many colorful\n" + "flowers."); + +const u8 DecorDesc_BIG_PLANT[] = _( + "A large, umbrella-\n" + "shaped plant in a\n" + "big pot."); + +const u8 DecorDesc_GORGEOUS_PLANT[] = _( + "A large, impressive\n" + "plant in a big pot."); + +const u8 DecorDesc_RED_BRICK[] = _( + "A red-colored brick.\n" + "Decorations can be\n" + "placed on top."); + +const u8 DecorDesc_YELLOW_BRICK[] = _( + "A yellow-colored\n" + "brick. Put some\n" + "decorations on top."); + +const u8 DecorDesc_BLUE_BRICK[] = _( + "A blue-colored\n" + "brick. Put some\n" + "decorations on top."); + +const u8 DecorDesc_RED_BALLOON[] = _( + "A red balloon filled\n" + "with water. Bursts\n" + "if stepped on."); + +const u8 DecorDesc_BLUE_BALLOON[] = _( + "A blue balloon filled\n" + "with water. Bursts\n" + "if stepped on."); + +const u8 DecorDesc_YELLOW_BALLOON[] = _( + "A yellow balloon\n" + "filled with water.\n" + "Pops if stepped on."); + +const u8 DecorDesc_RED_TENT[] = _( + "A large red tent.\n" + "You can hide inside\n" + "it."); + +const u8 DecorDesc_BLUE_TENT[] = _( + "A large blue tent.\n" + "You can hide inside\n" + "it."); + +const u8 DecorDesc_SOLID_BOARD[] = _( + "Place over a hole to\n" + "cross to the other\n" + "side."); + +const u8 DecorDesc_SLIDE[] = _( + "Use to slide down\n" + "from the platform."); + +const u8 DecorDesc_FENCE_LENGTH[] = _( + "A small fence that\n" + "blocks passage."); + +const u8 DecorDesc_FENCE_WIDTH[] = _( + "A small fence that\n" + "blocks passage."); + +const u8 DecorDesc_TIRE[] = _( + "An old large tire.\n" + "Decorations can be\n" + "placed on top."); + +const u8 DecorDesc_STAND[] = _( + "A large pedestal\n" + "with steps."); + +const u8 DecorDesc_MUD_BALL[] = _( + "A large ball of mud.\n" + "Crumbles if stepped\n" + "on."); + +const u8 DecorDesc_BREAKABLE_DOOR[] = _( + "A weird door that\n" + "people can walk\n" + "right through."); + +const u8 DecorDesc_SAND_ORNAMENT[] = _( + "An ornament made\n" + "of sand. Crumbles if\n" + "touched."); + +const u8 DecorDesc_SILVER_SHIELD[] = _( + "Awarded for 50\n" + "straight wins at\n" + "the BATTLE TOWER."); + +const u8 DecorDesc_GOLD_SHIELD[] = _( + "Awarded for 100\n" + "straight wins at\n" + "the BATTLE TOWER."); + +const u8 DecorDesc_GLASS_ORNAMENT[] = _( + "A glass replica of\n" + "a famous sculpture\n" + "at the ART MUSEUM."); + +const u8 DecorDesc_TV[] = _( + "A small, gray-\n" + "colored toy TV."); + +const u8 DecorDesc_ROUND_TV[] = _( + "A toy TV modeled\n" + "in the image of a\n" + "SEEDOT."); + +const u8 DecorDesc_CUTE_TV[] = _( + "A toy TV modeled\n" + "in the image of a\n" + "SKITTY."); + +const u8 DecorDesc_GLITTER_MAT[] = _( + "An odd mat that\n" + "glitters if stepped\n" + "on."); + +const u8 DecorDesc_JUMP_MAT[] = _( + "A trick mat that\n" + "jumps when it is\n" + "stepped on."); + +const u8 DecorDesc_SPIN_MAT[] = _( + "A trick mat that\n" + "spins around when\n" + "stepped on."); + +const u8 DecorDesc_C_LOW_NOTE_MAT[] = _( + "A mat that plays\n" + "a low C note when\n" + "stepped on."); + +const u8 DecorDesc_D_NOTE_MAT[] = _( + "A mat that plays\n" + "a D note when\n" + "stepped on."); + +const u8 DecorDesc_E_NOTE_MAT[] = _( + "A mat that plays\n" + "an E note when\n" + "stepped on."); + +const u8 DecorDesc_F_NOTE_MAT[] = _( + "A mat that plays\n" + "an F note when\n" + "stepped on."); + +const u8 DecorDesc_G_NOTE_MAT[] = _( + "A mat that plays\n" + "a G note when\n" + "stepped on."); + +const u8 DecorDesc_A_NOTE_MAT[] = _( + "A mat that plays\n" + "an A note when\n" + "stepped on."); + +const u8 DecorDesc_B_NOTE_MAT[] = _( + "A mat that plays\n" + "a B note when\n" + "stepped on."); + +const u8 DecorDesc_C_HIGH_NOTE_MAT[] = _( + "A mat that plays\n" + "a high C note when\n" + "stepped on."); + +const u8 DecorDesc_SURF_MAT[] = _( + "A mat designed with\n" + "a SURF image.\n" + "Put items on top."); + +const u8 DecorDesc_THUNDER_MAT[] = _( + "A mat designed with\n" + "a THUNDER image.\n" + "Put items on top."); + +const u8 DecorDesc_FIRE_BLAST_MAT[] = _( + "A mat designed with\n" + "a FIRE BLAST image.\n" + "Put items on top."); + +const u8 DecorDesc_POWDER_SNOW_MAT[] = _( + "A mat with a POWDER\n" + "SNOW image design.\n" + "Put items on top."); + +const u8 DecorDesc_ATTRACT_MAT[] = _( + "A mat designed with\n" + "an ATTRACT image.\n" + "Put items on top."); + +const u8 DecorDesc_FISSURE_MAT[] = _( + "A mat designed with\n" + "a FISSURE image.\n" + "Put items on top."); + +const u8 DecorDesc_SPIKES_MAT[] = _( + "A mat designed with\n" + "a SPIKES image.\n" + "Put items on top."); + +const u8 DecorDesc_BALL_POSTER[] = _( + "A small poster\n" + "printed with POKé\n" + "BALLS."); + +const u8 DecorDesc_GREEN_POSTER[] = _( + "A small poster with\n" + "a TREECKO print."); + +const u8 DecorDesc_RED_POSTER[] = _( + "A small poster with\n" + "a TORCHIC print."); + +const u8 DecorDesc_BLUE_POSTER[] = _( + "A small poster with\n" + "a MUDKIP print."); + +const u8 DecorDesc_CUTE_POSTER[] = _( + "A small poster with\n" + "an AZURILL print."); + +const u8 DecorDesc_PIKA_POSTER[] = _( + "A large poster with\n" + "a PIKACHU and\n" + "PICHU print."); + +const u8 DecorDesc_LONG_POSTER[] = _( + "A large poster with\n" + "a SEVIPER print."); + +const u8 DecorDesc_SEA_POSTER[] = _( + "A large poster with\n" + "a RELICANTH print."); + +const u8 DecorDesc_SKY_POSTER[] = _( + "A large poster with\n" + "a WINGULL print."); + +const u8 DecorDesc_KISS_POSTER[] = _( + "A large poster with\n" + "a SMOOCHUM print."); + +const u8 DecorDesc_PICHU_DOLL[] = _( + "A PICHU doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_PIKACHU_DOLL[] = _( + "A PIKACHU doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_MARILL_DOLL[] = _( + "A MARILL doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_TOGEPI_DOLL[] = _( + "A TOGEPI doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_CYNDAQUIL_DOLL[] = _( + "A CYNDAQUIL doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_CHIKORITA_DOLL[] = _( + "A CHIKORITA doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_TOTODILE_DOLL[] = _( + "A TOTODILE doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_JIGGLYPUFF_DOLL[] = _( + "A JIGGLYPUFF doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_MEOWTH_DOLL[] = _( + "A MEOWTH doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_CLEFAIRY_DOLL[] = _( + "A CLEFAIRY doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_DITTO_DOLL[] = _( + "A DITTO doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_SMOOCHUM_DOLL[] = _( + "A SMOOCHUM doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_TREECKO_DOLL[] = _( + "A TREECKO doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_TORCHIC_DOLL[] = _( + "A TORCHIC doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_MUDKIP_DOLL[] = _( + "A MUDKIP doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_DUSKULL_DOLL[] = _( + "A DUSKULL doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_WYNAUT_DOLL[] = _( + "A WYNAUT doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_BALTOY_DOLL[] = _( + "A BALTOY doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_KECLEON_DOLL[] = _( + "A KECLEON doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_AZURILL_DOLL[] = _( + "An AZURILL doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_SKITTY_DOLL[] = _( + "A SKITTY doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_SWABLU_DOLL[] = _( + "A SWABLU doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_GULPIN_DOLL[] = _( + "A GULPIN doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_LOTAD_DOLL[] = _( + "A LOTAD doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_SEEDOT_DOLL[] = _( + "A SEEDOT doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_PIKA_CUSHION[] = _( + "A PIKACHU cushion.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_ROUND_CUSHION[] = _( + "A MARILL cushion.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_KISS_CUSHION[] = _( + "A SMOOCHUM\n" + "cushion. Place it on\n" + "a mat or a desk."); + +const u8 DecorDesc_ZIGZAG_CUSHION[] = _( + "A ZIGZAGOON\n" + "cushion. Place it on\n" + "a mat or a desk."); + +const u8 DecorDesc_SPIN_CUSHION[] = _( + "A SPINDA cushion.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_DIAMOND_CUSHION[] = _( + "A SABLEYE cushion.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_BALL_CUSHION[] = _( + "A BALL cushion.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_GRASS_CUSHION[] = _( + "A grass-mark\n" + "cushion. Place it on\n" + "a mat or a desk."); + +const u8 DecorDesc_FIRE_CUSHION[] = _( + "A fire-mark\n" + "cushion. Place it on\n" + "a mat or a desk."); + +const u8 DecorDesc_WATER_CUSHION[] = _( + "A water-mark\n" + "cushion. Place it on\n" + "a mat or a desk."); + +const u8 DecorDesc_SNORLAX_DOLL[] = _( + "A large doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_RHYDON_DOLL[] = _( + "A large doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_LAPRAS_DOLL[] = _( + "A large doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_VENUSAUR_DOLL[] = _( + "A large doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_CHARIZARD_DOLL[] = _( + "A large doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_BLASTOISE_DOLL[] = _( + "A large doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_WAILMER_DOLL[] = _( + "A large doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_REGIROCK_DOLL[] = _( + "A large doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_REGICE_DOLL[] = _( + "A large doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_REGISTEEL_DOLL[] = _( + "A large doll.\n" + "Place it on a mat\n" + "or a desk."); +#endif //GUARD_DATA_DECORATION_DESCRIPTION_H diff --git a/src/data/decoration/header.h b/src/data/decoration/header.h new file mode 100644 index 000000000..64bed1c7e --- /dev/null +++ b/src/data/decoration/header.h @@ -0,0 +1,1100 @@ +// +// Created by scott on 10/21/2017. +// + +#ifndef GUARD_DATA_DECORATION_HEADER_H +#define GUARD_DATA_DECORATION_HEADER_H + +const struct Decoration gDecorations[] = { + { + DECOR_NONE, + _("SMALL DESK"), + DECORPERM_SOLID_FLOOR, + DECORSHAPE_1x1, + DECORCAT_DESK, + 0, + DecorDesc_SMALL_DESK, + DecorGfx_SMALL_DESK + }, { + DECOR_SMALL_DESK, + _("SMALL DESK"), + DECORPERM_SOLID_FLOOR, + DECORSHAPE_1x1, + DECORCAT_DESK, + 3000, + DecorDesc_SMALL_DESK, + DecorGfx_SMALL_DESK + }, { + DECOR_POKEMON_DESK, + _("POKéMON DESK"), + DECORPERM_SOLID_FLOOR, + DECORSHAPE_1x1, + DECORCAT_DESK, + 3000, + DecorDesc_POKEMON_DESK, + DecorGfx_POKEMON_DESK + }, { + DECOR_HEAVY_DESK, + _("HEAVY DESK"), + DECORPERM_SOLID_FLOOR, + DECORSHAPE_3x2, + DECORCAT_DESK, + 6000, + DecorDesc_HEAVY_DESK, + DecorGfx_HEAVY_DESK + }, { + DECOR_RAGGED_DESK, + _("RAGGED DESK"), + DECORPERM_SOLID_FLOOR, + DECORSHAPE_3x2, + DECORCAT_DESK, + 6000, + DecorDesc_RAGGED_DESK, + DecorGfx_RAGGED_DESK + }, { + DECOR_COMFORT_DESK, + _("COMFORT DESK"), + DECORPERM_SOLID_FLOOR, + DECORSHAPE_3x2, + DECORCAT_DESK, + 6000, + DecorDesc_COMFORT_DESK, + DecorGfx_COMFORT_DESK + }, { + DECOR_PRETTY_DESK, + _("PRETTY DESK"), + DECORPERM_SOLID_FLOOR, + DECORSHAPE_3x3, + DECORCAT_DESK, + 9000, + DecorDesc_PRETTY_DESK, + DecorGfx_PRETTY_DESK + }, { + DECOR_BRICK_DESK, + _("BRICK DESK"), + DECORPERM_SOLID_FLOOR, + DECORSHAPE_3x3, + DECORCAT_DESK, + 9000, + DecorDesc_BRICK_DESK, + DecorGfx_BRICK_DESK + }, { + DECOR_CAMP_DESK, + _("CAMP DESK"), + DECORPERM_SOLID_FLOOR, + DECORSHAPE_3x3, + DECORCAT_DESK, + 9000, + DecorDesc_CAMP_DESK, + DecorGfx_CAMP_DESK + }, { + DECOR_HARD_DESK, + _("HARD DESK"), + DECORPERM_SOLID_FLOOR, + DECORSHAPE_3x3, + DECORCAT_DESK, + 9000, + DecorDesc_HARD_DESK, + DecorGfx_HARD_DESK + }, { + DECOR_SMALL_CHAIR, + _("SMALL CHAIR"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_1x1, + DECORCAT_CHAIR, + 2000, + DecorDesc_SMALL_CHAIR, + DecorGfx_SMALL_CHAIR + }, { + DECOR_POKEMON_CHAIR, + _("POKéMON CHAIR"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_1x1, + DECORCAT_CHAIR, + 2000, + DecorDesc_POKEMON_CHAIR, + DecorGfx_POKEMON_CHAIR + }, { + DECOR_HEAVY_CHAIR, + _("HEAVY CHAIR"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_1x1, + DECORCAT_CHAIR, + 2000, + DecorDesc_HEAVY_CHAIR, + DecorGfx_HEAVY_CHAIR + }, { + DECOR_PRETTY_CHAIR, + _("PRETTY CHAIR"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_1x1, + DECORCAT_CHAIR, + 2000, + DecorDesc_PRETTY_CHAIR, + DecorGfx_PRETTY_CHAIR + }, { + DECOR_COMFORT_CHAIR, + _("COMFORT CHAIR"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_1x1, + DECORCAT_CHAIR, + 2000, + DecorDesc_COMFORT_CHAIR, + DecorGfx_COMFORT_CHAIR + }, { + DECOR_RAGGED_CHAIR, + _("RAGGED CHAIR"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_1x1, + DECORCAT_CHAIR, + 2000, + DecorDesc_RAGGED_CHAIR, + DecorGfx_RAGGED_CHAIR + }, { + DECOR_BRICK_CHAIR, + _("BRICK CHAIR"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_1x1, + DECORCAT_CHAIR, + 2000, + DecorDesc_BRICK_CHAIR, + DecorGfx_BRICK_CHAIR + }, { + DECOR_CAMP_CHAIR, + _("CAMP CHAIR"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_1x1, + DECORCAT_CHAIR, + 2000, + DecorDesc_CAMP_CHAIR, + DecorGfx_CAMP_CHAIR + }, { + DECOR_HARD_CHAIR, + _("HARD CHAIR"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_1x1, + DECORCAT_CHAIR, + 2000, + DecorDesc_HARD_CHAIR, + DecorGfx_HARD_CHAIR + }, { + DECOR_RED_PLANT, + _("RED PLANT"), + DECORPERM_BEHIND_FLOOR, + DECORSHAPE_1x2, + DECORCAT_PLANT, + 3000, + DecorDesc_RED_PLANT, + DecorGfx_RED_PLANT + }, { + DECOR_TROPICAL_PLANT, + _("TROPICAL PLANT"), + DECORPERM_BEHIND_FLOOR, + DECORSHAPE_1x2, + DECORCAT_PLANT, + 3000, + DecorDesc_TROPICAL_PLANT, + DecorGfx_TROPICAL_PLANT + }, { + DECOR_PRETTY_FLOWERS, + _("PRETTY FLOWERS"), + DECORPERM_BEHIND_FLOOR, + DECORSHAPE_1x2, + DECORCAT_PLANT, + 3000, + DecorDesc_PRETTY_FLOWERS, + DecorGfx_PRETTY_FLOWERS + }, { + DECOR_COLORFUL_PLANT, + _("COLORFUL PLANT"), + DECORPERM_BEHIND_FLOOR, + DECORSHAPE_2x2, + DECORCAT_PLANT, + 5000, + DecorDesc_COLORFUL_PLANT, + DecorGfx_COLORFUL_PLANT + }, { + DECOR_BIG_PLANT, + _("BIG PLANT"), + DECORPERM_BEHIND_FLOOR, + DECORSHAPE_2x2, + DECORCAT_PLANT, + 5000, + DecorDesc_BIG_PLANT, + DecorGfx_BIG_PLANT + }, { + DECOR_GORGEOUS_PLANT, + _("GORGEOUS PLANT"), + DECORPERM_BEHIND_FLOOR, + DECORSHAPE_2x2, + DECORCAT_PLANT, + 5000, + DecorDesc_GORGEOUS_PLANT, + DecorGfx_GORGEOUS_PLANT + }, { + DECOR_RED_BRICK, + _("RED BRICK"), + DECORPERM_SOLID_FLOOR, + DECORSHAPE_1x2, + DECORCAT_ORNAMENT, + 500, + DecorDesc_RED_BRICK, + DecorGfx_RED_BRICK + }, { + DECOR_YELLOW_BRICK, + _("YELLOW BRICK"), + DECORPERM_SOLID_FLOOR, + DECORSHAPE_1x2, + DECORCAT_ORNAMENT, + 500, + DecorDesc_YELLOW_BRICK, + DecorGfx_YELLOW_BRICK + }, { + DECOR_BLUE_BRICK, + _("BLUE BRICK"), + DECORPERM_SOLID_FLOOR, + DECORSHAPE_1x2, + DECORCAT_ORNAMENT, + 500, + DecorDesc_BLUE_BRICK, + DecorGfx_BLUE_BRICK + }, { + DECOR_RED_BALLOON, + _("RED BALLOON"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_1x1, + DECORCAT_ORNAMENT, + 500, + DecorDesc_RED_BALLOON, + DecorGfx_RED_BALLOON + }, { + DECOR_BLUE_BALLOON, + _("BLUE BALLOON"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_1x1, + DECORCAT_ORNAMENT, + 500, + DecorDesc_BLUE_BALLOON, + DecorGfx_BLUE_BALLOON + }, { + DECOR_YELLOW_BALLOON, + _("YELLOW BALLOON"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_1x1, + DECORCAT_ORNAMENT, + 500, + DecorDesc_YELLOW_BALLOON, + DecorGfx_YELLOW_BALLOON + }, { + DECOR_RED_TENT, + _("RED TENT"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_3x3, + DECORCAT_ORNAMENT, + 10000, + DecorDesc_RED_TENT, + DecorGfx_RED_TENT + }, { + DECOR_BLUE_TENT, + _("BLUE TENT"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_3x3, + DECORCAT_ORNAMENT, + 10000, + DecorDesc_BLUE_TENT, + DecorGfx_BLUE_TENT + }, { + DECOR_SOLID_BOARD, + _("SOLID BOARD"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_1x2, + DECORCAT_ORNAMENT, + 3000, + DecorDesc_SOLID_BOARD, + DecorGfx_SOLID_BOARD + }, { + DECOR_SLIDE, + _("SLIDE"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_2x4, + DECORCAT_ORNAMENT, + 8000, + DecorDesc_SLIDE, + DecorGfx_SLIDE + }, { + DECOR_FENCE_LENGTH, + _("FENCE LENGTH"), + DECORPERM_SOLID_FLOOR, + DECORSHAPE_1x1, + DECORCAT_ORNAMENT, + 500, + DecorDesc_FENCE_LENGTH, + DecorGfx_FENCE_LENGTH + }, { + DECOR_FENCE_WIDTH, + _("FENCE WIDTH"), + DECORPERM_SOLID_FLOOR, + DECORSHAPE_1x1, + DECORCAT_ORNAMENT, + 500, + DecorDesc_FENCE_WIDTH, + DecorGfx_FENCE_WIDTH + }, { + DECOR_TIRE, + _("TIRE"), + DECORPERM_SOLID_FLOOR, + DECORSHAPE_2x2, + DECORCAT_ORNAMENT, + 800, + DecorDesc_TIRE, + DecorGfx_TIRE + }, { + DECOR_STAND, + _("STAND"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_4x2, + DECORCAT_ORNAMENT, + 7000, + DecorDesc_STAND, + DecorGfx_STAND + }, { + DECOR_MUD_BALL, + _("MUD BALL"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_1x1, + DECORCAT_ORNAMENT, + 200, + DecorDesc_MUD_BALL, + DecorGfx_MUD_BALL + }, { + DECOR_BREAKABLE_DOOR, + _("BREAKABLE DOOR"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_1x2, + DECORCAT_ORNAMENT, + 3000, + DecorDesc_BREAKABLE_DOOR, + DecorGfx_BREAKABLE_DOOR + }, { + DECOR_SAND_ORNAMENT, + _("SAND ORNAMENT"), + DECORPERM_BEHIND_FLOOR, + DECORSHAPE_1x2, + DECORCAT_ORNAMENT, + 3000, + DecorDesc_SAND_ORNAMENT, + DecorGfx_SAND_ORNAMENT + }, { + DECOR_SILVER_SHIELD, + _("SILVER SHIELD"), + DECORPERM_BEHIND_FLOOR, + DECORSHAPE_1x2, + DECORCAT_ORNAMENT, + 0, + DecorDesc_SILVER_SHIELD, + DecorGfx_SILVER_SHIELD + }, { + DECOR_GOLD_SHIELD, + _("GOLD SHIELD"), + DECORPERM_BEHIND_FLOOR, + DECORSHAPE_1x2, + DECORCAT_ORNAMENT, + 0, + DecorDesc_GOLD_SHIELD, + DecorGfx_GOLD_SHIELD + }, { + DECOR_GLASS_ORNAMENT, + _("GLASS ORNAMENT"), + DECORPERM_BEHIND_FLOOR, + DECORSHAPE_1x2, + DECORCAT_ORNAMENT, + 0, + DecorDesc_GLASS_ORNAMENT, + DecorGfx_GLASS_ORNAMENT + }, { + DECOR_TV, + _("TV"), + DECORPERM_SOLID_FLOOR, + DECORSHAPE_1x1, + DECORCAT_ORNAMENT, + 3000, + DecorDesc_TV, + DecorGfx_TV + }, { + DECOR_ROUND_TV, + _("ROUND TV"), + DECORPERM_SOLID_FLOOR, + DECORSHAPE_1x1, + DECORCAT_ORNAMENT, + 4000, + DecorDesc_ROUND_TV, + DecorGfx_ROUND_TV + }, { + DECOR_CUTE_TV, + _("CUTE TV"), + DECORPERM_SOLID_FLOOR, + DECORSHAPE_1x1, + DECORCAT_ORNAMENT, + 4000, + DecorDesc_CUTE_TV, + DecorGfx_CUTE_TV + }, { + DECOR_GLITTER_MAT, + _("GLITTER MAT"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_1x1, + DECORCAT_MAT, + 2000, + DecorDesc_GLITTER_MAT, + DecorGfx_GLITTER_MAT + }, { + DECOR_JUMP_MAT, + _("JUMP MAT"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_1x1, + DECORCAT_MAT, + 2000, + DecorDesc_JUMP_MAT, + DecorGfx_JUMP_MAT + }, { + DECOR_SPIN_MAT, + _("SPIN MAT"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_1x1, + DECORCAT_MAT, + 2000, + DecorDesc_SPIN_MAT, + DecorGfx_SPIN_MAT + }, { + DECOR_C_LOW_NOTE_MAT, + _("C Low NOTE MAT"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_1x1, + DECORCAT_MAT, + 500, + DecorDesc_C_LOW_NOTE_MAT, + DecorGfx_C_LOW_NOTE_MAT + }, { + DECOR_D_NOTE_MAT, + _("D NOTE MAT"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_1x1, + DECORCAT_MAT, + 500, + DecorDesc_D_NOTE_MAT, + DecorGfx_D_NOTE_MAT + }, { + DECOR_E_NOTE_MAT, + _("E NOTE MAT"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_1x1, + DECORCAT_MAT, + 500, + DecorDesc_E_NOTE_MAT, + DecorGfx_E_NOTE_MAT + }, { + DECOR_F_NOTE_MAT, + _("F NOTE MAT"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_1x1, + DECORCAT_MAT, + 500, + DecorDesc_F_NOTE_MAT, + DecorGfx_F_NOTE_MAT + }, { + DECOR_G_NOTE_MAT, + _("G NOTE MAT"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_1x1, + DECORCAT_MAT, + 500, + DecorDesc_G_NOTE_MAT, + DecorGfx_G_NOTE_MAT + }, { + DECOR_A_NOTE_MAT, + _("A NOTE MAT"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_1x1, + DECORCAT_MAT, + 500, + DecorDesc_A_NOTE_MAT, + DecorGfx_A_NOTE_MAT + }, { + DECOR_B_NOTE_MAT, + _("B NOTE MAT"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_1x1, + DECORCAT_MAT, + 500, + DecorDesc_B_NOTE_MAT, + DecorGfx_B_NOTE_MAT + }, { + DECOR_C_HIGH_NOTE_MAT, + _("C High NOTE MAT"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_1x1, + DECORCAT_MAT, + 500, + DecorDesc_C_HIGH_NOTE_MAT, + DecorGfx_C_HIGH_NOTE_MAT + }, { + DECOR_SURF_MAT, + _("SURF MAT"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_3x3, + DECORCAT_MAT, + 4000, + DecorDesc_SURF_MAT, + DecorGfx_SURF_MAT + }, { + DECOR_THUNDER_MAT, + _("THUNDER MAT"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_3x3, + DECORCAT_MAT, + 4000, + DecorDesc_THUNDER_MAT, + DecorGfx_THUNDER_MAT + }, { + DECOR_FIRE_BLAST_MAT, + _("FIRE BLAST MAT"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_3x3, + DECORCAT_MAT, + 4000, + DecorDesc_FIRE_BLAST_MAT, + DecorGfx_FIRE_BLAST_MAT + }, { + DECOR_POWDER_SNOW_MAT, + _("POWDER SNOW MAT"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_3x3, + DECORCAT_MAT, + 4000, + DecorDesc_POWDER_SNOW_MAT, + DecorGfx_POWDER_SNOW_MAT + }, { + DECOR_ATTRACT_MAT, + _("ATTRACT MAT"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_3x3, + DECORCAT_MAT, + 4000, + DecorDesc_ATTRACT_MAT, + DecorGfx_ATTRACT_MAT + }, { + DECOR_FISSURE_MAT, + _("FISSURE MAT"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_3x3, + DECORCAT_MAT, + 4000, + DecorDesc_FISSURE_MAT, + DecorGfx_FISSURE_MAT + }, { + DECOR_SPIKES_MAT, + _("SPIKES MAT"), + DECORPERM_PASS_FLOOR, + DECORSHAPE_3x3, + DECORCAT_MAT, + 4000, + DecorDesc_SPIKES_MAT, + DecorGfx_SPIKES_MAT + }, { + DECOR_BALL_POSTER, + _("BALL POSTER"), + DECORPERM_NA_WALL, + DECORSHAPE_1x1, + DECORCAT_POSTER, + 1000, + DecorDesc_BALL_POSTER, + DecorGfx_BALL_POSTER + }, { + DECOR_GREEN_POSTER, + _("GREEN POSTER"), + DECORPERM_NA_WALL, + DECORSHAPE_1x1, + DECORCAT_POSTER, + 1000, + DecorDesc_GREEN_POSTER, + DecorGfx_GREEN_POSTER + }, { + DECOR_RED_POSTER, + _("RED POSTER"), + DECORPERM_NA_WALL, + DECORSHAPE_1x1, + DECORCAT_POSTER, + 1000, + DecorDesc_RED_POSTER, + DecorGfx_RED_POSTER + }, { + DECOR_BLUE_POSTER, + _("BLUE POSTER"), + DECORPERM_NA_WALL, + DECORSHAPE_1x1, + DECORCAT_POSTER, + 1000, + DecorDesc_BLUE_POSTER, + DecorGfx_BLUE_POSTER + }, { + DECOR_CUTE_POSTER, + _("CUTE POSTER"), + DECORPERM_NA_WALL, + DECORSHAPE_1x1, + DECORCAT_POSTER, + 1000, + DecorDesc_CUTE_POSTER, + DecorGfx_CUTE_POSTER + }, { + DECOR_PIKA_POSTER, + _("PIKA POSTER"), + DECORPERM_NA_WALL, + DECORSHAPE_2x1, + DECORCAT_POSTER, + 1500, + DecorDesc_PIKA_POSTER, + DecorGfx_PIKA_POSTER + }, { + DECOR_LONG_POSTER, + _("LONG POSTER"), + DECORPERM_NA_WALL, + DECORSHAPE_2x1, + DECORCAT_POSTER, + 1500, + DecorDesc_LONG_POSTER, + DecorGfx_LONG_POSTER + }, { + DECOR_SEA_POSTER, + _("SEA POSTER"), + DECORPERM_NA_WALL, + DECORSHAPE_2x1, + DECORCAT_POSTER, + 1500, + DecorDesc_SEA_POSTER, + DecorGfx_SEA_POSTER + }, { + DECOR_SKY_POSTER, + _("SKY POSTER"), + DECORPERM_NA_WALL, + DECORSHAPE_2x1, + DECORCAT_POSTER, + 1500, + DecorDesc_SKY_POSTER, + DecorGfx_SKY_POSTER + }, { + DECOR_KISS_POSTER, + _("KISS POSTER"), + DECORPERM_NA_WALL, + DECORSHAPE_2x1, + DECORCAT_POSTER, + 1500, + DecorDesc_KISS_POSTER, + DecorGfx_KISS_POSTER + }, { + DECOR_PICHU_DOLL, + _("PICHU DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_DOLL, + 3000, + DecorDesc_PICHU_DOLL, + DecorGfx_PICHU_DOLL + }, { + DECOR_PIKACHU_DOLL, + _("PIKACHU DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_DOLL, + 3000, + DecorDesc_PIKACHU_DOLL, + DecorGfx_PIKACHU_DOLL + }, { + DECOR_MARILL_DOLL, + _("MARILL DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_DOLL, + 3000, + DecorDesc_MARILL_DOLL, + DecorGfx_MARILL_DOLL + }, { + DECOR_TOGEPI_DOLL, + _("TOGEPI DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_DOLL, + 3000, + DecorDesc_TOGEPI_DOLL, + DecorGfx_TOGEPI_DOLL + }, { + DECOR_CYNDAQUIL_DOLL, + _("CYNDAQUIL DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_DOLL, + 3000, + DecorDesc_CYNDAQUIL_DOLL, + DecorGfx_CYNDAQUIL_DOLL + }, { + DECOR_CHIKORITA_DOLL, + _("CHIKORITA DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_DOLL, + 3000, + DecorDesc_CHIKORITA_DOLL, + DecorGfx_CHIKORITA_DOLL + }, { + DECOR_TOTODILE_DOLL, + _("TOTODILE DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_DOLL, + 3000, + DecorDesc_TOTODILE_DOLL, + DecorGfx_TOTODILE_DOLL + }, { + DECOR_JIGGLYPUFF_DOLL, + _("JIGGLYPUFF DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_DOLL, + 3000, + DecorDesc_JIGGLYPUFF_DOLL, + DecorGfx_JIGGLYPUFF_DOLL + }, { + DECOR_MEOWTH_DOLL, + _("MEOWTH DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_DOLL, + 3000, + DecorDesc_MEOWTH_DOLL, + DecorGfx_MEOWTH_DOLL + }, { + DECOR_CLEFAIRY_DOLL, + _("CLEFAIRY DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_DOLL, + 3000, + DecorDesc_CLEFAIRY_DOLL, + DecorGfx_CLEFAIRY_DOLL + }, { + DECOR_DITTO_DOLL, + _("DITTO DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_DOLL, + 3000, + DecorDesc_DITTO_DOLL, + DecorGfx_DITTO_DOLL + }, { + DECOR_SMOOCHUM_DOLL, + _("SMOOCHUM DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_DOLL, + 3000, + DecorDesc_SMOOCHUM_DOLL, + DecorGfx_SMOOCHUM_DOLL + }, { + DECOR_TREECKO_DOLL, + _("TREECKO DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_DOLL, + 3000, + DecorDesc_TREECKO_DOLL, + DecorGfx_TREECKO_DOLL + }, { + DECOR_TORCHIC_DOLL, + _("TORCHIC DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_DOLL, + 3000, + DecorDesc_TORCHIC_DOLL, + DecorGfx_TORCHIC_DOLL + }, { + DECOR_MUDKIP_DOLL, + _("MUDKIP DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_DOLL, + 3000, + DecorDesc_MUDKIP_DOLL, + DecorGfx_MUDKIP_DOLL + }, { + DECOR_DUSKULL_DOLL, + _("DUSKULL DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_DOLL, + 3000, + DecorDesc_DUSKULL_DOLL, + DecorGfx_DUSKULL_DOLL + }, { + DECOR_WYNAUT_DOLL, + _("WYNAUT DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_DOLL, + 3000, + DecorDesc_WYNAUT_DOLL, + DecorGfx_WYNAUT_DOLL + }, { + DECOR_BALTOY_DOLL, + _("BALTOY DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_DOLL, + 3000, + DecorDesc_BALTOY_DOLL, + DecorGfx_BALTOY_DOLL + }, { + DECOR_KECLEON_DOLL, + _("KECLEON DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_DOLL, + 3000, + DecorDesc_KECLEON_DOLL, + DecorGfx_KECLEON_DOLL + }, { + DECOR_AZURILL_DOLL, + _("AZURILL DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_DOLL, + 3000, + DecorDesc_AZURILL_DOLL, + DecorGfx_AZURILL_DOLL + }, { + DECOR_SKITTY_DOLL, + _("SKITTY DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_DOLL, + 3000, + DecorDesc_SKITTY_DOLL, + DecorGfx_SKITTY_DOLL + }, { + DECOR_SWABLU_DOLL, + _("SWABLU DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_DOLL, + 3000, + DecorDesc_SWABLU_DOLL, + DecorGfx_SWABLU_DOLL + }, { + DECOR_GULPIN_DOLL, + _("GULPIN DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_DOLL, + 3000, + DecorDesc_GULPIN_DOLL, + DecorGfx_GULPIN_DOLL + }, { + DECOR_LOTAD_DOLL, + _("LOTAD DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_DOLL, + 3000, + DecorDesc_LOTAD_DOLL, + DecorGfx_LOTAD_DOLL + }, { + DECOR_SEEDOT_DOLL, + _("SEEDOT DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_DOLL, + 3000, + DecorDesc_SEEDOT_DOLL, + DecorGfx_SEEDOT_DOLL + }, { + DECOR_PIKA_CUSHION, + _("PIKA CUSHION"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_CUSHION, + 2000, + DecorDesc_PIKA_CUSHION, + DecorGfx_PIKA_CUSHION + }, { + DECOR_ROUND_CUSHION, + _("ROUND CUSHION"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_CUSHION, + 2000, + DecorDesc_ROUND_CUSHION, + DecorGfx_ROUND_CUSHION + }, { + DECOR_KISS_CUSHION, + _("KISS CUSHION"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_CUSHION, + 2000, + DecorDesc_KISS_CUSHION, + DecorGfx_KISS_CUSHION + }, { + DECOR_ZIGZAG_CUSHION, + _("ZIGZAG CUSHION"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_CUSHION, + 2000, + DecorDesc_ZIGZAG_CUSHION, + DecorGfx_ZIGZAG_CUSHION + }, { + DECOR_SPIN_CUSHION, + _("SPIN CUSHION"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_CUSHION, + 2000, + DecorDesc_SPIN_CUSHION, + DecorGfx_SPIN_CUSHION + }, { + DECOR_DIAMOND_CUSHION, + _("DIAMOND CUSHION"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_CUSHION, + 2000, + DecorDesc_DIAMOND_CUSHION, + DecorGfx_DIAMOND_CUSHION + }, { + DECOR_BALL_CUSHION, + _("BALL CUSHION"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_CUSHION, + 2000, + DecorDesc_BALL_CUSHION, + DecorGfx_BALL_CUSHION + }, { + DECOR_GRASS_CUSHION, + _("GRASS CUSHION"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_CUSHION, + 2000, + DecorDesc_GRASS_CUSHION, + DecorGfx_GRASS_CUSHION + }, { + DECOR_FIRE_CUSHION, + _("FIRE CUSHION"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_CUSHION, + 2000, + DecorDesc_FIRE_CUSHION, + DecorGfx_FIRE_CUSHION + }, { + DECOR_WATER_CUSHION, + _("WATER CUSHION"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x1, + DECORCAT_CUSHION, + 2000, + DecorDesc_WATER_CUSHION, + DecorGfx_WATER_CUSHION + }, { + DECOR_SNORLAX_DOLL, + _("SNORLAX DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x2, + DECORCAT_DOLL, + 10000, + DecorDesc_SNORLAX_DOLL, + DecorGfx_SNORLAX_DOLL + }, { + DECOR_RHYDON_DOLL, + _("RHYDON DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x2, + DECORCAT_DOLL, + 10000, + DecorDesc_RHYDON_DOLL, + DecorGfx_RHYDON_DOLL + }, { + DECOR_LAPRAS_DOLL, + _("LAPRAS DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x2, + DECORCAT_DOLL, + 10000, + DecorDesc_LAPRAS_DOLL, + DecorGfx_LAPRAS_DOLL + }, { + DECOR_VENUSAUR_DOLL, + _("VENUSAUR DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x2, + DECORCAT_DOLL, + 10000, + DecorDesc_VENUSAUR_DOLL, + DecorGfx_VENUSAUR_DOLL + }, { + DECOR_CHARIZARD_DOLL, + _("CHARIZARD DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x2, + DECORCAT_DOLL, + 10000, + DecorDesc_CHARIZARD_DOLL, + DecorGfx_CHARIZARD_DOLL + }, { + DECOR_BLASTOISE_DOLL, + _("BLASTOISE DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x2, + DECORCAT_DOLL, + 10000, + DecorDesc_BLASTOISE_DOLL, + DecorGfx_BLASTOISE_DOLL + }, { + DECOR_WAILMER_DOLL, + _("WAILMER DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x2, + DECORCAT_DOLL, + 10000, + DecorDesc_WAILMER_DOLL, + DecorGfx_WAILMER_DOLL + }, { + DECOR_REGIROCK_DOLL, + _("REGIROCK DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x2, + DECORCAT_DOLL, + 10000, + DecorDesc_REGIROCK_DOLL, + DecorGfx_REGIROCK_DOLL + }, { + DECOR_REGICE_DOLL, + _("REGICE DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x2, + DECORCAT_DOLL, + 10000, + DecorDesc_REGICE_DOLL, + DecorGfx_REGICE_DOLL + }, { + DECOR_REGISTEEL_DOLL, + _("REGISTEEL DOLL"), + DECORPERM_SOLID_MAT, + DECORSHAPE_1x2, + DECORCAT_DOLL, + 10000, + DecorDesc_REGISTEEL_DOLL, + DecorGfx_REGISTEEL_DOLL} +}; + +#endif //GUARD_DATA_DECORATION_HEADER_H diff --git a/src/data/decoration/icon.h b/src/data/decoration/icon.h new file mode 100644 index 000000000..1f11bc19f --- /dev/null +++ b/src/data/decoration/icon.h @@ -0,0 +1,132 @@ +// +// Created by scott on 10/21/2017. +// + +#ifndef GUARD_ICON_H +#define GUARD_ICON_H + +const u8 *const gUnknown_085A6BE8[][2] = { + {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, + {NULL, NULL}, + {NULL, NULL}, + {gUnknown_08DB7AA0, gUnknown_08DB7B34}, + {gUnknown_08DB7B5C, gUnknown_08DB7BEC}, + {gUnknown_08DB7C08, gUnknown_08DB7CE8}, + {gUnknown_08DB7D08, gUnknown_08DB7DCC}, + {gUnknown_08DB7DF4, gUnknown_08DB7EA0}, + {gUnknown_08DB7EC4, gUnknown_08DB7F60}, + {gUnknown_08DB7F7C, gUnknown_08DB8070}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {gUnknown_08DB808C, gUnknown_08DB8138}, + {gUnknown_08DB8160, gUnknown_08DB8218}, + {gUnknown_08DB823C, gUnknown_08DB8300}, + {gUnknown_08DB8328, gUnknown_08DB8430}, + {gUnknown_08DB8458, gUnknown_08DB8528}, + {gUnknown_08DB854C, gUnknown_08DB862C}, + {gUnknown_08DB8654, gUnknown_08DB86C4}, + {gUnknown_08DB86E0, gUnknown_08DB8750}, + {gUnknown_08DB876C, gUnknown_08DB87DC}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {gUnknown_08DB87F8, gUnknown_08DB88D8}, + {gUnknown_08DB8900, gUnknown_08DB89E0}, + {gUnknown_08DB8A08, gUnknown_08DB8A68}, + {gUnknown_08DB8A84, gUnknown_08DB8B40}, + {NULL, NULL}, + {NULL, NULL}, + {gUnknown_08DB8B68, gUnknown_08DB8C40}, + {gUnknown_08DB8C5C, gUnknown_08DB8CF4}, + {NULL, NULL}, + {gUnknown_08DB8D18, gUnknown_08DB8DB0}, + {gUnknown_08DB8DD4, gUnknown_08DB8E80}, + {NULL, NULL}, + {NULL, NULL}, + {gUnknown_08DB8EA0, gUnknown_08DB8F58}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {gUnknown_08DB8F7C, gUnknown_08DB9038}, + {gUnknown_08DB9058, gUnknown_08DB9130}, + {gUnknown_08DB9154, gUnknown_08DB9218}, + {gUnknown_08DB9234, gUnknown_08DB92FC}, + {gUnknown_08DB931C, gUnknown_08DB93E8}, + {gUnknown_08DB940C, gUnknown_08DB94CC}, + {gUnknown_08DB94E8, gUnknown_08DB95AC}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {NULL, NULL}, + {gUnknown_08DB95D0, gUnknown_08DB96C4}, + {gUnknown_08DB96EC, gUnknown_08DB97F4}, + {gUnknown_08DB981C, gUnknown_08DB9908}, + {gUnknown_08DB9930, gUnknown_08DB9A54}, + {gUnknown_08DB9A7C, gUnknown_08DB9B7C}, + {gUnknown_08DB9BA4, gUnknown_08DB9CB0}, + {gUnknown_08DB9CD8, gUnknown_08DB9DAC}, + {gUnknown_08DB9F08, gUnknown_08DB9FFC}, + {gUnknown_08DB9DD4, gUnknown_08DB9EE4}, + {gUnknown_08DBA020, gUnknown_08DBA12C} +}; + +#endif //GUARD_ICON_H diff --git a/src/data/decoration/tilemaps.h b/src/data/decoration/tilemaps.h new file mode 100644 index 000000000..1cca7ae0b --- /dev/null +++ b/src/data/decoration/tilemaps.h @@ -0,0 +1,239 @@ +// +// Created by scott on 10/21/2017. +// + +#ifndef GUARD_TILEMAPS_H +#define GUARD_TILEMAPS_H + +const u8 Unknown_085A6FB0[] = { + 0x00, 0x01, 0x02, 0x03 +}; + +const u8 Unknown_085A6FB4[] = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d +}; + +const u8 Unknown_085A6FC0[] = { + 0x00, 0x01, 0x02, 0x03, + 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, + 0x0c, 0x0d, 0x0e, 0x0f +}; + +const u8 Unknown_085A6FD0[] = { + 0x00, 0x01, 0x04, 0x05, + 0x08, 0x09, 0x0c, 0x0d, + 0x10, 0x11, 0x14, 0x15 +}; + +const u8 Unknown_085A6FDC[] = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 +}; + +const u8 Unknown_085A6FE4[] = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f +}; + +const u8 Unknown_085A7004[] = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d +}; + +const u8 Unknown_085A7028[] = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d +}; + +const u8 Unknown_085A7040[] = { + 0x00, 0x00, 0x00, 0x00 +}; + +const u8 Unknown_085A7044[] = { + 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x01, 0x01 +}; + +const u8 Unknown_085A704C[] = { + 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, + 0x00, 0x00, 0x01, 0x01, 0x02, 0x02 +}; + +const u8 Unknown_085A7058[] = { + 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, + 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, + 0x04, 0x04, 0x05, 0x05, 0x06, 0x06, 0x07, 0x07, + 0x04, 0x04, 0x05, 0x05, 0x06, 0x06, 0x07, 0x07 +}; + +const u8 Unknown_085A7078[] = { + 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x01, 0x01, + 0x02, 0x02, 0x03, 0x03, + 0x02, 0x02, 0x03, 0x03 +}; + +const u8 Unknown_085A7088[] = { + 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x01 +}; + +const u8 Unknown_085A7090[] = { + 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x01, + 0x02, 0x02, 0x02, 0x02 +}; + +const u8 Unknown_085A709C[] = { + 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, + 0x02, 0x02, 0x03, 0x03, 0x02, 0x02, 0x03, 0x03, + 0x04, 0x04, 0x05, 0x05, 0x04, 0x04, 0x05, 0x05, + 0x06, 0x06, 0x07, 0x07, 0x06, 0x06, 0x07, 0x07 +}; + +const u8 Unknown_085A70BC[] = { + 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, + 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, + 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, + 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, + 0x06, 0x06, 0x07, 0x07, 0x08, 0x08, + 0x06, 0x06, 0x07, 0x07, 0x08, 0x08 +}; + +const u8 Unknown_085A70E0[] = { + 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, + 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, + 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, + 0x03, 0x03, 0x04, 0x04, 0x05, 0x05 +}; + +const u8 Unknown_085A70F8[] = { + 0x04, 0x05, 0x06, 0x07 +}; + +const u8 Unknown_085A70FC[] = { + 0x04, 0x05, 0x04, 0x05, + 0x06, 0x07, 0x06, 0x07 +}; + +const u8 Unknown_085A7104[] = { + 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, + 0x06, 0x07, 0x06, 0x07, 0x06, 0x07 +}; + +const u8 Unknown_085A7110[] = { + 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, + 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, + 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, + 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07 +}; + +const u8 Unknown_085A7130[] = { + 0x04, 0x05, 0x04, 0x05, + 0x06, 0x07, 0x06, 0x07, + 0x04, 0x05, 0x04, 0x05, + 0x06, 0x07, 0x06, 0x07 +}; + +const u8 Unknown_085A7140[] = { + 0x04, 0x05, 0x06, 0x07, + 0x04, 0x05, 0x06, 0x07 +}; + +const u8 Unknown_085A7148[] = { + 0x04, 0x05, 0x06, 0x07, + 0x04, 0x05, 0x06, 0x07, + 0x04, 0x05, 0x06, 0x07 +}; + +const u8 Unknown_085A7154[] = { + 0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07, + 0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07, + 0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07, + 0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07 +}; + +const u8 Unknown_085A7174[] = { + 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, + 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, + 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, + 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, + 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, + 0x06, 0x07, 0x06, 0x07, 0x06, 0x07 +}; + +const u8 Unknown_085A7198[] = { + 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, + 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, + 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, + 0x06, 0x07, 0x06, 0x07, 0x06, 0x07 +}; + +const struct { + const u8 *tiles; + const u8 *y; + const u8 *x; + u8 size; +} gUnknown_085A71B0[] = { + { + Unknown_085A6FB0, + Unknown_085A7040, + Unknown_085A70F8, + 0x04 + }, { + Unknown_085A6FDC, + Unknown_085A7044, + Unknown_085A70FC, + 0x08 + }, { + Unknown_085A6FB4, + Unknown_085A704C, + Unknown_085A7104, + 0x0c + }, { + Unknown_085A6FE4, + Unknown_085A7058, + Unknown_085A7110, + 0x20 + }, { + Unknown_085A6FC0, + Unknown_085A7078, + Unknown_085A7130, + 0x10 + }, { + Unknown_085A6FDC, + Unknown_085A7088, + Unknown_085A7140, + 0x08 + }, { + Unknown_085A6FD0, + Unknown_085A7090, + Unknown_085A7148, + 0x0c + }, { + Unknown_085A6FE4, + Unknown_085A709C, + Unknown_085A7154, + 0x20 + }, { + Unknown_085A7004, + Unknown_085A70BC, + Unknown_085A7174, + 0x24 + }, { + Unknown_085A7028, + Unknown_085A70E0, + Unknown_085A7198, + 0x18 + }}; + +#endif //GUARD_TILEMAPS_H diff --git a/src/data/decoration/tiles.h b/src/data/decoration/tiles.h new file mode 100644 index 000000000..6b3ed699f --- /dev/null +++ b/src/data/decoration/tiles.h @@ -0,0 +1,646 @@ +#ifndef GUARD_DATA_DECORATION_TILES +#define GUARD_DATA_DECORATION_TILES + +const u16 DecorGfx_SMALL_DESK[] = { + 0x87 +}; + +const u16 DecorGfx_POKEMON_DESK[] = { + 0x8F +}; + +const u16 DecorGfx_HEAVY_DESK[] = { + 0x90, + 0x91, + 0x92, + 0x98, + 0x99, + 0x9A +}; + +const u16 DecorGfx_RAGGED_DESK[] = { + 0x93, + 0x94, + 0x95, + 0x9B, + 0x9C, + 0x9D +}; + +const u16 DecorGfx_COMFORT_DESK[] = { + 0x96, + 0x97, + 0xA3, + 0x9E, + 0x9F, + 0xAB +}; + +const u16 DecorGfx_PRETTY_DESK[] = { + 0xBD, + 0xBE, + 0xBF, + 0xC5, + 0xC6, + 0xC7, + 0xCD, + 0xCE, + 0xCF +}; + +const u16 DecorGfx_BRICK_DESK[] = { + 0xA0, + 0xA1, + 0xA2, + 0xA8, + 0xA9, + 0xAA, + 0xB0, + 0xB1, + 0xB2 +}; + +const u16 DecorGfx_CAMP_DESK[] = { + 0xA4, + 0xA5, + 0xA6, + 0xAC, + 0xAD, + 0xAE, + 0xB4, + 0xB5, + 0xB6 +}; + +const u16 DecorGfx_HARD_DESK[] = { + 0xA7, + 0xBB, + 0xBC, + 0xAF, + 0xC3, + 0xC4, + 0xB7, + 0xCB, + 0xCC +}; + +const u16 DecorGfx_SMALL_CHAIR[] = { + 0xB8 +}; + +const u16 DecorGfx_POKEMON_CHAIR[] = { + 0xB9 +}; + +const u16 DecorGfx_HEAVY_CHAIR[] = { + 0xBA +}; + +const u16 DecorGfx_PRETTY_CHAIR[] = { + 0xC0 +}; + +const u16 DecorGfx_COMFORT_CHAIR[] = { + 0xC1 +}; + +const u16 DecorGfx_RAGGED_CHAIR[] = { + 0xC2 +}; + +const u16 DecorGfx_BRICK_CHAIR[] = { + 0xC8 +}; + +const u16 DecorGfx_CAMP_CHAIR[] = { + 0xC9 +}; + +const u16 DecorGfx_HARD_CHAIR[] = { + 0xCA +}; + +const u16 DecorGfx_RED_PLANT[] = { + 0xD0, + 0xD8 +}; + +const u16 DecorGfx_TROPICAL_PLANT[] = { + 0xD2, + 0xDA +}; + +const u16 DecorGfx_PRETTY_FLOWERS[] = { + 0xD4, + 0xDC +}; + +const u16 DecorGfx_COLORFUL_PLANT[] = { + 0xE0, + 0xE2, + 0xE8, + 0xE9 +}; + +const u16 DecorGfx_BIG_PLANT[] = { + 0xE4, + 0xE6, + 0xEC, + 0xED +}; + +const u16 DecorGfx_GORGEOUS_PLANT[] = { + 0xF0, + 0xF2, + 0xF8, + 0xF9 +}; + +const u16 DecorGfx_RED_BRICK[] = { + 0x25, + 0x2D +}; + +const u16 DecorGfx_YELLOW_BRICK[] = { + 0x26, + 0x2E +}; + +const u16 DecorGfx_BLUE_BRICK[] = { + 0x27, + 0x2F +}; + +const u16 DecorGfx_RED_BALLOON[] = { + 0x138 +}; + +const u16 DecorGfx_BLUE_BALLOON[] = { + 0x13C +}; + +const u16 DecorGfx_YELLOW_BALLOON[] = { + 0x140 +}; + +const u16 DecorGfx_RED_TENT[] = { + 0x30, + 0x31, + 0x32, + 0x38, + 0x39, + 0x3A, + 0x40, + 0x41, + 0x3B +}; + +const u16 DecorGfx_BLUE_TENT[] = { + 0x48, + 0x49, + 0x68, + 0x50, + 0x51, + 0x70, + 0x58, + 0x59, + 0x69 +}; + +const u16 DecorGfx_SOLID_BOARD[] = { + 0x34, + 0x3C +}; + +const u16 DecorGfx_SLIDE[] = { + 0x35, + 0x36, + 0x3D, + 0x3E, + 0x63, + 0x64, + 0x6F, + 0x77 +}; + +const u16 DecorGfx_FENCE_LENGTH[] = { + 0x33 +}; + +const u16 DecorGfx_FENCE_WIDTH[] = { + 0x2C +}; + +const u16 DecorGfx_TIRE[] = { + 0x80, + 0x81, + 0x88, + 0x89 +}; + +const u16 DecorGfx_STAND[] = { + 0x6A, + 0x6B, + 0x6C, + 0x6D, + 0x72, + 0x73, + 0x74, + 0x75 +}; + +const u16 DecorGfx_MUD_BALL[] = { + 0x28 +}; + +const u16 DecorGfx_BREAKABLE_DOOR[] = { + 0x37, + 0x3F +}; + +const u16 DecorGfx_SAND_ORNAMENT[] = { + 0x85, + 0x8D +}; + +const u16 DecorGfx_SILVER_SHIELD[] = { + 0xD6, + 0xDE +}; + +const u16 DecorGfx_GOLD_SHIELD[] = { + 0x12E, + 0x136 +}; + +const u16 DecorGfx_GLASS_ORNAMENT[] = { + 0x82, + 0x8A +}; + +const u16 DecorGfx_TV[] = { + 0xF4 +}; + +const u16 DecorGfx_ROUND_TV[] = { + 0xF5 +}; + +const u16 DecorGfx_CUTE_TV[] = { + 0xF6 +}; + +const u16 DecorGfx_GLITTER_MAT[] = { + 0x60 +}; + +const u16 DecorGfx_JUMP_MAT[] = { + 0x61 +}; + +const u16 DecorGfx_SPIN_MAT[] = { + 0x62 +}; + +const u16 DecorGfx_C_LOW_NOTE_MAT[] = { + 0x78 +}; + +const u16 DecorGfx_D_NOTE_MAT[] = { + 0x79 +}; + +const u16 DecorGfx_E_NOTE_MAT[] = { + 0x7A +}; + +const u16 DecorGfx_F_NOTE_MAT[] = { + 0x7B +}; + +const u16 DecorGfx_G_NOTE_MAT[] = { + 0x7C +}; + +const u16 DecorGfx_A_NOTE_MAT[] = { + 0x7D +}; + +const u16 DecorGfx_B_NOTE_MAT[] = { + 0x7E +}; + +const u16 DecorGfx_C_HIGH_NOTE_MAT[] = { + 0xB3 +}; + +const u16 DecorGfx_SURF_MAT[] = { + 0x42, + 0x43, + 0x44, + 0x4A, + 0x4B, + 0x4C, + 0x52, + 0x53, + 0x54 +}; + +const u16 DecorGfx_THUNDER_MAT[] = { + 0x45, + 0x46, + 0x47, + 0x4D, + 0x4E, + 0x4F, + 0x55, + 0x56, + 0x57 +}; + +const u16 DecorGfx_FIRE_BLAST_MAT[] = { + 0x5A, + 0x5B, + 0x5C, + 0x5D, + 0x5E, + 0x5F, + 0x65, + 0x66, + 0x67 +}; + +const u16 DecorGfx_POWDER_SNOW_MAT[] = { + 0x100, + 0x101, + 0x102, + 0x108, + 0x109, + 0x10A, + 0x110, + 0x111, + 0x112 +}; + +const u16 DecorGfx_ATTRACT_MAT[] = { + 0x103, + 0x104, + 0x105, + 0x10B, + 0x10C, + 0x10D, + 0x113, + 0x114, + 0x115 +}; + +const u16 DecorGfx_FISSURE_MAT[] = { + 0x106, + 0x107, + 0x118, + 0x10E, + 0x10F, + 0x120, + 0x116, + 0x117, + 0x128 +}; + +const u16 DecorGfx_SPIKES_MAT[] = { + 0x119, + 0x11A, + 0x11B, + 0x121, + 0x122, + 0x123, + 0x129, + 0x12A, + 0x12B +}; + +const u16 DecorGfx_BALL_POSTER[] = { + 0x130 +}; + +const u16 DecorGfx_GREEN_POSTER[] = { + 0x131 +}; + +const u16 DecorGfx_RED_POSTER[] = { + 0x132 +}; + +const u16 DecorGfx_BLUE_POSTER[] = { + 0x133 +}; + +const u16 DecorGfx_CUTE_POSTER[] = { + 0x134 +}; + +const u16 DecorGfx_PIKA_POSTER[] = { + 0x11C, + 0x11D +}; + +const u16 DecorGfx_LONG_POSTER[] = { + 0x11E, + 0x11F +}; + +const u16 DecorGfx_SEA_POSTER[] = { + 0x124, + 0x125 +}; + +const u16 DecorGfx_SKY_POSTER[] = { + 0x126, + 0x127 +}; + +const u16 DecorGfx_KISS_POSTER[] = { + 0x12C, + 0x12D +}; + +const u16 DecorGfx_PICHU_DOLL[] = { + EVENT_OBJ_GFX_PICHU_DOLL +}; + +const u16 DecorGfx_PIKACHU_DOLL[] = { + EVENT_OBJ_GFX_PIKACHU_DOLL +}; + +const u16 DecorGfx_MARILL_DOLL[] = { + EVENT_OBJ_GFX_MARILL_DOLL +}; + +const u16 DecorGfx_TOGEPI_DOLL[] = { + EVENT_OBJ_GFX_TOGEPI_DOLL +}; + +const u16 DecorGfx_CYNDAQUIL_DOLL[] = { + EVENT_OBJ_GFX_CYNDAQUIL_DOLL +}; + +const u16 DecorGfx_CHIKORITA_DOLL[] = { + EVENT_OBJ_GFX_CHIKORITA_DOLL +}; + +const u16 DecorGfx_TOTODILE_DOLL[] = { + EVENT_OBJ_GFX_TOTODILE_DOLL +}; + +const u16 DecorGfx_JIGGLYPUFF_DOLL[] = { + EVENT_OBJ_GFX_JIGGLYPUFF_DOLL +}; + +const u16 DecorGfx_MEOWTH_DOLL[] = { + EVENT_OBJ_GFX_MEOWTH_DOLL +}; + +const u16 DecorGfx_CLEFAIRY_DOLL[] = { + EVENT_OBJ_GFX_CLEFAIRY_DOLL +}; + +const u16 DecorGfx_DITTO_DOLL[] = { + EVENT_OBJ_GFX_DITTO_DOLL +}; + +const u16 DecorGfx_SMOOCHUM_DOLL[] = { + EVENT_OBJ_GFX_SMOOCHUM_DOLL +}; + +const u16 DecorGfx_TREECKO_DOLL[] = { + EVENT_OBJ_GFX_TREECKO_DOLL +}; + +const u16 DecorGfx_TORCHIC_DOLL[] = { + EVENT_OBJ_GFX_TORCHIC_DOLL +}; + +const u16 DecorGfx_MUDKIP_DOLL[] = { + EVENT_OBJ_GFX_MUDKIP_DOLL +}; + +const u16 DecorGfx_DUSKULL_DOLL[] = { + EVENT_OBJ_GFX_DUSKULL_DOLL +}; + +const u16 DecorGfx_WYNAUT_DOLL[] = { + EVENT_OBJ_GFX_WYNAUT_DOLL +}; + +const u16 DecorGfx_BALTOY_DOLL[] = { + EVENT_OBJ_GFX_BALTOY_DOLL +}; + +const u16 DecorGfx_KECLEON_DOLL[] = { + EVENT_OBJ_GFX_KECLEON_DOLL +}; + +const u16 DecorGfx_AZURILL_DOLL[] = { + EVENT_OBJ_GFX_AZURILL_DOLL +}; + +const u16 DecorGfx_SKITTY_DOLL[] = { + EVENT_OBJ_GFX_SKITTY_DOLL +}; + +const u16 DecorGfx_SWABLU_DOLL[] = { + EVENT_OBJ_GFX_SWABLU_DOLL +}; + +const u16 DecorGfx_GULPIN_DOLL[] = { + EVENT_OBJ_GFX_GULPIN_DOLL +}; + +const u16 DecorGfx_LOTAD_DOLL[] = { + EVENT_OBJ_GFX_LOTAD_DOLL +}; + +const u16 DecorGfx_SEEDOT_DOLL[] = { + EVENT_OBJ_GFX_SEEDOT_DOLL +}; + +const u16 DecorGfx_PIKA_CUSHION[] = { + EVENT_OBJ_GFX_PIKA_CUSHION +}; + +const u16 DecorGfx_ROUND_CUSHION[] = { + EVENT_OBJ_GFX_ROUND_CUSHION +}; + +const u16 DecorGfx_KISS_CUSHION[] = { + EVENT_OBJ_GFX_KISS_CUSHION +}; + +const u16 DecorGfx_ZIGZAG_CUSHION[] = { + EVENT_OBJ_GFX_ZIGZAG_CUSHION +}; + +const u16 DecorGfx_SPIN_CUSHION[] = { + EVENT_OBJ_GFX_SPIN_CUSHION +}; + +const u16 DecorGfx_DIAMOND_CUSHION[] = { + EVENT_OBJ_GFX_DIAMOND_CUSHION +}; + +const u16 DecorGfx_BALL_CUSHION[] = { + EVENT_OBJ_GFX_BALL_CUSHION +}; + +const u16 DecorGfx_GRASS_CUSHION[] = { + EVENT_OBJ_GFX_GRASS_CUSHION +}; + +const u16 DecorGfx_FIRE_CUSHION[] = { + EVENT_OBJ_GFX_FIRE_CUSHION +}; + +const u16 DecorGfx_WATER_CUSHION[] = { + EVENT_OBJ_GFX_WATER_CUSHION +}; + +const u16 DecorGfx_SNORLAX_DOLL[] = { + EVENT_OBJ_GFX_BIG_SNORLAX_DOLL +}; + +const u16 DecorGfx_RHYDON_DOLL[] = { + EVENT_OBJ_GFX_BIG_RHYDON_DOLL +}; + +const u16 DecorGfx_LAPRAS_DOLL[] = { + EVENT_OBJ_GFX_BIG_LAPRAS_DOLL +}; + +const u16 DecorGfx_VENUSAUR_DOLL[] = { + EVENT_OBJ_GFX_BIG_VENUSAUR_DOLL +}; + +const u16 DecorGfx_CHARIZARD_DOLL[] = { + EVENT_OBJ_GFX_BIG_CHARIZARD_DOLL +}; + +const u16 DecorGfx_BLASTOISE_DOLL[] = { + EVENT_OBJ_GFX_BIG_BLASTOISE_DOLL +}; + +const u16 DecorGfx_WAILMER_DOLL[] = { + EVENT_OBJ_GFX_BIG_WAILMER_DOLL +}; + +const u16 DecorGfx_REGIROCK_DOLL[] = { + EVENT_OBJ_GFX_BIG_REGIROCK_DOLL +}; + +const u16 DecorGfx_REGICE_DOLL[] = { + EVENT_OBJ_GFX_BIG_REGICE_DOLL +}; + +const u16 DecorGfx_REGISTEEL_DOLL[] = { + EVENT_OBJ_GFX_BIG_REGISTEEL_DOLL +}; + +#endif // GUARD_DATA_DECORATION_TILES diff --git a/src/data/graphics/battle_terrain.h b/src/data/graphics/battle_terrain.h new file mode 100644 index 000000000..4ff9883fe --- /dev/null +++ b/src/data/graphics/battle_terrain.h @@ -0,0 +1,88 @@ +const u8 gBattleTerrainTiles_TallGrass[] = INCBIN_U8("graphics/battle_terrain/tall_grass/tiles.4bpp.lz"); +const u8 gBattleTerrainPalette_TallGrass[] = INCBIN_U8("graphics/battle_terrain/tall_grass/palette.gbapal.lz"); +const u16 gBattleTerrainTilemap_TallGrass[] = INCBIN_U16("graphics/battle_terrain/tall_grass/map.bin.lz"); + +const u8 gBattleTerrainTiles_LongGrass[] = INCBIN_U8("graphics/battle_terrain/long_grass/tiles.4bpp.lz"); +const u8 gBattleTerrainPalette_LongGrass[] = INCBIN_U8("graphics/battle_terrain/long_grass/palette.gbapal.lz"); +const u16 gBattleTerrainTilemap_LongGrass[] = INCBIN_U16("graphics/battle_terrain/long_grass/map.bin.lz"); + +const u8 gBattleTerrainTiles_Sand[] = INCBIN_U8("graphics/battle_terrain/sand/tiles.4bpp.lz"); +const u8 gBattleTerrainPalette_Sand[] = INCBIN_U8("graphics/battle_terrain/sand/palette.gbapal.lz"); +const u16 gBattleTerrainTilemap_Sand[] = INCBIN_U16("graphics/battle_terrain/sand/map.bin.lz"); + +const u8 gBattleTerrainTiles_Underwater[] = INCBIN_U8("graphics/battle_terrain/underwater/tiles.4bpp.lz"); +const u8 gBattleTerrainPalette_Underwater[] = INCBIN_U8("graphics/battle_terrain/underwater/palette.gbapal.lz"); +const u16 gBattleTerrainTilemap_Underwater[] = INCBIN_U16("graphics/battle_terrain/underwater/map.bin.lz"); + +const u8 gBattleTerrainTiles_Water[] = INCBIN_U8("graphics/battle_terrain/water/tiles.4bpp.lz"); +const u8 gBattleTerrainPalette_Water[] = INCBIN_U8("graphics/battle_terrain/water/palette.gbapal.lz"); +const u16 gBattleTerrainTilemap_Water[] = INCBIN_U16("graphics/battle_terrain/water/map.bin.lz"); + +const u8 gBattleTerrainTiles_PondWater[] = INCBIN_U8("graphics/battle_terrain/pond_water/tiles.4bpp.lz"); +const u8 gBattleTerrainPalette_PondWater[] = INCBIN_U8("graphics/battle_terrain/pond_water/palette.gbapal.lz"); +const u16 gBattleTerrainTilemap_PondWater[] = INCBIN_U16("graphics/battle_terrain/pond_water/map.bin.lz"); + +const u8 gBattleTerrainTiles_Rock[] = INCBIN_U8("graphics/battle_terrain/rock/tiles.4bpp.lz"); +const u8 gBattleTerrainPalette_Rock[] = INCBIN_U8("graphics/battle_terrain/rock/palette.gbapal.lz"); +const u16 gBattleTerrainTilemap_Rock[] = INCBIN_U16("graphics/battle_terrain/rock/map.bin.lz"); + +const u8 gBattleTerrainTiles_Cave[] = INCBIN_U8("graphics/battle_terrain/cave/tiles.4bpp.lz"); +const u8 gBattleTerrainPalette_Cave[] = INCBIN_U8("graphics/battle_terrain/cave/palette.gbapal.lz"); +const u16 gBattleTerrainTilemap_Cave[] = INCBIN_U16("graphics/battle_terrain/cave/map.bin.lz"); + +const u8 gBattleTerrainPalette_Plain[] = INCBIN_U8("graphics/battle_terrain/plain/palette.gbapal.lz"); + +const u8 gBattleTerrainTiles_Building[] = INCBIN_U8("graphics/battle_terrain/building/tiles.4bpp.lz"); +const u8 gBattleTerrainPalette_Frontier[] = INCBIN_U8("graphics/battle_terrain/stadium/battle_frontier.gbapal.lz"); // this is also used for link battles +const u16 gBattleTerrainTilemap_Building[] = INCBIN_U16("graphics/battle_terrain/building/map.bin.lz"); + +const u8 gBattleTerrainTiles_Stadium[] = INCBIN_U8("graphics/battle_terrain/stadium/tiles.4bpp.lz"); +const u16 gBattleTerrainTilemap_Stadium[] = INCBIN_U16("graphics/battle_terrain/stadium/map.bin.lz"); + +const u8 gBattleTerrainTiles_Rayquaza[] = INCBIN_U8("graphics/battle_terrain/sky/tiles.4bpp.lz"); +const u16 gBattleTerrainTilemap_Rayquaza[] = INCBIN_U16("graphics/battle_terrain/sky/map.bin.lz"); + +const u8 gBattleTerrainPalette_Building[] = INCBIN_U8("graphics/battle_terrain/building/palette.gbapal.lz"); + +const u8 gBattleTerrainPalette_Kyogre[] = INCBIN_U8("graphics/battle_terrain/water/kyogre.gbapal.lz"); +const u8 gBattleTerrainPalette_Groudon[] = INCBIN_U8("graphics/battle_terrain/cave/groudon.gbapal.lz"); +const u8 gBattleTerrainPalette_BuildingGym[] = INCBIN_U8("graphics/battle_terrain/building/palette2.gbapal.lz"); +const u8 gBattleTerrainPalette_BuildingLeader[] = INCBIN_U8("graphics/battle_terrain/building/palette3.gbapal.lz"); +const u8 gBattleTerrainPalette_StadiumAqua[] = INCBIN_U8("graphics/battle_terrain/stadium/palette1.gbapal.lz"); +const u8 gBattleTerrainPalette_StadiumMagma[] = INCBIN_U8("graphics/battle_terrain/stadium/palette2.gbapal.lz"); +const u8 gBattleTerrainPalette_StadiumSidney[] = INCBIN_U8("graphics/battle_terrain/stadium/palette3.gbapal.lz"); +const u8 gBattleTerrainPalette_StadiumPhoebe[] = INCBIN_U8("graphics/battle_terrain/stadium/palette4.gbapal.lz"); +const u8 gBattleTerrainPalette_StadiumGlacia[] = INCBIN_U8("graphics/battle_terrain/stadium/palette5.gbapal.lz"); +const u8 gBattleTerrainPalette_StadiumDrake[] = INCBIN_U8("graphics/battle_terrain/stadium/palette6.gbapal.lz"); +const u8 gBattleTerrainPalette_StadiumWallace[] = INCBIN_U8("graphics/battle_terrain/stadium/palette7.gbapal.lz"); +const u8 gBattleTerrainPalette_Rayquaza[] = INCBIN_U8("graphics/battle_terrain/sky/palette.gbapal.lz"); + +const u8 gBattleTerrainAnimTiles_TallGrass[] = INCBIN_U8("graphics/battle_terrain/tall_grass/anim_tiles.4bpp.lz"); +const u16 gBattleTerrainAnimTilemap_TallGrass[] = INCBIN_U16("graphics/battle_terrain/tall_grass/anim_map.bin.lz"); + +const u8 gBattleTerrainAnimTiles_LongGrass[] = INCBIN_U8("graphics/battle_terrain/long_grass/anim_tiles.4bpp.lz"); +const u16 gBattleTerrainAnimTilemap_LongGrass[] = INCBIN_U16("graphics/battle_terrain/long_grass/anim_map.bin.lz"); + +const u8 gBattleTerrainAnimTiles_Sand[] = INCBIN_U8("graphics/battle_terrain/sand/anim_tiles.4bpp.lz"); +const u16 gBattleTerrainAnimTilemap_Sand[] = INCBIN_U16("graphics/battle_terrain/sand/anim_map.bin.lz"); + +const u8 gBattleTerrainAnimTiles_Underwater[] = INCBIN_U8("graphics/battle_terrain/underwater/anim_tiles.4bpp.lz"); +const u16 gBattleTerrainAnimTilemap_Underwater[] = INCBIN_U16("graphics/battle_terrain/underwater/anim_map.bin.lz"); + +const u8 gBattleTerrainAnimTiles_Water[] = INCBIN_U8("graphics/battle_terrain/water/anim_tiles.4bpp.lz"); +const u16 gBattleTerrainAnimTilemap_Water[] = INCBIN_U16("graphics/battle_terrain/water/anim_map.bin.lz"); + +const u8 gBattleTerrainAnimTiles_PondWater[] = INCBIN_U8("graphics/battle_terrain/pond_water/anim_tiles.4bpp.lz"); +const u16 gBattleTerrainAnimTilemap_PondWater[] = INCBIN_U16("graphics/battle_terrain/pond_water/anim_map.bin.lz"); + +const u8 gBattleTerrainAnimTiles_Rock[] = INCBIN_U8("graphics/battle_terrain/rock/anim_tiles.4bpp.lz"); +const u16 gBattleTerrainAnimTilemap_Rock[] = INCBIN_U16("graphics/battle_terrain/rock/anim_map.bin.lz"); + +const u8 gBattleTerrainAnimTiles_Cave[] = INCBIN_U8("graphics/battle_terrain/cave/anim_tiles.4bpp.lz"); +const u16 gBattleTerrainAnimTilemap_Cave[] = INCBIN_U16("graphics/battle_terrain/cave/anim_map.bin.lz"); + +const u8 gBattleTerrainAnimTiles_Building[] = INCBIN_U8("graphics/battle_terrain/building/anim_tiles.4bpp.lz"); +const u16 gBattleTerrainAnimTilemap_Building[] = INCBIN_U16("graphics/battle_terrain/building/anim_map.bin.lz"); + +const u8 gBattleTerrainAnimTiles_Rayquaza[] = INCBIN_U8("graphics/battle_terrain/sky/anim_tiles.4bpp.lz"); +const u16 gBattleTerrainAnimTilemap_Rayquaza[] = INCBIN_U16("graphics/battle_terrain/sky/anim_map.bin.lz"); diff --git a/src/data/graphics/berries.h b/src/data/graphics/berries.h new file mode 100644 index 000000000..d843a4f80 --- /dev/null +++ b/src/data/graphics/berries.h @@ -0,0 +1,95 @@ +const u8 gUnknown_08D9BB44[] = INCBIN_U8("graphics/interface/check_berry.4bpp.lz"); +const u8 gUnknown_08D9BEF0[] = INCBIN_U8("graphics/interface/check_berry.gbapal.lz"); + +const u16 gUnknown_08D9BF98[] = INCBIN_U16("graphics/interface/berry_tag.bin.lz"); +const u16 gUnknown_08D9C13C[] = INCBIN_U16("graphics/interface/berry_tag_title.bin.lz"); + +const u8 gBerryCheckCircle_Gfx[] = INCBIN_U8("graphics/interface/check_berry_circle.4bpp.lz"); + +const u8 gBerryPic_Cheri[] = INCBIN_U8("graphics/berries/cheri.4bpp.lz"); +const u8 gBerryPic_Oran[] = INCBIN_U8("graphics/berries/oran.4bpp.lz"); +const u8 gBerryPic_Pecha[] = INCBIN_U8("graphics/berries/pecha.4bpp.lz"); +const u8 gBerryPic_Rawst[] = INCBIN_U8("graphics/berries/rawst.4bpp.lz"); +const u8 gBerryPic_Aspear[] = INCBIN_U8("graphics/berries/aspear.4bpp.lz"); +const u8 gBerryPic_Leppa[] = INCBIN_U8("graphics/berries/leppa.4bpp.lz"); +const u8 gBerryPic_Chesto[] = INCBIN_U8("graphics/berries/chesto.4bpp.lz"); +const u8 gBerryPic_Persim[] = INCBIN_U8("graphics/berries/persim.4bpp.lz"); +const u8 gBerryPic_Lum[] = INCBIN_U8("graphics/berries/lum.4bpp.lz"); +const u8 gBerryPic_Sitrus[] = INCBIN_U8("graphics/berries/sitrus.4bpp.lz"); +const u8 gBerryPic_Figy[] = INCBIN_U8("graphics/berries/figy.4bpp.lz"); +const u8 gBerryPic_Wiki[] = INCBIN_U8("graphics/berries/wiki.4bpp.lz"); +const u8 gBerryPic_Mago[] = INCBIN_U8("graphics/berries/mago.4bpp.lz"); +const u8 gBerryPic_Aguav[] = INCBIN_U8("graphics/berries/aguav.4bpp.lz"); +const u8 gBerryPic_Iapapa[] = INCBIN_U8("graphics/berries/iapapa.4bpp.lz"); +const u8 gBerryPic_Razz[] = INCBIN_U8("graphics/berries/razz.4bpp.lz"); +const u8 gBerryPic_Bluk[] = INCBIN_U8("graphics/berries/bluk.4bpp.lz"); +const u8 gBerryPic_Nanab[] = INCBIN_U8("graphics/berries/nanab.4bpp.lz"); +const u8 gBerryPic_Wepear[] = INCBIN_U8("graphics/berries/wepear.4bpp.lz"); +const u8 gBerryPic_Pinap[] = INCBIN_U8("graphics/berries/pinap.4bpp.lz"); +const u8 gBerryPic_Pomeg[] = INCBIN_U8("graphics/berries/pomeg.4bpp.lz"); +const u8 gBerryPic_Kelpsy[] = INCBIN_U8("graphics/berries/kelpsy.4bpp.lz"); +const u8 gBerryPic_Qualot[] = INCBIN_U8("graphics/berries/qualot.4bpp.lz"); +const u8 gBerryPic_Hondew[] = INCBIN_U8("graphics/berries/hondew.4bpp.lz"); +const u8 gBerryPic_Grepa[] = INCBIN_U8("graphics/berries/grepa.4bpp.lz"); +const u8 gBerryPic_Tamato[] = INCBIN_U8("graphics/berries/tamato.4bpp.lz"); +const u8 gBerryPic_Cornn[] = INCBIN_U8("graphics/berries/cornn.4bpp.lz"); +const u8 gBerryPic_Magost[] = INCBIN_U8("graphics/berries/magost.4bpp.lz"); +const u8 gBerryPic_Rabuta[] = INCBIN_U8("graphics/berries/rabuta.4bpp.lz"); +const u8 gBerryPic_Nomel[] = INCBIN_U8("graphics/berries/nomel.4bpp.lz"); +const u8 gBerryPic_Spelon[] = INCBIN_U8("graphics/berries/spelon.4bpp.lz"); +const u8 gBerryPic_Pamtre[] = INCBIN_U8("graphics/berries/pamtre.4bpp.lz"); +const u8 gBerryPic_Watmel[] = INCBIN_U8("graphics/berries/watmel.4bpp.lz"); +const u8 gBerryPic_Durin[] = INCBIN_U8("graphics/berries/durin.4bpp.lz"); +const u8 gBerryPic_Belue[] = INCBIN_U8("graphics/berries/belue.4bpp.lz"); +const u8 gBerryPic_Liechi[] = INCBIN_U8("graphics/berries/liechi.4bpp.lz"); +const u8 gBerryPic_Ganlon[] = INCBIN_U8("graphics/berries/ganlon.4bpp.lz"); +const u8 gBerryPic_Salac[] = INCBIN_U8("graphics/berries/salac.4bpp.lz"); +const u8 gBerryPic_Petaya[] = INCBIN_U8("graphics/berries/petaya.4bpp.lz"); +const u8 gBerryPic_Apicot[] = INCBIN_U8("graphics/berries/apicot.4bpp.lz"); +const u8 gBerryPic_Lansat[] = INCBIN_U8("graphics/berries/lansat.4bpp.lz"); +const u8 gBerryPic_Starf[] = INCBIN_U8("graphics/berries/starf.4bpp.lz"); +const u8 gBerryPic_Enigma[] = INCBIN_U8("graphics/berries/enigma.4bpp.lz"); + +const u8 gBerryPalette_Cheri[] = INCBIN_U8("graphics/berries/cheri.gbapal.lz"); +const u8 gBerryPalette_Oran[] = INCBIN_U8("graphics/berries/oran.gbapal.lz"); +const u8 gBerryPalette_Pecha[] = INCBIN_U8("graphics/berries/pecha.gbapal.lz"); +const u8 gBerryPalette_Rawst[] = INCBIN_U8("graphics/berries/rawst.gbapal.lz"); +const u8 gBerryPalette_Aspear[] = INCBIN_U8("graphics/berries/aspear.gbapal.lz"); +const u8 gBerryPalette_Leppa[] = INCBIN_U8("graphics/berries/leppa.gbapal.lz"); +const u8 gBerryPalette_Chesto[] = INCBIN_U8("graphics/berries/chesto.gbapal.lz"); +const u8 gBerryPalette_Persim[] = INCBIN_U8("graphics/berries/persim.gbapal.lz"); +const u8 gBerryPalette_Lum[] = INCBIN_U8("graphics/berries/lum.gbapal.lz"); +const u8 gBerryPalette_Sitrus[] = INCBIN_U8("graphics/berries/sitrus.gbapal.lz"); +const u8 gBerryPalette_Figy[] = INCBIN_U8("graphics/berries/figy.gbapal.lz"); +const u8 gBerryPalette_Wiki[] = INCBIN_U8("graphics/berries/wiki.gbapal.lz"); +const u8 gBerryPalette_Mago[] = INCBIN_U8("graphics/berries/mago.gbapal.lz"); +const u8 gBerryPalette_Aguav[] = INCBIN_U8("graphics/berries/aguav.gbapal.lz"); +const u8 gBerryPalette_Iapapa[] = INCBIN_U8("graphics/berries/iapapa.gbapal.lz"); +const u8 gBerryPalette_Razz[] = INCBIN_U8("graphics/berries/razz.gbapal.lz"); +const u8 gBerryPalette_Bluk[] = INCBIN_U8("graphics/berries/bluk.gbapal.lz"); +const u8 gBerryPalette_Nanab[] = INCBIN_U8("graphics/berries/nanab.gbapal.lz"); +const u8 gBerryPalette_Wepear[] = INCBIN_U8("graphics/berries/wepear.gbapal.lz"); +const u8 gBerryPalette_Pinap[] = INCBIN_U8("graphics/berries/pinap.gbapal.lz"); +const u8 gBerryPalette_Pomeg[] = INCBIN_U8("graphics/berries/pomeg.gbapal.lz"); +const u8 gBerryPalette_Kelpsy[] = INCBIN_U8("graphics/berries/kelpsy.gbapal.lz"); +const u8 gBerryPalette_Qualot[] = INCBIN_U8("graphics/berries/qualot.gbapal.lz"); +const u8 gBerryPalette_Hondew[] = INCBIN_U8("graphics/berries/hondew.gbapal.lz"); +const u8 gBerryPalette_Grepa[] = INCBIN_U8("graphics/berries/grepa.gbapal.lz"); +const u8 gBerryPalette_Tamato[] = INCBIN_U8("graphics/berries/tamato.gbapal.lz"); +const u8 gBerryPalette_Cornn[] = INCBIN_U8("graphics/berries/cornn.gbapal.lz"); +const u8 gBerryPalette_Magost[] = INCBIN_U8("graphics/berries/magost.gbapal.lz"); +const u8 gBerryPalette_Rabuta[] = INCBIN_U8("graphics/berries/rabuta.gbapal.lz"); +const u8 gBerryPalette_Nomel[] = INCBIN_U8("graphics/berries/nomel.gbapal.lz"); +const u8 gBerryPalette_Spelon[] = INCBIN_U8("graphics/berries/spelon.gbapal.lz"); +const u8 gBerryPalette_Pamtre[] = INCBIN_U8("graphics/berries/pamtre.gbapal.lz"); +const u8 gBerryPalette_Watmel[] = INCBIN_U8("graphics/berries/watmel.gbapal.lz"); +const u8 gBerryPalette_Durin[] = INCBIN_U8("graphics/berries/durin.gbapal.lz"); +const u8 gBerryPalette_Belue[] = INCBIN_U8("graphics/berries/belue.gbapal.lz"); +const u8 gBerryPalette_Liechi[] = INCBIN_U8("graphics/berries/liechi.gbapal.lz"); +const u8 gBerryPalette_Ganlon[] = INCBIN_U8("graphics/berries/ganlon.gbapal.lz"); +const u8 gBerryPalette_Salac[] = INCBIN_U8("graphics/berries/salac.gbapal.lz"); +const u8 gBerryPalette_Petaya[] = INCBIN_U8("graphics/berries/petaya.gbapal.lz"); +const u8 gBerryPalette_Apicot[] = INCBIN_U8("graphics/berries/apicot.gbapal.lz"); +const u8 gBerryPalette_Lansat[] = INCBIN_U8("graphics/berries/lansat.gbapal.lz"); +const u8 gBerryPalette_Starf[] = INCBIN_U8("graphics/berries/starf.gbapal.lz"); +const u8 gBerryPalette_Enigma[] = INCBIN_U8("graphics/berries/enigma.gbapal.lz"); diff --git a/src/data/graphics/berry_fix.h b/src/data/graphics/berry_fix.h new file mode 100644 index 000000000..4012ab5a3 --- /dev/null +++ b/src/data/graphics/berry_fix.h @@ -0,0 +1,23 @@ +const u16 gBerryFixGameboy_Pal[] = INCBIN_U16("graphics/berry_fix/gba_small.gbapal"); +const u8 gBerryFixGameboy_Gfx[] = INCBIN_U8("graphics/berry_fix/gba_small.4bpp.lz"); +const u16 gBerryFixGameboy_Tilemap[] = INCBIN_U16("graphics/berry_fix/gba_small.bin.lz"); + +const u16 gBerryFixGameboyLogo_Pal[] = INCBIN_U16("graphics/berry_fix/logo.gbapal"); +const u8 gBerryFixGameboyLogo_Gfx[] = INCBIN_U8("graphics/berry_fix/logo.4bpp.lz"); +const u16 gBerryFixGameboyLogo_Tilemap[] = INCBIN_U16("graphics/berry_fix/logo.bin.lz"); + +const u16 gBerryFixGbaTransfer_Pal[] = INCBIN_U16("graphics/berry_fix/gba_transfer.gbapal"); +const u8 gBerryFixGbaTransfer_Gfx[] = INCBIN_U8("graphics/berry_fix/gba_transfer.4bpp.lz"); +const u16 gBerryFixGbaTransfer_Tilemap[] = INCBIN_U16("graphics/berry_fix/gba_transfer.bin.lz"); + +const u16 gBerryFixGbaTransferHighlight_Pal[] = INCBIN_U16("graphics/berry_fix/gba_transfer_highlight.gbapal"); +const u8 gBerryFixGbaTransferHighlight_Gfx[] = INCBIN_U8("graphics/berry_fix/gba_transfer_highlight.4bpp.lz"); +const u16 gBerryFixGbaTransferHighlight_Tilemap[] = INCBIN_U16("graphics/berry_fix/gba_transfer_highlight.bin.lz"); + +const u16 gBerryFixGbaTransferError_Pal[] = INCBIN_U16("graphics/berry_fix/gba_transfer_error.gbapal"); +const u8 gBerryFixGbaTransferError_Gfx[] = INCBIN_U8("graphics/berry_fix/gba_transfer_error.4bpp.lz"); +const u16 gBerryFixGbaTransferError_Tilemap[] = INCBIN_U16("graphics/berry_fix/gba_transfer_error.bin.lz"); + +const u16 gBerryFixWindow_Pal[] = INCBIN_U16("graphics/berry_fix/window.gbapal"); +const u8 gBerryFixWindow_Gfx[] = INCBIN_U8("graphics/berry_fix/window.4bpp.lz"); +const u16 gBerryFixWindow_Tilemap[] = INCBIN_U16("graphics/berry_fix/window.bin.lz");
\ No newline at end of file diff --git a/src/data/graphics/decorations.h b/src/data/graphics/decorations.h new file mode 100644 index 000000000..574ee50b6 --- /dev/null +++ b/src/data/graphics/decorations.h @@ -0,0 +1,125 @@ +const u8 gUnknown_08DB7AA0[] = INCBIN_U8("graphics/decorations/decor_heavy_desk.4bpp.lz"); +const u8 gUnknown_08DB7B34[] = INCBIN_U8("graphics/decorations/decor_heavy_desk.gbapal.lz"); + +const u8 gUnknown_08DB7B5C[] = INCBIN_U8("graphics/decorations/decor_ragged_desk.4bpp.lz"); +const u8 gUnknown_08DB7BEC[] = INCBIN_U8("graphics/decorations/decor_ragged_desk.gbapal.lz"); + +const u8 gUnknown_08DB7C08[] = INCBIN_U8("graphics/decorations/decor_comfort_desk.4bpp.lz"); +const u8 gUnknown_08DB7CE8[] = INCBIN_U8("graphics/decorations/decor_comfort_desk.gbapal.lz"); + +const u8 gUnknown_08DB7D08[] = INCBIN_U8("graphics/decorations/decor_pretty_desk.4bpp.lz"); +const u8 gUnknown_08DB7DCC[] = INCBIN_U8("graphics/decorations/decor_pretty_desk.gbapal.lz"); + +const u8 gUnknown_08DB7DF4[] = INCBIN_U8("graphics/decorations/decor_brick_desk.4bpp.lz"); +const u8 gUnknown_08DB7EA0[] = INCBIN_U8("graphics/decorations/decor_brick_desk.gbapal.lz"); + +const u8 gUnknown_08DB7EC4[] = INCBIN_U8("graphics/decorations/decor_camp_desk.4bpp.lz"); +const u8 gUnknown_08DB7F60[] = INCBIN_U8("graphics/decorations/decor_camp_desk.gbapal.lz"); + +const u8 gUnknown_08DB7F7C[] = INCBIN_U8("graphics/decorations/decor_hard_desk.4bpp.lz"); +const u8 gUnknown_08DB8070[] = INCBIN_U8("graphics/decorations/decor_hard_desk.gbapal.lz"); + +const u8 gUnknown_08DB808C[] = INCBIN_U8("graphics/decorations/decor_red_plant.4bpp.lz"); +const u8 gUnknown_08DB8138[] = INCBIN_U8("graphics/decorations/decor_red_plant.gbapal.lz"); + +const u8 gUnknown_08DB8160[] = INCBIN_U8("graphics/decorations/decor_tropical_plant.4bpp.lz"); +const u8 gUnknown_08DB8218[] = INCBIN_U8("graphics/decorations/decor_tropical_plant.gbapal.lz"); + +const u8 gUnknown_08DB823C[] = INCBIN_U8("graphics/decorations/decor_pretty_flowers.4bpp.lz"); +const u8 gUnknown_08DB8300[] = INCBIN_U8("graphics/decorations/decor_pretty_flowers.gbapal.lz"); + +const u8 gUnknown_08DB8328[] = INCBIN_U8("graphics/decorations/decor_colorful_plant.4bpp.lz"); +const u8 gUnknown_08DB8430[] = INCBIN_U8("graphics/decorations/decor_colorful_plant.gbapal.lz"); + +const u8 gUnknown_08DB8458[] = INCBIN_U8("graphics/decorations/decor_big_plant.4bpp.lz"); +const u8 gUnknown_08DB8528[] = INCBIN_U8("graphics/decorations/decor_big_plant.gbapal.lz"); + +const u8 gUnknown_08DB854C[] = INCBIN_U8("graphics/decorations/decor_gorgeous_plant.4bpp.lz"); +const u8 gUnknown_08DB862C[] = INCBIN_U8("graphics/decorations/decor_gorgeous_plant.gbapal.lz"); + +const u8 gUnknown_08DB8654[] = INCBIN_U8("graphics/decorations/decor_red_brick.4bpp.lz"); +const u8 gUnknown_08DB86C4[] = INCBIN_U8("graphics/decorations/decor_red_brick.gbapal.lz"); + +const u8 gUnknown_08DB86E0[] = INCBIN_U8("graphics/decorations/decor_yellow_brick.4bpp.lz"); +const u8 gUnknown_08DB8750[] = INCBIN_U8("graphics/decorations/decor_yellow_brick.gbapal.lz"); + +const u8 gUnknown_08DB876C[] = INCBIN_U8("graphics/decorations/decor_blue_brick.4bpp.lz"); +const u8 gUnknown_08DB87DC[] = INCBIN_U8("graphics/decorations/decor_blue_brick.gbapal.lz"); + +const u8 gUnknown_08DB87F8[] = INCBIN_U8("graphics/decorations/decor_red_tent.4bpp.lz"); +const u8 gUnknown_08DB88D8[] = INCBIN_U8("graphics/decorations/decor_red_tent.gbapal.lz"); + +const u8 gUnknown_08DB8900[] = INCBIN_U8("graphics/decorations/decor_blue_tent.4bpp.lz"); +const u8 gUnknown_08DB89E0[] = INCBIN_U8("graphics/decorations/decor_blue_tent.gbapal.lz"); + +const u8 gUnknown_08DB8A08[] = INCBIN_U8("graphics/decorations/decor_solid_board.4bpp.lz"); +const u8 gUnknown_08DB8A68[] = INCBIN_U8("graphics/decorations/decor_solid_board.gbapal.lz"); + +const u8 gUnknown_08DB8A84[] = INCBIN_U8("graphics/decorations/decor_slide.4bpp.lz"); +const u8 gUnknown_08DB8B40[] = INCBIN_U8("graphics/decorations/decor_slide.gbapal.lz"); + +const u8 gUnknown_08DB8B68[] = INCBIN_U8("graphics/decorations/decor_tire.4bpp.lz"); +const u8 gUnknown_08DB8C40[] = INCBIN_U8("graphics/decorations/decor_tire.gbapal.lz"); + +const u8 gUnknown_08DB8C5C[] = INCBIN_U8("graphics/decorations/decor_stand.4bpp.lz"); +const u8 gUnknown_08DB8CF4[] = INCBIN_U8("graphics/decorations/decor_stand.gbapal.lz"); + +const u8 gUnknown_08DB8D18[] = INCBIN_U8("graphics/decorations/decor_breakable_door.4bpp.lz"); +const u8 gUnknown_08DB8DB0[] = INCBIN_U8("graphics/decorations/decor_breakable_door.gbapal.lz"); + +const u8 gUnknown_08DB8DD4[] = INCBIN_U8("graphics/decorations/decor_sand_ornament.4bpp.lz"); +const u8 gUnknown_08DB8E80[] = INCBIN_U8("graphics/decorations/decor_sand_ornament.gbapal.lz"); + +const u8 gUnknown_08DB8EA0[] = INCBIN_U8("graphics/decorations/decor_glass_ornament.4bpp.lz"); +const u8 gUnknown_08DB8F58[] = INCBIN_U8("graphics/decorations/decor_glass_ornament.gbapal.lz"); + +const u8 gUnknown_08DB8F7C[] = INCBIN_U8("graphics/decorations/decor_surf_mat.4bpp.lz"); +const u8 gUnknown_08DB9038[] = INCBIN_U8("graphics/decorations/decor_surf_mat.gbapal.lz"); + +const u8 gUnknown_08DB9058[] = INCBIN_U8("graphics/decorations/decor_thunder_mat.4bpp.lz"); +const u8 gUnknown_08DB9130[] = INCBIN_U8("graphics/decorations/decor_thunder_mat.gbapal.lz"); + +const u8 gUnknown_08DB9154[] = INCBIN_U8("graphics/decorations/decor_fire_blast_mat.4bpp.lz"); +const u8 gUnknown_08DB9218[] = INCBIN_U8("graphics/decorations/decor_fire_blast_mat.gbapal.lz"); + +const u8 gUnknown_08DB9234[] = INCBIN_U8("graphics/decorations/decor_powder_snow_mat.4bpp.lz"); +const u8 gUnknown_08DB92FC[] = INCBIN_U8("graphics/decorations/decor_powder_snow_mat.gbapal.lz"); + +const u8 gUnknown_08DB931C[] = INCBIN_U8("graphics/decorations/decor_attract_mat.4bpp.lz"); +const u8 gUnknown_08DB93E8[] = INCBIN_U8("graphics/decorations/decor_attract_mat.gbapal.lz"); + +const u8 gUnknown_08DB940C[] = INCBIN_U8("graphics/decorations/decor_fissure_mat.4bpp.lz"); +const u8 gUnknown_08DB94CC[] = INCBIN_U8("graphics/decorations/decor_fissure_mat.gbapal.lz"); + +const u8 gUnknown_08DB94E8[] = INCBIN_U8("graphics/decorations/decor_spikes_mat.4bpp.lz"); +const u8 gUnknown_08DB95AC[] = INCBIN_U8("graphics/decorations/decor_spikes_mat.gbapal.lz"); + +const u8 gUnknown_08DB95D0[] = INCBIN_U8("graphics/decorations/decor_snorlax_doll.4bpp.lz"); +const u8 gUnknown_08DB96C4[] = INCBIN_U8("graphics/decorations/decor_snorlax_doll.gbapal.lz"); + +const u8 gUnknown_08DB96EC[] = INCBIN_U8("graphics/decorations/decor_rhydon_doll.4bpp.lz"); +const u8 gUnknown_08DB97F4[] = INCBIN_U8("graphics/decorations/decor_rhydon_doll.gbapal.lz"); + +const u8 gUnknown_08DB981C[] = INCBIN_U8("graphics/decorations/decor_lapras_doll.4bpp.lz"); +const u8 gUnknown_08DB9908[] = INCBIN_U8("graphics/decorations/decor_lapras_doll.gbapal.lz"); + +const u8 gUnknown_08DB9930[] = INCBIN_U8("graphics/decorations/decor_venusaur_doll.4bpp.lz"); +const u8 gUnknown_08DB9A54[] = INCBIN_U8("graphics/decorations/decor_venusaur_doll.gbapal.lz"); + +const u8 gUnknown_08DB9A7C[] = INCBIN_U8("graphics/decorations/decor_charizard_doll.4bpp.lz"); +const u8 gUnknown_08DB9B7C[] = INCBIN_U8("graphics/decorations/decor_charizard_doll.gbapal.lz"); + +const u8 gUnknown_08DB9BA4[] = INCBIN_U8("graphics/decorations/decor_blastoise_doll.4bpp.lz"); +const u8 gUnknown_08DB9CB0[] = INCBIN_U8("graphics/decorations/decor_blastoise_doll.gbapal.lz"); + +const u8 gUnknown_08DB9CD8[] = INCBIN_U8("graphics/decorations/decor_wailmer_doll.4bpp.lz"); +const u8 gUnknown_08DB9DAC[] = INCBIN_U8("graphics/decorations/decor_wailmer_doll.gbapal.lz"); + +const u8 gUnknown_08DB9DD4[] = INCBIN_U8("graphics/decorations/decor_regice_doll.4bpp.lz"); +const u8 gUnknown_08DB9EE4[] = INCBIN_U8("graphics/decorations/decor_regice_doll.gbapal.lz"); + +const u8 gUnknown_08DB9F08[] = INCBIN_U8("graphics/decorations/decor_regirock_doll.4bpp.lz"); +const u8 gUnknown_08DB9FFC[] = INCBIN_U8("graphics/decorations/decor_regirock_doll.gbapal.lz"); + +const u8 gUnknown_08DBA020[] = INCBIN_U8("graphics/decorations/decor_registeel_doll.4bpp.lz"); +const u8 gUnknown_08DBA12C[] = INCBIN_U8("graphics/decorations/decor_registeel_doll.gbapal.lz"); diff --git a/src/data/graphics/interface_pokeballs.h b/src/data/graphics/interface_pokeballs.h new file mode 100644 index 000000000..db91283ae --- /dev/null +++ b/src/data/graphics/interface_pokeballs.h @@ -0,0 +1,37 @@ +const u8 gInterfaceGfx_PokeBall[] = INCBIN_U8("graphics/interface/ball/poke.4bpp.lz"); +const u8 gInterfacePal_PokeBall[] = INCBIN_U8("graphics/interface/ball/poke.gbapal.lz"); + +const u8 gInterfaceGfx_GreatBall[] = INCBIN_U8("graphics/interface/ball/great.4bpp.lz"); +const u8 gInterfacePal_GreatBall[] = INCBIN_U8("graphics/interface/ball/great.gbapal.lz"); + +const u8 gInterfaceGfx_SafariBall[] = INCBIN_U8("graphics/interface/ball/safari.4bpp.lz"); +const u8 gInterfacePal_SafariBall[] = INCBIN_U8("graphics/interface/ball/safari.gbapal.lz"); + +const u8 gInterfaceGfx_UltraBall[] = INCBIN_U8("graphics/interface/ball/ultra.4bpp.lz"); +const u8 gInterfacePal_UltraBall[] = INCBIN_U8("graphics/interface/ball/ultra.gbapal.lz"); + +const u8 gInterfaceGfx_MasterBall[] = INCBIN_U8("graphics/interface/ball/master.4bpp.lz"); +const u8 gInterfacePal_MasterBall[] = INCBIN_U8("graphics/interface/ball/master.gbapal.lz"); + +const u8 gInterfaceGfx_NetBall[] = INCBIN_U8("graphics/interface/ball/net.4bpp.lz"); +const u8 gInterfacePal_NetBall[] = INCBIN_U8("graphics/interface/ball/net.gbapal.lz"); + +const u8 gInterfaceGfx_DiveBall[] = INCBIN_U8("graphics/interface/ball/dive.4bpp.lz"); +const u8 gInterfacePal_DiveBall[] = INCBIN_U8("graphics/interface/ball/dive.gbapal.lz"); + +const u8 gInterfaceGfx_NestBall[] = INCBIN_U8("graphics/interface/ball/nest.4bpp.lz"); +const u8 gInterfacePal_NestBall[] = INCBIN_U8("graphics/interface/ball/nest.gbapal.lz"); + +const u8 gInterfaceGfx_RepeatBall[] = INCBIN_U8("graphics/interface/ball/repeat.4bpp.lz"); +const u8 gInterfacePal_RepeatBall[] = INCBIN_U8("graphics/interface/ball/repeat.gbapal.lz"); + +const u8 gInterfaceGfx_TimerBall[] = INCBIN_U8("graphics/interface/ball/timer.4bpp.lz"); +const u8 gInterfacePal_TimerBall[] = INCBIN_U8("graphics/interface/ball/timer.gbapal.lz"); + +const u8 gInterfaceGfx_LuxuryBall[] = INCBIN_U8("graphics/interface/ball/luxury.4bpp.lz"); +const u8 gInterfacePal_LuxuryBall[] = INCBIN_U8("graphics/interface/ball/luxury.gbapal.lz"); + +const u8 gInterfaceGfx_PremierBall[] = INCBIN_U8("graphics/interface/ball/premier.4bpp.lz"); +const u8 gInterfacePal_PremierBall[] = INCBIN_U8("graphics/interface/ball/premier.gbapal.lz"); + +const u8 gOpenPokeballGfx[] = INCBIN_U8("graphics/interface/ball_open.4bpp.lz"); diff --git a/src/data/graphics/intro_scene.h b/src/data/graphics/intro_scene.h new file mode 100644 index 000000000..9c049ffb2 --- /dev/null +++ b/src/data/graphics/intro_scene.h @@ -0,0 +1,48 @@ +const u16 gIntro1GameFreakTextFadePal[] = INCBIN_U16("graphics/intro/intro1_text.gbapal"); // game freak text blue fade +const u16 gIntro2BrendanNoTurnPal[] = INCBIN_U16("graphics/intro/intro2_brendan_noturn.gbapal"); +const u16 gIntro3BgPal[] = INCBIN_U16("graphics/intro/intro3.gbapal"); +const u16 gIntro2VolbeatPal[] = INCBIN_U16("graphics/intro/intro2_volbeat.gbapal"); +const u16 gIntro2TorchicPal[] = INCBIN_U16("graphics/intro/intro2_torchic.gbapal"); +const u16 gIntro2ManectricPal[] = INCBIN_U16("graphics/intro/intro2_manectric.gbapal"); +const u16 gIntro2FlygonPal[] = INCBIN_U16("graphics/intro/intro2_flygon.gbapal"); + +const u8 gIntro2VolbeatGfx[] = INCBIN_U8("graphics/intro/intro2_volbeat.4bpp.lz"); +const u8 gIntro2TorchicGfx[] = INCBIN_U8("graphics/intro/intro2_torchic.4bpp.lz"); +const u8 gIntro2ManectricGfx[] = INCBIN_U8("graphics/intro/intro2_manectric.4bpp.lz"); +const u8 gIntro2FlygonGfx[] = INCBIN_U8("graphics/intro/intro2_flygon.4bpp.lz"); +const u8 gIntro2BrendanNoTurnGfx[] = INCBIN_U8("graphics/intro/intro2_brendan_noturn.4bpp.lz"); +const u8 gIntro2MayNoTurnGfx[] = INCBIN_U8("graphics/intro/intro2_may_noturn.4bpp.lz"); + +const u16 gIntro3GroudonGfx[] = INCBIN_U16("graphics/intro/intro3_groudon.8bpp.lz"); +const u16 gIntro3GroudonTilemap[] = INCBIN_U16("graphics/intro/intro3_groudon.bin.lz"); + +const u16 gIntro3KyogreGfx[] = INCBIN_U16("graphics/intro/intro3_kyogre.8bpp.lz"); +const u16 gIntro3KyogreTilemap[] = INCBIN_U16("graphics/intro/intro3_kyogre.bin.lz"); + +const u8 gIntro3LegendBgGfx[] = INCBIN_U8("graphics/intro/legend_bg.4bpp.lz"); // groudon/kyogre/bg + +const u16 gIntro3GroudonBgTilemap[] = INCBIN_U16("graphics/intro/legend_bg1.bin.lz"); +const u16 gIntro3KyogreBgTilemap[] = INCBIN_U16("graphics/intro/legend_bg2.bin.lz"); + +const u8 gIntro3CloudsGfx[] = INCBIN_U8("graphics/intro/intro3_clouds.4bpp.lz"); +const u16 gIntro3Clouds1Tilemap[] = INCBIN_U16("graphics/intro/intro3_clouds1.bin.lz"); +const u16 gIntro3Clouds2Tilemap[] = INCBIN_U16("graphics/intro/intro3_clouds2.bin.lz"); +const u16 gIntro3Clouds3Tilemap[] = INCBIN_U16("graphics/intro/intro3_clouds3.bin.lz"); + +const u8 gIntro3LightningGfx[] = INCBIN_U8("graphics/intro/intro3_lightning.4bpp.lz"); +const u16 gIntro3LightningPal[] = INCBIN_U16("graphics/intro/intro3_lightning.gbapal"); + +const u8 gIntro3RayquazaGfx[] = INCBIN_U8("graphics/intro/intro3_rayquaza.4bpp.lz"); +const u16 gIntro3RayquazaTilemap[] = INCBIN_U16("graphics/intro/intro3_rayquaza.bin.lz"); + +const u16 gUnknown_D8C374[] = INCBIN_U16("graphics/unknown/unknown_D8C374.bin.lz"); +const u16 gUnknown_D8C5C4[] = INCBIN_U16("graphics/unknown/unknown_D8C5C4.bin.lz"); + +const u8 gIntro3Clouds2Gfx[] = INCBIN_U8("graphics/intro/intro3_clouds2.4bpp.lz"); //clouds 2, during the rayquaza flash +const u16 gIntro3Clouds4Tilemap[] = INCBIN_U16("graphics/intro/intro3_clouds4.bin.lz"); + +const u8 gIntro2BubblesGfx[] = INCBIN_U8("graphics/intro/intro2_bubbles.4bpp.lz"); +const u16 gIntro2BubblesPal[] = INCBIN_U16("graphics/intro/intro2_bubbles.gbapal"); + +const u8 gIntro1FlygonGfx[] = INCBIN_U8("graphics/intro/intro1_flygon.4bpp.lz"); +const u8 gIntro1SparkleGfx[] = INCBIN_U8("graphics/intro/intro1_sparkle.4bpp.lz"); diff --git a/src/data/graphics/items.h b/src/data/graphics/items.h new file mode 100644 index 000000000..299e519ca --- /dev/null +++ b/src/data/graphics/items.h @@ -0,0 +1,738 @@ +const u8 gItemIcon_QuestionMark[] = INCBIN_U8("graphics/items/icons/question_mark.4bpp.lz"); +const u8 gItemIconPalette_QuestionMark[] = INCBIN_U8("graphics/items/icon_palettes/question_mark.gbapal.lz"); + +const u8 gItemIcon_ReturnToFieldArrow[] = INCBIN_U8("graphics/items/icons/return_to_field_arrow.4bpp.lz"); +const u8 gItemIconPalette_ReturnToFieldArrow[] = INCBIN_U8("graphics/items/icon_palettes/return_to_field_arrow.gbapal.lz"); + +// Pokeballs + +const u8 gItemIcon_MasterBall[] = INCBIN_U8("graphics/items/icons/master_ball.4bpp.lz"); +const u8 gItemIconPalette_MasterBall[] = INCBIN_U8("graphics/items/icon_palettes/master_ball.gbapal.lz"); + +const u8 gItemIcon_UltraBall[] = INCBIN_U8("graphics/items/icons/ultra_ball.4bpp.lz"); +const u8 gItemIconPalette_UltraBall[] = INCBIN_U8("graphics/items/icon_palettes/ultra_ball.gbapal.lz"); + +const u8 gItemIcon_GreatBall[] = INCBIN_U8("graphics/items/icons/great_ball.4bpp.lz"); +const u8 gItemIconPalette_GreatBall[] = INCBIN_U8("graphics/items/icon_palettes/great_ball.gbapal.lz"); + +const u8 gItemIcon_PokeBall[] = INCBIN_U8("graphics/items/icons/poke_ball.4bpp.lz"); +const u8 gItemIconPalette_PokeBall[] = INCBIN_U8("graphics/items/icon_palettes/poke_ball.gbapal.lz"); + +const u8 gItemIcon_SafariBall[] = INCBIN_U8("graphics/items/icons/safari_ball.4bpp.lz"); +const u8 gItemIconPalette_SafariBall[] = INCBIN_U8("graphics/items/icon_palettes/safari_ball.gbapal.lz"); + +const u8 gItemIcon_NetBall[] = INCBIN_U8("graphics/items/icons/net_ball.4bpp.lz"); +const u8 gItemIconPalette_NetBall[] = INCBIN_U8("graphics/items/icon_palettes/net_ball.gbapal.lz"); + +const u8 gItemIcon_DiveBall[] = INCBIN_U8("graphics/items/icons/dive_ball.4bpp.lz"); +const u8 gItemIconPalette_DiveBall[] = INCBIN_U8("graphics/items/icon_palettes/dive_ball.gbapal.lz"); + +const u8 gItemIcon_NestBall[] = INCBIN_U8("graphics/items/icons/nest_ball.4bpp.lz"); +const u8 gItemIconPalette_NestBall[] = INCBIN_U8("graphics/items/icon_palettes/nest_ball.gbapal.lz"); + +const u8 gItemIcon_RepeatBall[] = INCBIN_U8("graphics/items/icons/repeat_ball.4bpp.lz"); +const u8 gItemIconPalette_RepeatBall[] = INCBIN_U8("graphics/items/icon_palettes/repeat_ball.gbapal.lz"); + +const u8 gItemIcon_TimerBall[] = INCBIN_U8("graphics/items/icons/timer_ball.4bpp.lz"); + +const u8 gItemIcon_LuxuryBall[] = INCBIN_U8("graphics/items/icons/luxury_ball.4bpp.lz"); +const u8 gItemIconPalette_LuxuryBall[] = INCBIN_U8("graphics/items/icon_palettes/luxury_ball.gbapal.lz"); + +const u8 gItemIcon_PremierBall[] = INCBIN_U8("graphics/items/icons/premier_ball.4bpp.lz"); + +// Medicine + +const u8 gItemIcon_Potion[] = INCBIN_U8("graphics/items/icons/potion.4bpp.lz"); +const u8 gItemIconPalette_Potion[] = INCBIN_U8("graphics/items/icon_palettes/potion.gbapal.lz"); + +const u8 gItemIcon_Antidote[] = INCBIN_U8("graphics/items/icons/antidote.4bpp.lz"); +const u8 gItemIconPalette_Antidote[] = INCBIN_U8("graphics/items/icon_palettes/antidote.gbapal.lz"); + +const u8 gItemIconPalette_BurnHeal[] = INCBIN_U8("graphics/items/icon_palettes/burn_heal.gbapal.lz"); +const u8 gItemIconPalette_IceHeal[] = INCBIN_U8("graphics/items/icon_palettes/ice_heal.gbapal.lz"); +const u8 gItemIcon_StatusHeal[] = INCBIN_U8("graphics/items/icons/status_heal.4bpp.lz"); +const u8 gItemIconPalette_Awakening[] = INCBIN_U8("graphics/items/icon_palettes/awakening.gbapal.lz"); +const u8 gItemIconPalette_ParalyzeHeal[] = INCBIN_U8("graphics/items/icon_palettes/paralyze_heal.gbapal.lz"); + +const u8 gItemIcon_LargePotion[] = INCBIN_U8("graphics/items/icons/large_potion.4bpp.lz"); +const u8 gItemIconPalette_FullRestore[] = INCBIN_U8("graphics/items/icon_palettes/full_restore.gbapal.lz"); +const u8 gItemIconPalette_MaxPotion[] = INCBIN_U8("graphics/items/icon_palettes/max_potion.gbapal.lz"); + +const u8 gItemIconPalette_HyperPotion[] = INCBIN_U8("graphics/items/icon_palettes/hyper_potion.gbapal.lz"); + +const u8 gItemIconPalette_SuperPotion[] = INCBIN_U8("graphics/items/icon_palettes/super_potion.gbapal.lz"); + +const u8 gItemIcon_FullHeal[] = INCBIN_U8("graphics/items/icons/full_heal.4bpp.lz"); +const u8 gItemIconPalette_FullHeal[] = INCBIN_U8("graphics/items/icon_palettes/full_heal.gbapal.lz"); + +const u8 gItemIcon_Revive[] = INCBIN_U8("graphics/items/icons/revive.4bpp.lz"); + +const u8 gItemIcon_MaxRevive[] = INCBIN_U8("graphics/items/icons/max_revive.4bpp.lz"); + +const u8 gItemIconPalette_Revive[] = INCBIN_U8("graphics/items/icon_palettes/revive.gbapal.lz"); + +const u8 gItemIcon_FreshWater[] = INCBIN_U8("graphics/items/icons/fresh_water.4bpp.lz"); +const u8 gItemIconPalette_FreshWater[] = INCBIN_U8("graphics/items/icon_palettes/fresh_water.gbapal.lz"); + +const u8 gItemIcon_SodaPop[] = INCBIN_U8("graphics/items/icons/soda_pop.4bpp.lz"); +const u8 gItemIconPalette_SodaPop[] = INCBIN_U8("graphics/items/icon_palettes/soda_pop.gbapal.lz"); + +const u8 gItemIcon_Lemonade[] = INCBIN_U8("graphics/items/icons/lemonade.4bpp.lz"); +const u8 gItemIconPalette_Lemonade[] = INCBIN_U8("graphics/items/icon_palettes/lemonade.gbapal.lz"); + +const u8 gItemIcon_MoomooMilk[] = INCBIN_U8("graphics/items/icons/moomoo_milk.4bpp.lz"); +const u8 gItemIconPalette_MoomooMilk[] = INCBIN_U8("graphics/items/icon_palettes/moomoo_milk.gbapal.lz"); + +const u8 gItemIcon_Powder[] = INCBIN_U8("graphics/items/icons/powder.4bpp.lz"); +const u8 gItemIconPalette_EnergyPowder[] = INCBIN_U8("graphics/items/icon_palettes/energy_powder.gbapal.lz"); + +const u8 gItemIcon_EnergyRoot[] = INCBIN_U8("graphics/items/icons/energy_root.4bpp.lz"); +const u8 gItemIconPalette_EnergyRoot[] = INCBIN_U8("graphics/items/icon_palettes/energy_root.gbapal.lz"); + +const u8 gItemIconPalette_HealPowder[] = INCBIN_U8("graphics/items/icon_palettes/heal_powder.gbapal.lz"); + +const u8 gItemIcon_RevivalHerb[] = INCBIN_U8("graphics/items/icons/revival_herb.4bpp.lz"); +const u8 gItemIconPalette_RevivalHerb[] = INCBIN_U8("graphics/items/icon_palettes/revival_herb.gbapal.lz"); + +const u8 gItemIcon_Ether[] = INCBIN_U8("graphics/items/icons/ether.4bpp.lz"); +const u8 gItemIconPalette_Ether[] = INCBIN_U8("graphics/items/icon_palettes/ether.gbapal.lz"); +const u8 gItemIconPalette_MaxEther[] = INCBIN_U8("graphics/items/icon_palettes/max_ether.gbapal.lz"); +const u8 gItemIconPalette_Elixir[] = INCBIN_U8("graphics/items/icon_palettes/elixir.gbapal.lz"); +const u8 gItemIconPalette_MaxElixir[] = INCBIN_U8("graphics/items/icon_palettes/max_elixir.gbapal.lz"); + +const u8 gItemIcon_LavaCookie[] = INCBIN_U8("graphics/items/icons/lava_cookie.4bpp.lz"); +const u8 gItemIconPalette_LavaCookieAndLetter[] = INCBIN_U8("graphics/items/icon_palettes/lava_cookie_and_letter.gbapal.lz"); + +const u8 gItemIcon_Flute[] = INCBIN_U8("graphics/items/icons/flute.4bpp.lz"); +const u8 gItemIconPalette_BlueFlute[] = INCBIN_U8("graphics/items/icon_palettes/blue_flute.gbapal.lz"); +const u8 gItemIconPalette_YellowFlute[] = INCBIN_U8("graphics/items/icon_palettes/yellow_flute.gbapal.lz"); +const u8 gItemIconPalette_RedFlute[] = INCBIN_U8("graphics/items/icon_palettes/red_flute.gbapal.lz"); +const u8 gItemIconPalette_BlackFlute[] = INCBIN_U8("graphics/items/icon_palettes/black_flute.gbapal.lz"); +const u8 gItemIconPalette_WhiteFlute[] = INCBIN_U8("graphics/items/icon_palettes/white_flute.gbapal.lz"); + +const u8 gItemIcon_BerryJuice[] = INCBIN_U8("graphics/items/icons/berry_juice.4bpp.lz"); +const u8 gItemIconPalette_BerryJuice[] = INCBIN_U8("graphics/items/icon_palettes/berry_juice.gbapal.lz"); + +const u8 gItemIcon_SacredAsh[] = INCBIN_U8("graphics/items/icons/sacred_ash.4bpp.lz"); +const u8 gItemIconPalette_SacredAsh[] = INCBIN_U8("graphics/items/icon_palettes/sacred_ash.gbapal.lz"); + +// Collectibles + +const u8 gItemIconPalette_ShoalSalt[] = INCBIN_U8("graphics/items/icon_palettes/shoal_salt.gbapal.lz"); + +const u8 gItemIcon_ShoalShell[] = INCBIN_U8("graphics/items/icons/shoal_shell.4bpp.lz"); +const u8 gItemIconPalette_Shell[] = INCBIN_U8("graphics/items/icon_palettes/shell.gbapal.lz"); + +const u8 gItemIcon_Shard[] = INCBIN_U8("graphics/items/icons/shard.4bpp.lz"); +const u8 gItemIconPalette_RedShard[] = INCBIN_U8("graphics/items/icon_palettes/red_shard.gbapal.lz"); +const u8 gItemIconPalette_BlueShard[] = INCBIN_U8("graphics/items/icon_palettes/blue_shard.gbapal.lz"); +const u8 gItemIconPalette_YellowShard[] = INCBIN_U8("graphics/items/icon_palettes/yellow_shard.gbapal.lz"); +const u8 gItemIconPalette_GreenShard[] = INCBIN_U8("graphics/items/icon_palettes/green_shard.gbapal.lz"); + +// Vitamins + +const u8 gItemIcon_HPUp[] = INCBIN_U8("graphics/items/icons/hp_up.4bpp.lz"); +const u8 gItemIconPalette_HPUp[] = INCBIN_U8("graphics/items/icon_palettes/hp_up.gbapal.lz"); + +const u8 gItemIcon_Vitamin[] = INCBIN_U8("graphics/items/icons/vitamin.4bpp.lz"); +const u8 gItemIconPalette_Protein[] = INCBIN_U8("graphics/items/icon_palettes/protein.gbapal.lz"); +const u8 gItemIconPalette_Iron[] = INCBIN_U8("graphics/items/icon_palettes/iron.gbapal.lz"); +const u8 gItemIconPalette_Carbos[] = INCBIN_U8("graphics/items/icon_palettes/carbos.gbapal.lz"); +const u8 gItemIconPalette_Calcium[] = INCBIN_U8("graphics/items/icon_palettes/calcium.gbapal.lz"); + +const u8 gItemIcon_RareCandy[] = INCBIN_U8("graphics/items/icons/rare_candy.4bpp.lz"); +const u8 gItemIconPalette_RareCandy[] = INCBIN_U8("graphics/items/icon_palettes/rare_candy.gbapal.lz"); + +const u8 gItemIcon_PPUp[] = INCBIN_U8("graphics/items/icons/pp_up.4bpp.lz"); +const u8 gItemIconPalette_PPUp[] = INCBIN_U8("graphics/items/icon_palettes/pp_up.gbapal.lz"); + +const u8 gItemIconPalette_Zinc[] = INCBIN_U8("graphics/items/icon_palettes/zinc.gbapal.lz"); + +const u8 gItemIcon_PPMax[] = INCBIN_U8("graphics/items/icons/pp_max.4bpp.lz"); +const u8 gItemIconPalette_PPMax[] = INCBIN_U8("graphics/items/icon_palettes/pp_max.gbapal.lz"); + +// Battle items + +const u8 gItemIconPalette_GuardSpec[] = INCBIN_U8("graphics/items/icon_palettes/guard_spec.gbapal.lz"); +const u8 gItemIconPalette_DireHit[] = INCBIN_U8("graphics/items/icon_palettes/dire_hit.gbapal.lz"); +const u8 gItemIconPalette_XAttack[] = INCBIN_U8("graphics/items/icon_palettes/x_attack.gbapal.lz"); +const u8 gItemIcon_BattleStatItem[] = INCBIN_U8("graphics/items/icons/battle_stat_item.4bpp.lz"); +const u8 gItemIconPalette_XDefend[] = INCBIN_U8("graphics/items/icon_palettes/x_defend.gbapal.lz"); +const u8 gItemIconPalette_XSpeed[] = INCBIN_U8("graphics/items/icon_palettes/x_speed.gbapal.lz"); +const u8 gItemIconPalette_XAccuracy[] = INCBIN_U8("graphics/items/icon_palettes/x_accuracy.gbapal.lz"); +const u8 gItemIconPalette_XSpecial[] = INCBIN_U8("graphics/items/icon_palettes/x_special.gbapal.lz"); + +const u8 gItemIcon_PokeDoll[] = INCBIN_U8("graphics/items/icons/poke_doll.4bpp.lz"); +const u8 gItemIconPalette_PokeDoll[] = INCBIN_U8("graphics/items/icon_palettes/poke_doll.gbapal.lz"); + +const u8 gItemIcon_FluffyTail[] = INCBIN_U8("graphics/items/icons/fluffy_tail.4bpp.lz"); +const u8 gItemIconPalette_FluffyTail[] = INCBIN_U8("graphics/items/icon_palettes/fluffy_tail.gbapal.lz"); + +// Field items + +const u8 gItemIcon_Repel[] = INCBIN_U8("graphics/items/icons/repel.4bpp.lz"); +const u8 gItemIconPalette_SuperRepel[] = INCBIN_U8("graphics/items/icon_palettes/super_repel.gbapal.lz"); +const u8 gItemIconPalette_MaxRepel[] = INCBIN_U8("graphics/items/icon_palettes/max_repel.gbapal.lz"); + +const u8 gItemIcon_EscapeRope[] = INCBIN_U8("graphics/items/icons/escape_rope.4bpp.lz"); + +const u8 gItemIconPalette_EscapeRope[] = INCBIN_U8("graphics/items/icon_palettes/escape_rope.gbapal.lz"); + +const u8 gItemIconPalette_Repel[] = INCBIN_U8("graphics/items/icon_palettes/repel.gbapal.lz"); + +// Evolution stones + +const u8 gItemIcon_SunStone[] = INCBIN_U8("graphics/items/icons/sun_stone.4bpp.lz"); +const u8 gItemIconPalette_SunStone[] = INCBIN_U8("graphics/items/icon_palettes/sun_stone.gbapal.lz"); + +const u8 gItemIcon_MoonStone[] = INCBIN_U8("graphics/items/icons/moon_stone.4bpp.lz"); +const u8 gItemIconPalette_MoonStone[] = INCBIN_U8("graphics/items/icon_palettes/moon_stone.gbapal.lz"); + +const u8 gItemIcon_FireStone[] = INCBIN_U8("graphics/items/icons/fire_stone.4bpp.lz"); +const u8 gItemIconPalette_FireStone[] = INCBIN_U8("graphics/items/icon_palettes/fire_stone.gbapal.lz"); + +const u8 gItemIcon_ThunderStone[] = INCBIN_U8("graphics/items/icons/thunder_stone.4bpp.lz"); +const u8 gItemIconPalette_ThunderStone[] = INCBIN_U8("graphics/items/icon_palettes/thunder_stone.gbapal.lz"); + +const u8 gItemIcon_WaterStone[] = INCBIN_U8("graphics/items/icons/water_stone.4bpp.lz"); +const u8 gItemIconPalette_WaterStone[] = INCBIN_U8("graphics/items/icon_palettes/water_stone.gbapal.lz"); + +const u8 gItemIcon_LeafStone[] = INCBIN_U8("graphics/items/icons/leaf_stone.4bpp.lz"); +const u8 gItemIconPalette_LeafStone[] = INCBIN_U8("graphics/items/icon_palettes/leaf_stone.gbapal.lz"); + +// Valuables + +const u8 gItemIcon_TinyMushroom[] = INCBIN_U8("graphics/items/icons/tiny_mushroom.4bpp.lz"); +const u8 gItemIcon_BigMushroom[] = INCBIN_U8("graphics/items/icons/big_mushroom.4bpp.lz"); +const u8 gItemIconPalette_Mushroom[] = INCBIN_U8("graphics/items/icon_palettes/mushroom.gbapal.lz"); + +const u8 gItemIcon_Pearl[] = INCBIN_U8("graphics/items/icons/pearl.4bpp.lz"); +const u8 gItemIconPalette_Pearl[] = INCBIN_U8("graphics/items/icon_palettes/pearl.gbapal.lz"); +const u8 gItemIcon_BigPearl[] = INCBIN_U8("graphics/items/icons/big_pearl.4bpp.lz"); + +const u8 gItemIcon_Stardust[] = INCBIN_U8("graphics/items/icons/stardust.4bpp.lz"); +const u8 gItemIconPalette_Star[] = INCBIN_U8("graphics/items/icon_palettes/star.gbapal.lz"); +const u8 gItemIcon_StarPiece[] = INCBIN_U8("graphics/items/icons/star_piece.4bpp.lz"); + +const u8 gItemIcon_Nugget[] = INCBIN_U8("graphics/items/icons/nugget.4bpp.lz"); +const u8 gItemIconPalette_Nugget[] = INCBIN_U8("graphics/items/icon_palettes/nugget.gbapal.lz"); + +const u8 gItemIcon_HeartScale[] = INCBIN_U8("graphics/items/icons/heart_scale.4bpp.lz"); +const u8 gItemIconPalette_HeartScale[] = INCBIN_U8("graphics/items/icon_palettes/heart_scale.gbapal.lz"); + +// Mail + +const u8 gItemIcon_OrangeMail[] = INCBIN_U8("graphics/items/icons/orange_mail.4bpp.lz"); +const u8 gItemIconPalette_OrangeMail[] = INCBIN_U8("graphics/items/icon_palettes/orange_mail.gbapal.lz"); + +const u8 gItemIcon_HarborMail[] = INCBIN_U8("graphics/items/icons/harbor_mail.4bpp.lz"); +const u8 gItemIconPalette_HarborMail[] = INCBIN_U8("graphics/items/icon_palettes/harbor_mail.gbapal.lz"); + +const u8 gItemIcon_GlitterMail[] = INCBIN_U8("graphics/items/icons/glitter_mail.4bpp.lz"); +const u8 gItemIconPalette_GlitterMail[] = INCBIN_U8("graphics/items/icon_palettes/glitter_mail.gbapal.lz"); + +const u8 gItemIcon_MechMail[] = INCBIN_U8("graphics/items/icons/mech_mail.4bpp.lz"); +const u8 gItemIconPalette_MechMail[] = INCBIN_U8("graphics/items/icon_palettes/mech_mail.gbapal.lz"); + +const u8 gItemIcon_WoodMail[] = INCBIN_U8("graphics/items/icons/wood_mail.4bpp.lz"); +const u8 gItemIconPalette_WoodMail[] = INCBIN_U8("graphics/items/icon_palettes/wood_mail.gbapal.lz"); + +const u8 gItemIcon_WaveMail[] = INCBIN_U8("graphics/items/icons/wave_mail.4bpp.lz"); +const u8 gItemIconPalette_WaveMail[] = INCBIN_U8("graphics/items/icon_palettes/wave_mail.gbapal.lz"); + +const u8 gItemIcon_BeadMail[] = INCBIN_U8("graphics/items/icons/bead_mail.4bpp.lz"); +const u8 gItemIconPalette_BeadMail[] = INCBIN_U8("graphics/items/icon_palettes/bead_mail.gbapal.lz"); + +const u8 gItemIcon_ShadowMail[] = INCBIN_U8("graphics/items/icons/shadow_mail.4bpp.lz"); +const u8 gItemIconPalette_ShadowMail[] = INCBIN_U8("graphics/items/icon_palettes/shadow_mail.gbapal.lz"); + +const u8 gItemIcon_TropicMail[] = INCBIN_U8("graphics/items/icons/tropic_mail.4bpp.lz"); +const u8 gItemIconPalette_TropicMail[] = INCBIN_U8("graphics/items/icon_palettes/tropic_mail.gbapal.lz"); + +const u8 gItemIcon_DreamMail[] = INCBIN_U8("graphics/items/icons/dream_mail.4bpp.lz"); +const u8 gItemIconPalette_DreamMail[] = INCBIN_U8("graphics/items/icon_palettes/dream_mail.gbapal.lz"); + +const u8 gItemIcon_FabMail[] = INCBIN_U8("graphics/items/icons/fab_mail.4bpp.lz"); +const u8 gItemIconPalette_FabMail[] = INCBIN_U8("graphics/items/icon_palettes/fab_mail.gbapal.lz"); + +const u8 gItemIcon_RetroMail[] = INCBIN_U8("graphics/items/icons/retro_mail.4bpp.lz"); +const u8 gItemIconPalette_RetroMail[] = INCBIN_U8("graphics/items/icon_palettes/retro_mail.gbapal.lz"); + +// Berries + +const u8 gItemIcon_CheriBerry[] = INCBIN_U8("graphics/items/icons/cheri_berry.4bpp.lz"); +const u8 gItemIconPalette_CheriBerry[] = INCBIN_U8("graphics/items/icon_palettes/cheri_berry.gbapal.lz"); + +const u8 gItemIcon_ChestoBerry[] = INCBIN_U8("graphics/items/icons/chesto_berry.4bpp.lz"); +const u8 gItemIconPalette_ChestoBerry[] = INCBIN_U8("graphics/items/icon_palettes/chesto_berry.gbapal.lz"); + +const u8 gItemIcon_PechaBerry[] = INCBIN_U8("graphics/items/icons/pecha_berry.4bpp.lz"); +const u8 gItemIconPalette_PechaBerry[] = INCBIN_U8("graphics/items/icon_palettes/pecha_berry.gbapal.lz"); + +const u8 gItemIcon_RawstBerry[] = INCBIN_U8("graphics/items/icons/rawst_berry.4bpp.lz"); +const u8 gItemIconPalette_RawstBerry[] = INCBIN_U8("graphics/items/icon_palettes/rawst_berry.gbapal.lz"); + +const u8 gItemIcon_AspearBerry[] = INCBIN_U8("graphics/items/icons/aspear_berry.4bpp.lz"); +const u8 gItemIconPalette_AspearBerry[] = INCBIN_U8("graphics/items/icon_palettes/aspear_berry.gbapal.lz"); + +const u8 gItemIcon_LeppaBerry[] = INCBIN_U8("graphics/items/icons/leppa_berry.4bpp.lz"); +const u8 gItemIconPalette_LeppaBerry[] = INCBIN_U8("graphics/items/icon_palettes/leppa_berry.gbapal.lz"); + +const u8 gItemIcon_OranBerry[] = INCBIN_U8("graphics/items/icons/oran_berry.4bpp.lz"); +const u8 gItemIconPalette_OranBerry[] = INCBIN_U8("graphics/items/icon_palettes/oran_berry.gbapal.lz"); + +const u8 gItemIcon_PersimBerry[] = INCBIN_U8("graphics/items/icons/persim_berry.4bpp.lz"); +const u8 gItemIconPalette_PersimBerry[] = INCBIN_U8("graphics/items/icon_palettes/persim_berry.gbapal.lz"); + +const u8 gItemIcon_LumBerry[] = INCBIN_U8("graphics/items/icons/lum_berry.4bpp.lz"); +const u8 gItemIconPalette_LumBerry[] = INCBIN_U8("graphics/items/icon_palettes/lum_berry.gbapal.lz"); + +const u8 gItemIcon_SitrusBerry[] = INCBIN_U8("graphics/items/icons/sitrus_berry.4bpp.lz"); +const u8 gItemIconPalette_SitrusBerry[] = INCBIN_U8("graphics/items/icon_palettes/sitrus_berry.gbapal.lz"); + +const u8 gItemIcon_FigyBerry[] = INCBIN_U8("graphics/items/icons/figy_berry.4bpp.lz"); +const u8 gItemIconPalette_FigyBerry[] = INCBIN_U8("graphics/items/icon_palettes/figy_berry.gbapal.lz"); + +const u8 gItemIcon_WikiBerry[] = INCBIN_U8("graphics/items/icons/wiki_berry.4bpp.lz"); +const u8 gItemIconPalette_WikiBerry[] = INCBIN_U8("graphics/items/icon_palettes/wiki_berry.gbapal.lz"); + +const u8 gItemIcon_MagoBerry[] = INCBIN_U8("graphics/items/icons/mago_berry.4bpp.lz"); +const u8 gItemIconPalette_MagoBerry[] = INCBIN_U8("graphics/items/icon_palettes/mago_berry.gbapal.lz"); + +const u8 gItemIcon_AguavBerry[] = INCBIN_U8("graphics/items/icons/aguav_berry.4bpp.lz"); +const u8 gItemIconPalette_AguavBerry[] = INCBIN_U8("graphics/items/icon_palettes/aguav_berry.gbapal.lz"); + +const u8 gItemIcon_IapapaBerry[] = INCBIN_U8("graphics/items/icons/iapapa_berry.4bpp.lz"); +const u8 gItemIconPalette_IapapaBerry[] = INCBIN_U8("graphics/items/icon_palettes/iapapa_berry.gbapal.lz"); + +const u8 gItemIcon_RazzBerry[] = INCBIN_U8("graphics/items/icons/razz_berry.4bpp.lz"); +const u8 gItemIconPalette_RazzBerry[] = INCBIN_U8("graphics/items/icon_palettes/razz_berry.gbapal.lz"); + +const u8 gItemIcon_BlukBerry[] = INCBIN_U8("graphics/items/icons/bluk_berry.4bpp.lz"); +const u8 gItemIconPalette_BlukBerry[] = INCBIN_U8("graphics/items/icon_palettes/bluk_berry.gbapal.lz"); + +const u8 gItemIcon_NanabBerry[] = INCBIN_U8("graphics/items/icons/nanab_berry.4bpp.lz"); +const u8 gItemIconPalette_NanabBerry[] = INCBIN_U8("graphics/items/icon_palettes/nanab_berry.gbapal.lz"); + +const u8 gItemIcon_WepearBerry[] = INCBIN_U8("graphics/items/icons/wepear_berry.4bpp.lz"); +const u8 gItemIconPalette_WepearBerry[] = INCBIN_U8("graphics/items/icon_palettes/wepear_berry.gbapal.lz"); + +const u8 gItemIcon_PinapBerry[] = INCBIN_U8("graphics/items/icons/pinap_berry.4bpp.lz"); +const u8 gItemIconPalette_PinapBerry[] = INCBIN_U8("graphics/items/icon_palettes/pinap_berry.gbapal.lz"); + +const u8 gItemIcon_PomegBerry[] = INCBIN_U8("graphics/items/icons/pomeg_berry.4bpp.lz"); +const u8 gItemIconPalette_PomegBerry[] = INCBIN_U8("graphics/items/icon_palettes/pomeg_berry.gbapal.lz"); + +const u8 gItemIcon_KelpsyBerry[] = INCBIN_U8("graphics/items/icons/kelpsy_berry.4bpp.lz"); +const u8 gItemIconPalette_KelpsyBerry[] = INCBIN_U8("graphics/items/icon_palettes/kelpsy_berry.gbapal.lz"); + +const u8 gItemIcon_QualotBerry[] = INCBIN_U8("graphics/items/icons/qualot_berry.4bpp.lz"); +const u8 gItemIconPalette_QualotBerry[] = INCBIN_U8("graphics/items/icon_palettes/qualot_berry.gbapal.lz"); + +const u8 gItemIcon_HondewBerry[] = INCBIN_U8("graphics/items/icons/hondew_berry.4bpp.lz"); +const u8 gItemIconPalette_HondewBerry[] = INCBIN_U8("graphics/items/icon_palettes/hondew_berry.gbapal.lz"); + +const u8 gItemIcon_GrepaBerry[] = INCBIN_U8("graphics/items/icons/grepa_berry.4bpp.lz"); +const u8 gItemIconPalette_GrepaBerry[] = INCBIN_U8("graphics/items/icon_palettes/grepa_berry.gbapal.lz"); + +const u8 gItemIcon_TamatoBerry[] = INCBIN_U8("graphics/items/icons/tamato_berry.4bpp.lz"); +const u8 gItemIconPalette_TamatoBerry[] = INCBIN_U8("graphics/items/icon_palettes/tamato_berry.gbapal.lz"); + +const u8 gItemIcon_CornnBerry[] = INCBIN_U8("graphics/items/icons/cornn_berry.4bpp.lz"); +const u8 gItemIconPalette_CornnBerry[] = INCBIN_U8("graphics/items/icon_palettes/cornn_berry.gbapal.lz"); + +const u8 gItemIcon_MagostBerry[] = INCBIN_U8("graphics/items/icons/magost_berry.4bpp.lz"); +const u8 gItemIconPalette_MagostBerry[] = INCBIN_U8("graphics/items/icon_palettes/magost_berry.gbapal.lz"); + +const u8 gItemIcon_RabutaBerry[] = INCBIN_U8("graphics/items/icons/rabuta_berry.4bpp.lz"); +const u8 gItemIconPalette_RabutaBerry[] = INCBIN_U8("graphics/items/icon_palettes/rabuta_berry.gbapal.lz"); + +const u8 gItemIcon_NomelBerry[] = INCBIN_U8("graphics/items/icons/nomel_berry.4bpp.lz"); +const u8 gItemIconPalette_NomelBerry[] = INCBIN_U8("graphics/items/icon_palettes/nomel_berry.gbapal.lz"); + +const u8 gItemIcon_SpelonBerry[] = INCBIN_U8("graphics/items/icons/spelon_berry.4bpp.lz"); +const u8 gItemIconPalette_SpelonBerry[] = INCBIN_U8("graphics/items/icon_palettes/spelon_berry.gbapal.lz"); + +const u8 gItemIcon_PamtreBerry[] = INCBIN_U8("graphics/items/icons/pamtre_berry.4bpp.lz"); +const u8 gItemIconPalette_PamtreBerry[] = INCBIN_U8("graphics/items/icon_palettes/pamtre_berry.gbapal.lz"); + +const u8 gItemIcon_WatmelBerry[] = INCBIN_U8("graphics/items/icons/watmel_berry.4bpp.lz"); +const u8 gItemIconPalette_WatmelBerry[] = INCBIN_U8("graphics/items/icon_palettes/watmel_berry.gbapal.lz"); + +const u8 gItemIcon_DurinBerry[] = INCBIN_U8("graphics/items/icons/durin_berry.4bpp.lz"); +const u8 gItemIconPalette_DurinBerry[] = INCBIN_U8("graphics/items/icon_palettes/durin_berry.gbapal.lz"); + +const u8 gItemIcon_BelueBerry[] = INCBIN_U8("graphics/items/icons/belue_berry.4bpp.lz"); +const u8 gItemIconPalette_BelueBerry[] = INCBIN_U8("graphics/items/icon_palettes/belue_berry.gbapal.lz"); + +const u8 gItemIcon_LiechiBerry[] = INCBIN_U8("graphics/items/icons/liechi_berry.4bpp.lz"); +const u8 gItemIconPalette_LiechiBerry[] = INCBIN_U8("graphics/items/icon_palettes/liechi_berry.gbapal.lz"); + +const u8 gItemIcon_GanlonBerry[] = INCBIN_U8("graphics/items/icons/ganlon_berry.4bpp.lz"); +const u8 gItemIconPalette_GanlonBerry[] = INCBIN_U8("graphics/items/icon_palettes/ganlon_berry.gbapal.lz"); + +const u8 gItemIcon_SalacBerry[] = INCBIN_U8("graphics/items/icons/salac_berry.4bpp.lz"); +const u8 gItemIconPalette_SalacBerry[] = INCBIN_U8("graphics/items/icon_palettes/salac_berry.gbapal.lz"); + +const u8 gItemIcon_PetayaBerry[] = INCBIN_U8("graphics/items/icons/petaya_berry.4bpp.lz"); +const u8 gItemIconPalette_PetayaBerry[] = INCBIN_U8("graphics/items/icon_palettes/petaya_berry.gbapal.lz"); + +const u8 gItemIcon_ApicotBerry[] = INCBIN_U8("graphics/items/icons/apicot_berry.4bpp.lz"); +const u8 gItemIconPalette_ApicotBerry[] = INCBIN_U8("graphics/items/icon_palettes/apicot_berry.gbapal.lz"); + +const u8 gItemIcon_LansatBerry[] = INCBIN_U8("graphics/items/icons/lansat_berry.4bpp.lz"); +const u8 gItemIconPalette_LansatBerry[] = INCBIN_U8("graphics/items/icon_palettes/lansat_berry.gbapal.lz"); + +const u8 gItemIcon_StarfBerry[] = INCBIN_U8("graphics/items/icons/starf_berry.4bpp.lz"); +const u8 gItemIconPalette_StarfBerry[] = INCBIN_U8("graphics/items/icon_palettes/starf_berry.gbapal.lz"); + +const u8 gItemIcon_EnigmaBerry[] = INCBIN_U8("graphics/items/icons/enigma_berry.4bpp.lz"); +const u8 gItemIconPalette_EnigmaBerry[] = INCBIN_U8("graphics/items/icon_palettes/enigma_berry.gbapal.lz"); + +// Hold items + +const u8 gItemIcon_BrightPowder[] = INCBIN_U8("graphics/items/icons/bright_powder.4bpp.lz"); +const u8 gItemIconPalette_BrightPowder[] = INCBIN_U8("graphics/items/icon_palettes/bright_powder.gbapal.lz"); + +const u8 gItemIcon_InBattleHerb[] = INCBIN_U8("graphics/items/icons/in_battle_herb.4bpp.lz"); +const u8 gItemIconPalette_WhiteHerb[] = INCBIN_U8("graphics/items/icon_palettes/white_herb.gbapal.lz"); + +const u8 gItemIcon_MachoBrace[] = INCBIN_U8("graphics/items/icons/macho_brace.4bpp.lz"); +const u8 gItemIconPalette_MachoBrace[] = INCBIN_U8("graphics/items/icon_palettes/macho_brace.gbapal.lz"); + +const u8 gItemIcon_ExpShare[] = INCBIN_U8("graphics/items/icons/exp_share.4bpp.lz"); +const u8 gItemIconPalette_ExpShare[] = INCBIN_U8("graphics/items/icon_palettes/exp_share.gbapal.lz"); + +const u8 gItemIcon_QuickClaw[] = INCBIN_U8("graphics/items/icons/quick_claw.4bpp.lz"); +const u8 gItemIconPalette_QuickClaw[] = INCBIN_U8("graphics/items/icon_palettes/quick_claw.gbapal.lz"); + +const u8 gItemIcon_SootheBell[] = INCBIN_U8("graphics/items/icons/soothe_bell.4bpp.lz"); +const u8 gItemIconPalette_SootheBell[] = INCBIN_U8("graphics/items/icon_palettes/soothe_bell.gbapal.lz"); + +const u8 gItemIconPalette_MentalHerb[] = INCBIN_U8("graphics/items/icon_palettes/mental_herb.gbapal.lz"); + +const u8 gItemIcon_ChoiceBand[] = INCBIN_U8("graphics/items/icons/choice_band.4bpp.lz"); +const u8 gItemIconPalette_ChoiceBand[] = INCBIN_U8("graphics/items/icon_palettes/choice_band.gbapal.lz"); + +const u8 gItemIcon_KingsRock[] = INCBIN_U8("graphics/items/icons/kings_rock.4bpp.lz"); +const u8 gItemIconPalette_KingsRock[] = INCBIN_U8("graphics/items/icon_palettes/kings_rock.gbapal.lz"); + +const u8 gItemIcon_SilverPowder[] = INCBIN_U8("graphics/items/icons/silver_powder.4bpp.lz"); +const u8 gItemIconPalette_SilverPowder[] = INCBIN_U8("graphics/items/icon_palettes/silver_powder.gbapal.lz"); + +const u8 gItemIcon_AmuletCoin[] = INCBIN_U8("graphics/items/icons/amulet_coin.4bpp.lz"); +const u8 gItemIconPalette_AmuletCoin[] = INCBIN_U8("graphics/items/icon_palettes/amulet_coin.gbapal.lz"); + +const u8 gItemIcon_CleanseTag[] = INCBIN_U8("graphics/items/icons/cleanse_tag.4bpp.lz"); +const u8 gItemIconPalette_CleanseTag[] = INCBIN_U8("graphics/items/icon_palettes/cleanse_tag.gbapal.lz"); + +const u8 gItemIcon_SoulDew[] = INCBIN_U8("graphics/items/icons/soul_dew.4bpp.lz"); +const u8 gItemIconPalette_SoulDew[] = INCBIN_U8("graphics/items/icon_palettes/soul_dew.gbapal.lz"); + +const u8 gItemIcon_DeepSeaTooth[] = INCBIN_U8("graphics/items/icons/deep_sea_tooth.4bpp.lz"); +const u8 gItemIconPalette_DeepSeaTooth[] = INCBIN_U8("graphics/items/icon_palettes/deep_sea_tooth.gbapal.lz"); + +const u8 gItemIcon_DeepSeaScale[] = INCBIN_U8("graphics/items/icons/deep_sea_scale.4bpp.lz"); +const u8 gItemIconPalette_DeepSeaScale[] = INCBIN_U8("graphics/items/icon_palettes/deep_sea_scale.gbapal.lz"); + +const u8 gItemIcon_SmokeBall[] = INCBIN_U8("graphics/items/icons/smoke_ball.4bpp.lz"); +const u8 gItemIconPalette_SmokeBall[] = INCBIN_U8("graphics/items/icon_palettes/smoke_ball.gbapal.lz"); + +const u8 gItemIcon_Everstone[] = INCBIN_U8("graphics/items/icons/everstone.4bpp.lz"); +const u8 gItemIconPalette_Everstone[] = INCBIN_U8("graphics/items/icon_palettes/everstone.gbapal.lz"); + +const u8 gItemIcon_FocusBand[] = INCBIN_U8("graphics/items/icons/focus_band.4bpp.lz"); +const u8 gItemIconPalette_FocusBand[] = INCBIN_U8("graphics/items/icon_palettes/focus_band.gbapal.lz"); + +const u8 gItemIcon_LuckyEgg[] = INCBIN_U8("graphics/items/icons/lucky_egg.4bpp.lz"); +const u8 gItemIconPalette_LuckyEgg[] = INCBIN_U8("graphics/items/icon_palettes/lucky_egg.gbapal.lz"); + +const u8 gItemIcon_ScopeLens[] = INCBIN_U8("graphics/items/icons/scope_lens.4bpp.lz"); +const u8 gItemIconPalette_ScopeLens[] = INCBIN_U8("graphics/items/icon_palettes/scope_lens.gbapal.lz"); + +const u8 gItemIcon_MetalCoat[] = INCBIN_U8("graphics/items/icons/metal_coat.4bpp.lz"); +const u8 gItemIconPalette_MetalCoat[] = INCBIN_U8("graphics/items/icon_palettes/metal_coat.gbapal.lz"); + +const u8 gItemIcon_Leftovers[] = INCBIN_U8("graphics/items/icons/leftovers.4bpp.lz"); +const u8 gItemIconPalette_Leftovers[] = INCBIN_U8("graphics/items/icon_palettes/leftovers.gbapal.lz"); + +const u8 gItemIcon_DragonScale[] = INCBIN_U8("graphics/items/icons/dragon_scale.4bpp.lz"); +const u8 gItemIconPalette_DragonScale[] = INCBIN_U8("graphics/items/icon_palettes/dragon_scale.gbapal.lz"); + +const u8 gItemIcon_LightBall[] = INCBIN_U8("graphics/items/icons/light_ball.4bpp.lz"); +const u8 gItemIconPalette_LightBall[] = INCBIN_U8("graphics/items/icon_palettes/light_ball.gbapal.lz"); + +const u8 gItemIcon_SoftSand[] = INCBIN_U8("graphics/items/icons/soft_sand.4bpp.lz"); +const u8 gItemIconPalette_SoftSand[] = INCBIN_U8("graphics/items/icon_palettes/soft_sand.gbapal.lz"); + +const u8 gItemIcon_HardStone[] = INCBIN_U8("graphics/items/icons/hard_stone.4bpp.lz"); +const u8 gItemIconPalette_HardStone[] = INCBIN_U8("graphics/items/icon_palettes/hard_stone.gbapal.lz"); + +const u8 gItemIcon_MiracleSeed[] = INCBIN_U8("graphics/items/icons/miracle_seed.4bpp.lz"); +const u8 gItemIconPalette_MiracleSeed[] = INCBIN_U8("graphics/items/icon_palettes/miracle_seed.gbapal.lz"); + +const u8 gItemIcon_BlackGlasses[] = INCBIN_U8("graphics/items/icons/black_glasses.4bpp.lz"); +const u8 gItemIconPalette_BlackTypeEnhancingItem[] = INCBIN_U8("graphics/items/icon_palettes/black_type_enhancing_item.gbapal.lz"); + +const u8 gItemIcon_BlackBelt[] = INCBIN_U8("graphics/items/icons/black_belt.4bpp.lz"); + +const u8 gItemIcon_Magnet[] = INCBIN_U8("graphics/items/icons/magnet.4bpp.lz"); +const u8 gItemIconPalette_Magnet[] = INCBIN_U8("graphics/items/icon_palettes/magnet.gbapal.lz"); + +const u8 gItemIcon_MysticWater[] = INCBIN_U8("graphics/items/icons/mystic_water.4bpp.lz"); +const u8 gItemIconPalette_MysticWater[] = INCBIN_U8("graphics/items/icon_palettes/mystic_water.gbapal.lz"); + +const u8 gItemIcon_SharpBeak[] = INCBIN_U8("graphics/items/icons/sharp_beak.4bpp.lz"); +const u8 gItemIconPalette_SharpBeak[] = INCBIN_U8("graphics/items/icon_palettes/sharp_beak.gbapal.lz"); + +const u8 gItemIcon_PoisonBarb[] = INCBIN_U8("graphics/items/icons/poison_barb.4bpp.lz"); +const u8 gItemIconPalette_PoisonBarb[] = INCBIN_U8("graphics/items/icon_palettes/poison_barb.gbapal.lz"); + +const u8 gItemIcon_NeverMeltIce[] = INCBIN_U8("graphics/items/icons/never_melt_ice.4bpp.lz"); +const u8 gItemIconPalette_NeverMeltIce[] = INCBIN_U8("graphics/items/icon_palettes/never_melt_ice.gbapal.lz"); + +const u8 gItemIcon_SpellTag[] = INCBIN_U8("graphics/items/icons/spell_tag.4bpp.lz"); +const u8 gItemIconPalette_SpellTag[] = INCBIN_U8("graphics/items/icon_palettes/spell_tag.gbapal.lz"); + +const u8 gItemIcon_TwistedSpoon[] = INCBIN_U8("graphics/items/icons/twisted_spoon.4bpp.lz"); +const u8 gItemIconPalette_TwistedSpoon[] = INCBIN_U8("graphics/items/icon_palettes/twisted_spoon.gbapal.lz"); + +const u8 gItemIcon_Charcoal[] = INCBIN_U8("graphics/items/icons/charcoal.4bpp.lz"); +const u8 gItemIconPalette_Charcoal[] = INCBIN_U8("graphics/items/icon_palettes/charcoal.gbapal.lz"); + +const u8 gItemIcon_DragonFang[] = INCBIN_U8("graphics/items/icons/dragon_fang.4bpp.lz"); +const u8 gItemIconPalette_DragonFang[] = INCBIN_U8("graphics/items/icon_palettes/dragon_fang.gbapal.lz"); + +const u8 gItemIcon_SilkScarf[] = INCBIN_U8("graphics/items/icons/silk_scarf.4bpp.lz"); +const u8 gItemIconPalette_SilkScarf[] = INCBIN_U8("graphics/items/icon_palettes/silk_scarf.gbapal.lz"); + +const u8 gItemIcon_UpGrade[] = INCBIN_U8("graphics/items/icons/up_grade.4bpp.lz"); +const u8 gItemIconPalette_UpGrade[] = INCBIN_U8("graphics/items/icon_palettes/up_grade.gbapal.lz"); + +const u8 gItemIcon_ShellBell[] = INCBIN_U8("graphics/items/icons/shell_bell.4bpp.lz"); + +const u8 gItemIcon_SeaIncense[] = INCBIN_U8("graphics/items/icons/sea_incense.4bpp.lz"); +const u8 gItemIconPalette_SeaIncense[] = INCBIN_U8("graphics/items/icon_palettes/sea_incense.gbapal.lz"); + +const u8 gItemIcon_LaxIncense[] = INCBIN_U8("graphics/items/icons/lax_incense.4bpp.lz"); +const u8 gItemIconPalette_LaxIncense[] = INCBIN_U8("graphics/items/icon_palettes/lax_incense.gbapal.lz"); + +const u8 gItemIcon_LuckyPunch[] = INCBIN_U8("graphics/items/icons/lucky_punch.4bpp.lz"); +const u8 gItemIconPalette_LuckyPunch[] = INCBIN_U8("graphics/items/icon_palettes/lucky_punch.gbapal.lz"); + +const u8 gItemIcon_MetalPowder[] = INCBIN_U8("graphics/items/icons/metal_powder.4bpp.lz"); +const u8 gItemIconPalette_MetalPowder[] = INCBIN_U8("graphics/items/icon_palettes/metal_powder.gbapal.lz"); + +const u8 gItemIcon_ThickClub[] = INCBIN_U8("graphics/items/icons/thick_club.4bpp.lz"); +const u8 gItemIconPalette_ThickClub[] = INCBIN_U8("graphics/items/icon_palettes/thick_club.gbapal.lz"); + +const u8 gItemIcon_Stick[] = INCBIN_U8("graphics/items/icons/stick.4bpp.lz"); +const u8 gItemIconPalette_Stick[] = INCBIN_U8("graphics/items/icon_palettes/stick.gbapal.lz"); + +const u8 gItemIcon_Scarf[] = INCBIN_U8("graphics/items/icons/scarf.4bpp.lz"); +const u8 gItemIconPalette_RedScarf[] = INCBIN_U8("graphics/items/icon_palettes/red_scarf.gbapal.lz"); +const u8 gItemIconPalette_BlueScarf[] = INCBIN_U8("graphics/items/icon_palettes/blue_scarf.gbapal.lz"); +const u8 gItemIconPalette_PinkScarf[] = INCBIN_U8("graphics/items/icon_palettes/pink_scarf.gbapal.lz"); +const u8 gItemIconPalette_GreenScarf[] = INCBIN_U8("graphics/items/icon_palettes/green_scarf.gbapal.lz"); +const u8 gItemIconPalette_YellowScarf[] = INCBIN_U8("graphics/items/icon_palettes/yellow_scarf.gbapal.lz"); + +// Key items + +const u8 gItemIcon_MachBike[] = INCBIN_U8("graphics/items/icons/mach_bike.4bpp.lz"); +const u8 gItemIconPalette_MachBike[] = INCBIN_U8("graphics/items/icon_palettes/mach_bike.gbapal.lz"); + +const u8 gItemIcon_CoinCase[] = INCBIN_U8("graphics/items/icons/coin_case.4bpp.lz"); +const u8 gItemIconPalette_CoinCase[] = INCBIN_U8("graphics/items/icon_palettes/coin_case.gbapal.lz"); + +const u8 gItemIcon_Itemfinder[] = INCBIN_U8("graphics/items/icons/itemfinder.4bpp.lz"); +const u8 gItemIconPalette_Itemfinder[] = INCBIN_U8("graphics/items/icon_palettes/itemfinder.gbapal.lz"); + +const u8 gItemIcon_OldRod[] = INCBIN_U8("graphics/items/icons/old_rod.4bpp.lz"); +const u8 gItemIconPalette_OldRod[] = INCBIN_U8("graphics/items/icon_palettes/old_rod.gbapal.lz"); + +const u8 gItemIcon_GoodRod[] = INCBIN_U8("graphics/items/icons/good_rod.4bpp.lz"); +const u8 gItemIconPalette_GoodRod[] = INCBIN_U8("graphics/items/icon_palettes/good_rod.gbapal.lz"); + +const u8 gItemIcon_SuperRod[] = INCBIN_U8("graphics/items/icons/super_rod.4bpp.lz"); +const u8 gItemIconPalette_SuperRod[] = INCBIN_U8("graphics/items/icon_palettes/super_rod.gbapal.lz"); + +const u8 gItemIcon_SSTicket[] = INCBIN_U8("graphics/items/icons/ss_ticket.4bpp.lz"); +const u8 gItemIconPalette_SSTicket[] = INCBIN_U8("graphics/items/icon_palettes/ss_ticket.gbapal.lz"); + +const u8 gItemIcon_ContestPass[] = INCBIN_U8("graphics/items/icons/contest_pass.4bpp.lz"); +const u8 gItemIconPalette_ContestPass[] = INCBIN_U8("graphics/items/icon_palettes/contest_pass.gbapal.lz"); + +const u8 gItemIcon_WailmerPail[] = INCBIN_U8("graphics/items/icons/wailmer_pail.4bpp.lz"); +const u8 gItemIconPalette_WailmerPail[] = INCBIN_U8("graphics/items/icon_palettes/wailmer_pail.gbapal.lz"); + +const u8 gItemIcon_DevonGoods[] = INCBIN_U8("graphics/items/icons/devon_goods.4bpp.lz"); +const u8 gItemIconPalette_DevonGoods[] = INCBIN_U8("graphics/items/icon_palettes/devon_goods.gbapal.lz"); + +const u8 gItemIcon_SootSack[] = INCBIN_U8("graphics/items/icons/soot_sack.4bpp.lz"); +const u8 gItemIconPalette_SootSack[] = INCBIN_U8("graphics/items/icon_palettes/soot_sack.gbapal.lz"); + +const u8 gItemIcon_BasementKey[] = INCBIN_U8("graphics/items/icons/basement_key.4bpp.lz"); +const u8 gItemIconPalette_OldKey[] = INCBIN_U8("graphics/items/icon_palettes/old_key.gbapal.lz"); + +const u8 gItemIcon_AcroBike[] = INCBIN_U8("graphics/items/icons/acro_bike.4bpp.lz"); +const u8 gItemIconPalette_AcroBike[] = INCBIN_U8("graphics/items/icon_palettes/acro_bike.gbapal.lz"); + +const u8 gItemIcon_PokeblockCase[] = INCBIN_U8("graphics/items/icons/pokeblock_case.4bpp.lz"); +const u8 gItemIconPalette_PokeblockCase[] = INCBIN_U8("graphics/items/icon_palettes/pokeblock_case.gbapal.lz"); + +const u8 gItemIcon_Letter[] = INCBIN_U8("graphics/items/icons/letter.4bpp.lz"); +const u8 gItemIcon_EonTicket[] = INCBIN_U8("graphics/items/icons/eon_ticket.4bpp.lz"); + +const u8 gItemIconPalette_EonTicket[] = INCBIN_U8("graphics/items/icon_palettes/eon_ticket.gbapal.lz"); + +const u8 gItemIcon_Orb[] = INCBIN_U8("graphics/items/icons/orb.4bpp.lz"); +const u8 gItemIconPalette_RedOrb[] = INCBIN_U8("graphics/items/icon_palettes/red_orb.gbapal.lz"); +const u8 gItemIconPalette_BlueOrb[] = INCBIN_U8("graphics/items/icon_palettes/blue_orb.gbapal.lz"); + +const u8 gItemIcon_Scanner[] = INCBIN_U8("graphics/items/icons/scanner.4bpp.lz"); +const u8 gItemIconPalette_Scanner[] = INCBIN_U8("graphics/items/icon_palettes/scanner.gbapal.lz"); + +const u8 gItemIcon_GoGoggles[] = INCBIN_U8("graphics/items/icons/go_goggles.4bpp.lz"); +const u8 gItemIconPalette_GoGoggles[] = INCBIN_U8("graphics/items/icon_palettes/go_goggles.gbapal.lz"); + +const u8 gItemIcon_Meteorite[] = INCBIN_U8("graphics/items/icons/meteorite.4bpp.lz"); +const u8 gItemIconPalette_Meteorite[] = INCBIN_U8("graphics/items/icon_palettes/meteorite.gbapal.lz"); + +const u8 gItemIcon_Room1Key[] = INCBIN_U8("graphics/items/icons/room1_key.4bpp.lz"); + +const u8 gItemIcon_Room2Key[] = INCBIN_U8("graphics/items/icons/room2_key.4bpp.lz"); + +const u8 gItemIcon_Room4Key[] = INCBIN_U8("graphics/items/icons/room4_key.4bpp.lz"); + +const u8 gItemIcon_Room6Key[] = INCBIN_U8("graphics/items/icons/room6_key.4bpp.lz"); + +const u8 gItemIcon_StorageKey[] = INCBIN_U8("graphics/items/icons/storage_key.4bpp.lz"); + +const u8 gItemIcon_RootFossil[] = INCBIN_U8("graphics/items/icons/root_fossil.4bpp.lz"); +const u8 gItemIconPalette_HoennFossil[] = INCBIN_U8("graphics/items/icon_palettes/hoenn_fossil.gbapal.lz"); +const u8 gItemIcon_ClawFossil[] = INCBIN_U8("graphics/items/icons/claw_fossil.4bpp.lz"); + +const u8 gItemIcon_DevonScope[] = INCBIN_U8("graphics/items/icons/devon_scope.4bpp.lz"); +const u8 gItemIconPalette_DevonScope[] = INCBIN_U8("graphics/items/icon_palettes/devon_scope.gbapal.lz"); + +// TMs/HMs + +const u8 gItemIcon_TM[] = INCBIN_U8("graphics/items/icons/tm.4bpp.lz"); + +const u8 gItemIconPalette_FightingTMHM[] = INCBIN_U8("graphics/items/icon_palettes/fighting_tm_hm.gbapal.lz"); + +const u8 gItemIconPalette_DragonTMHM[] = INCBIN_U8("graphics/items/icon_palettes/dragon_tm_hm.gbapal.lz"); + +const u8 gItemIconPalette_WaterTMHM[] = INCBIN_U8("graphics/items/icon_palettes/water_tm_hm.gbapal.lz"); + +const u8 gItemIconPalette_PsychicTMHM[] = INCBIN_U8("graphics/items/icon_palettes/psychic_tm_hm.gbapal.lz"); + +const u8 gItemIconPalette_NormalTMHM[] = INCBIN_U8("graphics/items/icon_palettes/normal_tm_hm.gbapal.lz"); + +const u8 gItemIconPalette_PoisonTMHM[] = INCBIN_U8("graphics/items/icon_palettes/poison_tm_hm.gbapal.lz"); + +const u8 gItemIconPalette_IceTMHM[] = INCBIN_U8("graphics/items/icon_palettes/ice_tm_hm.gbapal.lz"); + +const u8 gItemIconPalette_GrassTMHM[] = INCBIN_U8("graphics/items/icon_palettes/grass_tm_hm.gbapal.lz"); + +const u8 gItemIconPalette_FireTMHM[] = INCBIN_U8("graphics/items/icon_palettes/fire_tm_hm.gbapal.lz"); + +const u8 gItemIconPalette_DarkTMHM[] = INCBIN_U8("graphics/items/icon_palettes/dark_tm_hm.gbapal.lz"); + +const u8 gItemIconPalette_SteelTMHM[] = INCBIN_U8("graphics/items/icon_palettes/steel_tm_hm.gbapal.lz"); + +const u8 gItemIconPalette_ElectricTMHM[] = INCBIN_U8("graphics/items/icon_palettes/electric_tm_hm.gbapal.lz"); + +const u8 gItemIconPalette_GroundTMHM[] = INCBIN_U8("graphics/items/icon_palettes/ground_tm_hm.gbapal.lz"); + +const u8 gItemIconPalette_GhostTMHM[] = INCBIN_U8("graphics/items/icon_palettes/ghost_tm_hm.gbapal.lz"); + +const u8 gItemIconPalette_RockTMHM[] = INCBIN_U8("graphics/items/icon_palettes/rock_tm_hm.gbapal.lz"); + +const u8 gItemIconPalette_FlyingTMHM[] = INCBIN_U8("graphics/items/icon_palettes/flying_tm_hm.gbapal.lz"); + +const u8 gItemIcon_HM[] = INCBIN_U8("graphics/items/icons/hm.4bpp.lz"); + +// FireRed/LeafGreen key items + +const u8 gItemIcon_OaksParcel[] = INCBIN_U8("graphics/items/icons/oaks_parcel.4bpp.lz"); +const u8 gItemIconPalette_OaksParcel[] = INCBIN_U8("graphics/items/icon_palettes/oaks_parcel.gbapal.lz"); + +const u8 gItemIcon_PokeFlute[] = INCBIN_U8("graphics/items/icons/poke_flute.4bpp.lz"); +const u8 gItemIconPalette_PokeFlute[] = INCBIN_U8("graphics/items/icon_palettes/poke_flute.gbapal.lz"); + +const u8 gItemIcon_SecretKey[] = INCBIN_U8("graphics/items/icons/secret_key.4bpp.lz"); +const u8 gItemIconPalette_SecretKey[] = INCBIN_U8("graphics/items/icon_palettes/secret_key.gbapal.lz"); + +const u8 gItemIcon_BikeVoucher[] = INCBIN_U8("graphics/items/icons/bike_voucher.4bpp.lz"); +const u8 gItemIconPalette_BikeVoucher[] = INCBIN_U8("graphics/items/icon_palettes/bike_voucher.gbapal.lz"); + +const u8 gItemIcon_GoldTeeth[] = INCBIN_U8("graphics/items/icons/gold_teeth.4bpp.lz"); +const u8 gItemIconPalette_GoldTeeth[] = INCBIN_U8("graphics/items/icon_palettes/gold_teeth.gbapal.lz"); + +const u8 gItemIcon_OldAmber[] = INCBIN_U8("graphics/items/icons/old_amber.4bpp.lz"); +const u8 gItemIconPalette_OldAmber[] = INCBIN_U8("graphics/items/icon_palettes/old_amber.gbapal.lz"); + +const u8 gItemIcon_CardKey[] = INCBIN_U8("graphics/items/icons/card_key.4bpp.lz"); +const u8 gItemIconPalette_CardKey[] = INCBIN_U8("graphics/items/icon_palettes/card_key.gbapal.lz"); + +const u8 gItemIcon_LiftKey[] = INCBIN_U8("graphics/items/icons/lift_key.4bpp.lz"); +const u8 gItemIconPalette_Key[] = INCBIN_U8("graphics/items/icon_palettes/key.gbapal.lz"); + +const u8 gItemIcon_HelixFossil[] = INCBIN_U8("graphics/items/icons/helix_fossil.4bpp.lz"); +const u8 gItemIconPalette_KantoFossil[] = INCBIN_U8("graphics/items/icon_palettes/kanto_fossil.gbapal.lz"); +const u8 gItemIcon_DomeFossil[] = INCBIN_U8("graphics/items/icons/dome_fossil.4bpp.lz"); + +const u8 gItemIcon_SilphScope[] = INCBIN_U8("graphics/items/icons/silph_scope.4bpp.lz"); +const u8 gItemIconPalette_SilphScope[] = INCBIN_U8("graphics/items/icon_palettes/silph_scope.gbapal.lz"); + +const u8 gItemIcon_Bicycle[] = INCBIN_U8("graphics/items/icons/bicycle.4bpp.lz"); +const u8 gItemIconPalette_Bicycle[] = INCBIN_U8("graphics/items/icon_palettes/bicycle.gbapal.lz"); + +const u8 gItemIcon_TownMap[] = INCBIN_U8("graphics/items/icons/town_map.4bpp.lz"); +const u8 gItemIconPalette_TownMap[] = INCBIN_U8("graphics/items/icon_palettes/town_map.gbapal.lz"); + +const u8 gItemIcon_VSSeeker[] = INCBIN_U8("graphics/items/icons/vs_seeker.4bpp.lz"); +const u8 gItemIconPalette_VSSeeker[] = INCBIN_U8("graphics/items/icon_palettes/vs_seeker.gbapal.lz"); + +const u8 gItemIcon_FameChecker[] = INCBIN_U8("graphics/items/icons/fame_checker.4bpp.lz"); +const u8 gItemIconPalette_FameChecker[] = INCBIN_U8("graphics/items/icon_palettes/fame_checker.gbapal.lz"); + +const u8 gItemIcon_TMCase[] = INCBIN_U8("graphics/items/icons/tm_case.4bpp.lz"); +const u8 gItemIconPalette_TMCase[] = INCBIN_U8("graphics/items/icon_palettes/tm_case.gbapal.lz"); + +const u8 gItemIcon_BerryPouch[] = INCBIN_U8("graphics/items/icons/berry_pouch.4bpp.lz"); +const u8 gItemIconPalette_BerryPouch[] = INCBIN_U8("graphics/items/icon_palettes/berry_pouch.gbapal.lz"); + +const u8 gItemIcon_TeachyTV[] = INCBIN_U8("graphics/items/icons/teachy_tv.4bpp.lz"); +const u8 gItemIconPalette_TeachyTV[] = INCBIN_U8("graphics/items/icon_palettes/teachy_tv.gbapal.lz"); + +const u8 gItemIcon_TriPass[] = INCBIN_U8("graphics/items/icons/tri_pass.4bpp.lz"); +const u8 gItemIconPalette_TriPass[] = INCBIN_U8("graphics/items/icon_palettes/tri_pass.gbapal.lz"); + +const u8 gItemIcon_RainbowPass[] = INCBIN_U8("graphics/items/icons/rainbow_pass.4bpp.lz"); +const u8 gItemIconPalette_RainbowPass[] = INCBIN_U8("graphics/items/icon_palettes/rainbow_pass.gbapal.lz"); + +const u8 gItemIcon_Tea[] = INCBIN_U8("graphics/items/icons/tea.4bpp.lz"); +const u8 gItemIconPalette_Tea[] = INCBIN_U8("graphics/items/icon_palettes/tea.gbapal.lz"); + +const u8 gItemIcon_MysticTicket[] = INCBIN_U8("graphics/items/icons/mystic_ticket.4bpp.lz"); +const u8 gItemIconPalette_MysticTicket[] = INCBIN_U8("graphics/items/icon_palettes/mystic_ticket.gbapal.lz"); + +const u8 gItemIcon_AuroraTicket[] = INCBIN_U8("graphics/items/icons/aurora_ticket.4bpp.lz"); +const u8 gItemIconPalette_AuroraTicket[] = INCBIN_U8("graphics/items/icon_palettes/aurora_ticket.gbapal.lz"); + +const u8 gItemIcon_PowderJar[] = INCBIN_U8("graphics/items/icons/powder_jar.4bpp.lz"); +const u8 gItemIconPalette_PowderJar[] = INCBIN_U8("graphics/items/icon_palettes/powder_jar.gbapal.lz"); + +const u8 gItemIconPalette_Ruby[] = INCBIN_U8("graphics/items/icon_palettes/ruby.gbapal.lz"); +const u8 gItemIcon_Gem[] = INCBIN_U8("graphics/items/icons/gem.4bpp.lz"); +const u8 gItemIconPalette_Sapphire[] = INCBIN_U8("graphics/items/icon_palettes/sapphire.gbapal.lz"); + +// Emerald-only key items + +const u8 gItemIcon_MagmaEmblem[] = INCBIN_U8("graphics/items/icons/magma_emblem.4bpp.lz"); +const u8 gItemIconPalette_MagmaEmblem[] = INCBIN_U8("graphics/items/icon_palettes/magma_emblem.gbapal.lz"); + +const u8 gItemIcon_OldSeaMap[] = INCBIN_U8("graphics/items/icons/old_sea_map.4bpp.lz"); +const u8 gItemIconPalette_OldSeaMap[] = INCBIN_U8("graphics/items/icon_palettes/old_sea_map.gbapal.lz"); diff --git a/src/data/graphics/mail.h b/src/data/graphics/mail.h new file mode 100644 index 000000000..53497347a --- /dev/null +++ b/src/data/graphics/mail.h @@ -0,0 +1,38 @@ +const u16 gMailPalette_Orange[] = INCBIN_U16("graphics/mail/orange/palette.gbapal"); +const u16 gMailPalette_Harbor[] = INCBIN_U16("graphics/mail/harbor/palette.gbapal"); +const u16 gMailPalette_Glitter[] = INCBIN_U16("graphics/mail/glitter/palette.gbapal"); +const u16 gMailPalette_Mech[] = INCBIN_U16("graphics/mail/mech/palette.gbapal"); +const u16 gMailPalette_Wood[] = INCBIN_U16("graphics/mail/wood/palette.gbapal"); +const u16 gMailPalette_Wave[] = INCBIN_U16("graphics/mail/wave/palette.gbapal"); +const u16 gMailPalette_Bead[] = INCBIN_U16("graphics/mail/bead/palette.gbapal"); +const u16 gMailPalette_Shadow[] = INCBIN_U16("graphics/mail/shadow/palette.gbapal"); +const u16 gMailPalette_Tropic[] = INCBIN_U16("graphics/mail/tropic/palette.gbapal"); +const u16 gMailPalette_Dream[] = INCBIN_U16("graphics/mail/dream/palette.gbapal"); +const u16 gMailPalette_Fab[] = INCBIN_U16("graphics/mail/fab/palette.gbapal"); +const u16 gMailPalette_Retro[] = INCBIN_U16("graphics/mail/retro/palette.gbapal"); + +const u8 gMailTiles_Orange[] = INCBIN_U8("graphics/mail/orange/tiles.4bpp.lz"); +const u8 gMailTiles_Harbor[] = INCBIN_U8("graphics/mail/harbor/tiles.4bpp.lz"); +const u8 gMailTiles_Glitter[] = INCBIN_U8("graphics/mail/glitter/tiles.4bpp.lz"); +const u8 gMailTiles_Mech[] = INCBIN_U8("graphics/mail/mech/tiles.4bpp.lz"); +const u8 gMailTiles_Wood[] = INCBIN_U8("graphics/mail/wood/tiles.4bpp.lz"); +const u8 gMailTiles_Wave[] = INCBIN_U8("graphics/mail/wave/tiles.4bpp.lz"); +const u8 gMailTiles_Bead[] = INCBIN_U8("graphics/mail/bead/tiles.4bpp.lz"); +const u8 gMailTiles_Shadow[] = INCBIN_U8("graphics/mail/shadow/tiles.4bpp.lz"); +const u8 gMailTiles_Tropic[] = INCBIN_U8("graphics/mail/tropic/tiles.4bpp.lz"); +const u8 gMailTiles_Dream[] = INCBIN_U8("graphics/mail/dream/tiles.4bpp.lz"); +const u8 gMailTiles_Fab[] = INCBIN_U8("graphics/mail/fab/tiles.4bpp.lz"); +const u8 gMailTiles_Retro[] = INCBIN_U8("graphics/mail/retro/tiles.4bpp.lz"); + +const u16 gMailTilemap_Orange[] = INCBIN_U16("graphics/mail/orange/map.bin.lz"); +const u16 gMailTilemap_Harbor[] = INCBIN_U16("graphics/mail/harbor/map.bin.lz"); +const u16 gMailTilemap_Glitter[] = INCBIN_U16("graphics/mail/glitter/map.bin.lz"); +const u16 gMailTilemap_Mech[] = INCBIN_U16("graphics/mail/mech/map.bin.lz"); +const u16 gMailTilemap_Wood[] = INCBIN_U16("graphics/mail/wood/map.bin.lz"); +const u16 gMailTilemap_Wave[] = INCBIN_U16("graphics/mail/wave/map.bin.lz"); +const u16 gMailTilemap_Bead[] = INCBIN_U16("graphics/mail/bead/map.bin.lz"); +const u16 gMailTilemap_Shadow[] = INCBIN_U16("graphics/mail/shadow/map.bin.lz"); +const u16 gMailTilemap_Tropic[] = INCBIN_U16("graphics/mail/tropic/map.bin.lz"); +const u16 gMailTilemap_Dream[] = INCBIN_U16("graphics/mail/dream/map.bin.lz"); +const u16 gMailTilemap_Fab[] = INCBIN_U16("graphics/mail/fab/map.bin.lz"); +const u16 gMailTilemap_Retro[] = INCBIN_U16("graphics/mail/retro/map.bin.lz"); diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h new file mode 100644 index 000000000..2c0345f59 --- /dev/null +++ b/src/data/graphics/pokemon.h @@ -0,0 +1,2823 @@ +const u8 gMonStillFrontPic_Bulbasaur[] = INCBIN_U8("graphics/pokemon/front_pics/bulbasaur_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Bulbasaur[] = INCBIN_U8("graphics/pokemon/palettes/bulbasaur_palette.gbapal.lz"); +const u8 gMonBackPic_Bulbasaur[] = INCBIN_U8("graphics/pokemon/back_pics/bulbasaur_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Bulbasaur[] = INCBIN_U8("graphics/pokemon/palettes/bulbasaur_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Bulbasaur[] = INCBIN_U8("graphics/pokemon/icons/bulbasaur_icon.4bpp"); +const u8 gMonFootprint_Bulbasaur[] = INCBIN_U8("graphics/pokemon/footprints/bulbasaur_footprint.1bpp"); + +const u8 gMonStillFrontPic_Ivysaur[] = INCBIN_U8("graphics/pokemon/front_pics/ivysaur_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Ivysaur[] = INCBIN_U8("graphics/pokemon/palettes/ivysaur_palette.gbapal.lz"); +const u8 gMonBackPic_Ivysaur[] = INCBIN_U8("graphics/pokemon/back_pics/ivysaur_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Ivysaur[] = INCBIN_U8("graphics/pokemon/palettes/ivysaur_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Ivysaur[] = INCBIN_U8("graphics/pokemon/icons/ivysaur_icon.4bpp"); +const u8 gMonFootprint_Ivysaur[] = INCBIN_U8("graphics/pokemon/footprints/ivysaur_footprint.1bpp"); + +const u8 gMonStillFrontPic_Venusaur[] = INCBIN_U8("graphics/pokemon/front_pics/venusaur_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Venusaur[] = INCBIN_U8("graphics/pokemon/palettes/venusaur_palette.gbapal.lz"); +const u8 gMonBackPic_Venusaur[] = INCBIN_U8("graphics/pokemon/back_pics/venusaur_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Venusaur[] = INCBIN_U8("graphics/pokemon/palettes/venusaur_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Venusaur[] = INCBIN_U8("graphics/pokemon/icons/venusaur_icon.4bpp"); +const u8 gMonFootprint_Venusaur[] = INCBIN_U8("graphics/pokemon/footprints/venusaur_footprint.1bpp"); + +const u8 gMonStillFrontPic_Charmander[] = INCBIN_U8("graphics/pokemon/front_pics/charmander_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Charmander[] = INCBIN_U8("graphics/pokemon/palettes/charmander_palette.gbapal.lz"); +const u8 gMonBackPic_Charmander[] = INCBIN_U8("graphics/pokemon/back_pics/charmander_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Charmander[] = INCBIN_U8("graphics/pokemon/palettes/charmander_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Charmander[] = INCBIN_U8("graphics/pokemon/icons/charmander_icon.4bpp"); +const u8 gMonFootprint_Charmander[] = INCBIN_U8("graphics/pokemon/footprints/charmander_footprint.1bpp"); + +const u8 gMonStillFrontPic_Charmeleon[] = INCBIN_U8("graphics/pokemon/front_pics/charmeleon_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Charmeleon[] = INCBIN_U8("graphics/pokemon/palettes/charmeleon_palette.gbapal.lz"); +const u8 gMonBackPic_Charmeleon[] = INCBIN_U8("graphics/pokemon/back_pics/charmeleon_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Charmeleon[] = INCBIN_U8("graphics/pokemon/palettes/charmeleon_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Charmeleon[] = INCBIN_U8("graphics/pokemon/icons/charmeleon_icon.4bpp"); +const u8 gMonFootprint_Charmeleon[] = INCBIN_U8("graphics/pokemon/footprints/charmeleon_footprint.1bpp"); + +const u8 gMonStillFrontPic_Charizard[] = INCBIN_U8("graphics/pokemon/front_pics/charizard_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Charizard[] = INCBIN_U8("graphics/pokemon/palettes/charizard_palette.gbapal.lz"); +const u8 gMonBackPic_Charizard[] = INCBIN_U8("graphics/pokemon/back_pics/charizard_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Charizard[] = INCBIN_U8("graphics/pokemon/palettes/charizard_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Charizard[] = INCBIN_U8("graphics/pokemon/icons/charizard_icon.4bpp"); +const u8 gMonFootprint_Charizard[] = INCBIN_U8("graphics/pokemon/footprints/charizard_footprint.1bpp"); + +const u8 gMonStillFrontPic_Squirtle[] = INCBIN_U8("graphics/pokemon/front_pics/squirtle_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Squirtle[] = INCBIN_U8("graphics/pokemon/palettes/squirtle_palette.gbapal.lz"); +const u8 gMonBackPic_Squirtle[] = INCBIN_U8("graphics/pokemon/back_pics/squirtle_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Squirtle[] = INCBIN_U8("graphics/pokemon/palettes/squirtle_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Squirtle[] = INCBIN_U8("graphics/pokemon/icons/squirtle_icon.4bpp"); +const u8 gMonFootprint_Squirtle[] = INCBIN_U8("graphics/pokemon/footprints/squirtle_footprint.1bpp"); + +const u8 gMonStillFrontPic_Wartortle[] = INCBIN_U8("graphics/pokemon/front_pics/wartortle_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Wartortle[] = INCBIN_U8("graphics/pokemon/palettes/wartortle_palette.gbapal.lz"); +const u8 gMonBackPic_Wartortle[] = INCBIN_U8("graphics/pokemon/back_pics/wartortle_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Wartortle[] = INCBIN_U8("graphics/pokemon/palettes/wartortle_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Wartortle[] = INCBIN_U8("graphics/pokemon/icons/wartortle_icon.4bpp"); +const u8 gMonFootprint_Wartortle[] = INCBIN_U8("graphics/pokemon/footprints/wartortle_footprint.1bpp"); + +const u8 gMonStillFrontPic_Blastoise[] = INCBIN_U8("graphics/pokemon/front_pics/blastoise_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Blastoise[] = INCBIN_U8("graphics/pokemon/palettes/blastoise_palette.gbapal.lz"); +const u8 gMonBackPic_Blastoise[] = INCBIN_U8("graphics/pokemon/back_pics/blastoise_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Blastoise[] = INCBIN_U8("graphics/pokemon/palettes/blastoise_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Blastoise[] = INCBIN_U8("graphics/pokemon/icons/blastoise_icon.4bpp"); +const u8 gMonFootprint_Blastoise[] = INCBIN_U8("graphics/pokemon/footprints/blastoise_footprint.1bpp"); + +const u8 gMonStillFrontPic_Caterpie[] = INCBIN_U8("graphics/pokemon/front_pics/caterpie_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Caterpie[] = INCBIN_U8("graphics/pokemon/palettes/caterpie_palette.gbapal.lz"); +const u8 gMonBackPic_Caterpie[] = INCBIN_U8("graphics/pokemon/back_pics/caterpie_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Caterpie[] = INCBIN_U8("graphics/pokemon/palettes/caterpie_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Caterpie[] = INCBIN_U8("graphics/pokemon/icons/caterpie_icon.4bpp"); +const u8 gMonFootprint_Caterpie[] = INCBIN_U8("graphics/pokemon/footprints/caterpie_footprint.1bpp"); + +const u8 gMonStillFrontPic_Metapod[] = INCBIN_U8("graphics/pokemon/front_pics/metapod_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Metapod[] = INCBIN_U8("graphics/pokemon/palettes/metapod_palette.gbapal.lz"); +const u8 gMonBackPic_Metapod[] = INCBIN_U8("graphics/pokemon/back_pics/metapod_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Metapod[] = INCBIN_U8("graphics/pokemon/palettes/metapod_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Metapod[] = INCBIN_U8( "graphics/pokemon/icons/metapod_icon.4bpp"); +const u8 gMonFootprint_Metapod[] = INCBIN_U8("graphics/pokemon/footprints/metapod_footprint.1bpp"); + +const u8 gMonStillFrontPic_Butterfree[] = INCBIN_U8("graphics/pokemon/front_pics/butterfree_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Butterfree[] = INCBIN_U8("graphics/pokemon/palettes/butterfree_palette.gbapal.lz"); +const u8 gMonBackPic_Butterfree[] = INCBIN_U8("graphics/pokemon/back_pics/butterfree_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Butterfree[] = INCBIN_U8("graphics/pokemon/palettes/butterfree_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Butterfree[] = INCBIN_U8("graphics/pokemon/icons/butterfree_icon.4bpp"); +const u8 gMonFootprint_Butterfree[] = INCBIN_U8("graphics/pokemon/footprints/butterfree_footprint.1bpp"); + +const u8 gMonStillFrontPic_Weedle[] = INCBIN_U8("graphics/pokemon/front_pics/weedle_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Weedle[] = INCBIN_U8("graphics/pokemon/palettes/weedle_palette.gbapal.lz"); +const u8 gMonBackPic_Weedle[] = INCBIN_U8("graphics/pokemon/back_pics/weedle_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Weedle[] = INCBIN_U8("graphics/pokemon/palettes/weedle_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Weedle[] = INCBIN_U8("graphics/pokemon/icons/weedle_icon.4bpp"); +const u8 gMonFootprint_Weedle[] = INCBIN_U8("graphics/pokemon/footprints/weedle_footprint.1bpp"); + +const u8 gMonStillFrontPic_Kakuna[] = INCBIN_U8("graphics/pokemon/front_pics/kakuna_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Kakuna[] = INCBIN_U8("graphics/pokemon/palettes/kakuna_palette.gbapal.lz"); +const u8 gMonBackPic_Kakuna[] = INCBIN_U8("graphics/pokemon/back_pics/kakuna_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Kakuna[] = INCBIN_U8("graphics/pokemon/palettes/kakuna_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Kakuna[] = INCBIN_U8("graphics/pokemon/icons/kakuna_icon.4bpp"); +const u8 gMonFootprint_Kakuna[] = INCBIN_U8("graphics/pokemon/footprints/kakuna_footprint.1bpp"); + +const u8 gMonStillFrontPic_Beedrill[] = INCBIN_U8("graphics/pokemon/front_pics/beedrill_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Beedrill[] = INCBIN_U8("graphics/pokemon/palettes/beedrill_palette.gbapal.lz"); +const u8 gMonBackPic_Beedrill[] = INCBIN_U8("graphics/pokemon/back_pics/beedrill_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Beedrill[] = INCBIN_U8("graphics/pokemon/palettes/beedrill_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Beedrill[] = INCBIN_U8("graphics/pokemon/icons/beedrill_icon.4bpp"); +const u8 gMonFootprint_Beedrill[] = INCBIN_U8("graphics/pokemon/footprints/beedrill_footprint.1bpp"); + +const u8 gMonStillFrontPic_Pidgey[] = INCBIN_U8("graphics/pokemon/front_pics/pidgey_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Pidgey[] = INCBIN_U8("graphics/pokemon/palettes/pidgey_palette.gbapal.lz"); +const u8 gMonBackPic_Pidgey[] = INCBIN_U8("graphics/pokemon/back_pics/pidgey_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Pidgey[] = INCBIN_U8("graphics/pokemon/palettes/pidgey_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Pidgey[] = INCBIN_U8("graphics/pokemon/icons/pidgey_icon.4bpp"); +const u8 gMonFootprint_Pidgey[] = INCBIN_U8("graphics/pokemon/footprints/pidgey_footprint.1bpp"); + +const u8 gMonStillFrontPic_Pidgeotto[] = INCBIN_U8("graphics/pokemon/front_pics/pidgeotto_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Pidgeotto[] = INCBIN_U8("graphics/pokemon/palettes/pidgeotto_palette.gbapal.lz"); +const u8 gMonBackPic_Pidgeotto[] = INCBIN_U8("graphics/pokemon/back_pics/pidgeotto_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Pidgeotto[] = INCBIN_U8("graphics/pokemon/palettes/pidgeotto_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Pidgeotto[] = INCBIN_U8("graphics/pokemon/icons/pidgeotto_icon.4bpp"); +const u8 gMonFootprint_Pidgeotto[] = INCBIN_U8("graphics/pokemon/footprints/pidgeotto_footprint.1bpp"); + +const u8 gMonStillFrontPic_Pidgeot[] = INCBIN_U8("graphics/pokemon/front_pics/pidgeot_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Pidgeot[] = INCBIN_U8("graphics/pokemon/palettes/pidgeot_palette.gbapal.lz"); +const u8 gMonBackPic_Pidgeot[] = INCBIN_U8("graphics/pokemon/back_pics/pidgeot_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Pidgeot[] = INCBIN_U8("graphics/pokemon/palettes/pidgeot_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Pidgeot[] = INCBIN_U8("graphics/pokemon/icons/pidgeot_icon.4bpp"); +const u8 gMonFootprint_Pidgeot[] = INCBIN_U8("graphics/pokemon/footprints/pidgeot_footprint.1bpp"); + +const u8 gMonStillFrontPic_Rattata[] = INCBIN_U8("graphics/pokemon/front_pics/rattata_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Rattata[] = INCBIN_U8("graphics/pokemon/palettes/rattata_palette.gbapal.lz"); +const u8 gMonBackPic_Rattata[] = INCBIN_U8("graphics/pokemon/back_pics/rattata_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Rattata[] = INCBIN_U8("graphics/pokemon/palettes/rattata_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Rattata[] = INCBIN_U8("graphics/pokemon/icons/rattata_icon.4bpp"); +const u8 gMonFootprint_Rattata[] = INCBIN_U8("graphics/pokemon/footprints/rattata_footprint.1bpp"); + +const u8 gMonStillFrontPic_Raticate[] = INCBIN_U8("graphics/pokemon/front_pics/raticate_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Raticate[] = INCBIN_U8("graphics/pokemon/palettes/raticate_palette.gbapal.lz"); +const u8 gMonBackPic_Raticate[] = INCBIN_U8("graphics/pokemon/back_pics/raticate_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Raticate[] = INCBIN_U8("graphics/pokemon/palettes/raticate_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Raticate[] = INCBIN_U8("graphics/pokemon/icons/raticate_icon.4bpp"); +const u8 gMonFootprint_Raticate[] = INCBIN_U8("graphics/pokemon/footprints/raticate_footprint.1bpp"); + +const u8 gMonStillFrontPic_Spearow[] = INCBIN_U8("graphics/pokemon/front_pics/spearow_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Spearow[] = INCBIN_U8("graphics/pokemon/palettes/spearow_palette.gbapal.lz"); +const u8 gMonBackPic_Spearow[] = INCBIN_U8("graphics/pokemon/back_pics/spearow_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Spearow[] = INCBIN_U8("graphics/pokemon/palettes/spearow_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Spearow[] = INCBIN_U8("graphics/pokemon/icons/spearow_icon.4bpp"); +const u8 gMonFootprint_Spearow[] = INCBIN_U8("graphics/pokemon/footprints/spearow_footprint.1bpp"); + +const u8 gMonStillFrontPic_Fearow[] = INCBIN_U8("graphics/pokemon/front_pics/fearow_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Fearow[] = INCBIN_U8("graphics/pokemon/palettes/fearow_palette.gbapal.lz"); +const u8 gMonBackPic_Fearow[] = INCBIN_U8("graphics/pokemon/back_pics/fearow_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Fearow[] = INCBIN_U8("graphics/pokemon/palettes/fearow_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Fearow[] = INCBIN_U8("graphics/pokemon/icons/fearow_icon.4bpp"); +const u8 gMonFootprint_Fearow[] = INCBIN_U8("graphics/pokemon/footprints/fearow_footprint.1bpp"); + +const u8 gMonStillFrontPic_Ekans[] = INCBIN_U8("graphics/pokemon/front_pics/ekans_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Ekans[] = INCBIN_U8("graphics/pokemon/palettes/ekans_palette.gbapal.lz"); +const u8 gMonBackPic_Ekans[] = INCBIN_U8("graphics/pokemon/back_pics/ekans_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Ekans[] = INCBIN_U8("graphics/pokemon/palettes/ekans_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Ekans[] = INCBIN_U8("graphics/pokemon/icons/ekans_icon.4bpp"); +const u8 gMonFootprint_Ekans[] = INCBIN_U8("graphics/pokemon/footprints/ekans_footprint.1bpp"); + +const u8 gMonStillFrontPic_Arbok[] = INCBIN_U8("graphics/pokemon/front_pics/arbok_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Arbok[] = INCBIN_U8("graphics/pokemon/palettes/arbok_palette.gbapal.lz"); +const u8 gMonBackPic_Arbok[] = INCBIN_U8("graphics/pokemon/back_pics/arbok_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Arbok[] = INCBIN_U8("graphics/pokemon/palettes/arbok_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Arbok[] = INCBIN_U8("graphics/pokemon/icons/arbok_icon.4bpp"); +const u8 gMonFootprint_Arbok[] = INCBIN_U8("graphics/pokemon/footprints/arbok_footprint.1bpp"); + +const u8 gMonStillFrontPic_Pikachu[] = INCBIN_U8("graphics/pokemon/front_pics/pikachu_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Pikachu[] = INCBIN_U8("graphics/pokemon/palettes/pikachu_palette.gbapal.lz"); +const u8 gMonBackPic_Pikachu[] = INCBIN_U8("graphics/pokemon/back_pics/pikachu_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Pikachu[] = INCBIN_U8("graphics/pokemon/palettes/pikachu_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Pikachu[] = INCBIN_U8("graphics/pokemon/icons/pikachu_icon.4bpp"); +const u8 gMonFootprint_Pikachu[] = INCBIN_U8("graphics/pokemon/footprints/pikachu_footprint.1bpp"); + +const u8 gMonStillFrontPic_Raichu[] = INCBIN_U8("graphics/pokemon/front_pics/raichu_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Raichu[] = INCBIN_U8("graphics/pokemon/palettes/raichu_palette.gbapal.lz"); +const u8 gMonBackPic_Raichu[] = INCBIN_U8("graphics/pokemon/back_pics/raichu_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Raichu[] = INCBIN_U8("graphics/pokemon/palettes/raichu_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Raichu[] = INCBIN_U8("graphics/pokemon/icons/raichu_icon.4bpp"); +const u8 gMonFootprint_Raichu[] = INCBIN_U8("graphics/pokemon/footprints/raichu_footprint.1bpp"); + +const u8 gMonStillFrontPic_Sandshrew[] = INCBIN_U8("graphics/pokemon/front_pics/sandshrew_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Sandshrew[] = INCBIN_U8("graphics/pokemon/palettes/sandshrew_palette.gbapal.lz"); +const u8 gMonBackPic_Sandshrew[] = INCBIN_U8("graphics/pokemon/back_pics/sandshrew_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Sandshrew[] = INCBIN_U8("graphics/pokemon/palettes/sandshrew_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Sandshrew[] = INCBIN_U8("graphics/pokemon/icons/sandshrew_icon.4bpp"); +const u8 gMonFootprint_Sandshrew[] = INCBIN_U8("graphics/pokemon/footprints/sandshrew_footprint.1bpp"); + +const u8 gMonStillFrontPic_Sandslash[] = INCBIN_U8("graphics/pokemon/front_pics/sandslash_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Sandslash[] = INCBIN_U8("graphics/pokemon/palettes/sandslash_palette.gbapal.lz"); +const u8 gMonBackPic_Sandslash[] = INCBIN_U8("graphics/pokemon/back_pics/sandslash_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Sandslash[] = INCBIN_U8("graphics/pokemon/palettes/sandslash_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Sandslash[] = INCBIN_U8("graphics/pokemon/icons/sandslash_icon.4bpp"); +const u8 gMonFootprint_Sandslash[] = INCBIN_U8("graphics/pokemon/footprints/sandslash_footprint.1bpp"); + +const u8 gMonStillFrontPic_NidoranF[] = INCBIN_U8("graphics/pokemon/front_pics/nidoran_f_still_front_pic.4bpp.lz"); +const u8 gMonPalette_NidoranF[] = INCBIN_U8("graphics/pokemon/palettes/nidoran_f_palette.gbapal.lz"); +const u8 gMonBackPic_NidoranF[] = INCBIN_U8("graphics/pokemon/back_pics/nidoran_f_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_NidoranF[] = INCBIN_U8("graphics/pokemon/palettes/nidoran_f_shiny_palette.gbapal.lz"); +const u8 gMonIcon_NidoranF[] = INCBIN_U8("graphics/pokemon/icons/nidoran_f_icon.4bpp"); +const u8 gMonFootprint_NidoranF[] = INCBIN_U8("graphics/pokemon/footprints/nidoran_f_footprint.1bpp"); + +const u8 gMonStillFrontPic_Nidorina[] = INCBIN_U8("graphics/pokemon/front_pics/nidorina_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Nidorina[] = INCBIN_U8("graphics/pokemon/palettes/nidorina_palette.gbapal.lz"); +const u8 gMonBackPic_Nidorina[] = INCBIN_U8("graphics/pokemon/back_pics/nidorina_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Nidorina[] = INCBIN_U8("graphics/pokemon/palettes/nidorina_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Nidorina[] = INCBIN_U8("graphics/pokemon/icons/nidorina_icon.4bpp"); +const u8 gMonFootprint_Nidorina[] = INCBIN_U8("graphics/pokemon/footprints/nidorina_footprint.1bpp"); + +const u8 gMonStillFrontPic_Nidoqueen[] = INCBIN_U8("graphics/pokemon/front_pics/nidoqueen_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Nidoqueen[] = INCBIN_U8("graphics/pokemon/palettes/nidoqueen_palette.gbapal.lz"); +const u8 gMonBackPic_Nidoqueen[] = INCBIN_U8("graphics/pokemon/back_pics/nidoqueen_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Nidoqueen[] = INCBIN_U8("graphics/pokemon/palettes/nidoqueen_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Nidoqueen[] = INCBIN_U8("graphics/pokemon/icons/nidoqueen_icon.4bpp"); +const u8 gMonFootprint_Nidoqueen[] = INCBIN_U8("graphics/pokemon/footprints/nidoqueen_footprint.1bpp"); + +const u8 gMonStillFrontPic_NidoranM[] = INCBIN_U8("graphics/pokemon/front_pics/nidoran_m_still_front_pic.4bpp.lz"); +const u8 gMonPalette_NidoranM[] = INCBIN_U8("graphics/pokemon/palettes/nidoran_m_palette.gbapal.lz"); +const u8 gMonBackPic_NidoranM[] = INCBIN_U8("graphics/pokemon/back_pics/nidoran_m_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_NidoranM[] = INCBIN_U8("graphics/pokemon/palettes/nidoran_m_shiny_palette.gbapal.lz"); +const u8 gMonIcon_NidoranM[] = INCBIN_U8("graphics/pokemon/icons/nidoran_m_icon.4bpp"); +const u8 gMonFootprint_NidoranM[] = INCBIN_U8("graphics/pokemon/footprints/nidoran_m_footprint.1bpp"); + +const u8 gMonStillFrontPic_Nidorino[] = INCBIN_U8("graphics/pokemon/front_pics/nidorino_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Nidorino[] = INCBIN_U8("graphics/pokemon/palettes/nidorino_palette.gbapal.lz"); +const u8 gMonBackPic_Nidorino[] = INCBIN_U8("graphics/pokemon/back_pics/nidorino_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Nidorino[] = INCBIN_U8("graphics/pokemon/palettes/nidorino_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Nidorino[] = INCBIN_U8("graphics/pokemon/icons/nidorino_icon.4bpp"); +const u8 gMonFootprint_Nidorino[] = INCBIN_U8("graphics/pokemon/footprints/nidorino_footprint.1bpp"); + +const u8 gMonStillFrontPic_Nidoking[] = INCBIN_U8("graphics/pokemon/front_pics/nidoking_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Nidoking[] = INCBIN_U8("graphics/pokemon/palettes/nidoking_palette.gbapal.lz"); +const u8 gMonBackPic_Nidoking[] = INCBIN_U8("graphics/pokemon/back_pics/nidoking_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Nidoking[] = INCBIN_U8("graphics/pokemon/palettes/nidoking_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Nidoking[] = INCBIN_U8("graphics/pokemon/icons/nidoking_icon.4bpp"); +const u8 gMonFootprint_Nidoking[] = INCBIN_U8("graphics/pokemon/footprints/nidoking_footprint.1bpp"); + +const u8 gMonStillFrontPic_Clefairy[] = INCBIN_U8("graphics/pokemon/front_pics/clefairy_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Clefairy[] = INCBIN_U8("graphics/pokemon/palettes/clefairy_palette.gbapal.lz"); +const u8 gMonBackPic_Clefairy[] = INCBIN_U8("graphics/pokemon/back_pics/clefairy_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Clefairy[] = INCBIN_U8("graphics/pokemon/palettes/clefairy_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Clefairy[] = INCBIN_U8("graphics/pokemon/icons/clefairy_icon.4bpp"); +const u8 gMonFootprint_Clefairy[] = INCBIN_U8("graphics/pokemon/footprints/clefairy_footprint.1bpp"); + +const u8 gMonStillFrontPic_Clefable[] = INCBIN_U8("graphics/pokemon/front_pics/clefable_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Clefable[] = INCBIN_U8("graphics/pokemon/palettes/clefable_palette.gbapal.lz"); +const u8 gMonBackPic_Clefable[] = INCBIN_U8("graphics/pokemon/back_pics/clefable_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Clefable[] = INCBIN_U8("graphics/pokemon/palettes/clefable_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Clefable[] = INCBIN_U8("graphics/pokemon/icons/clefable_icon.4bpp"); +const u8 gMonFootprint_Clefable[] = INCBIN_U8("graphics/pokemon/footprints/clefable_footprint.1bpp"); + +const u8 gMonStillFrontPic_Vulpix[] = INCBIN_U8("graphics/pokemon/front_pics/vulpix_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Vulpix[] = INCBIN_U8("graphics/pokemon/palettes/vulpix_palette.gbapal.lz"); +const u8 gMonBackPic_Vulpix[] = INCBIN_U8("graphics/pokemon/back_pics/vulpix_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Vulpix[] = INCBIN_U8("graphics/pokemon/palettes/vulpix_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Vulpix[] = INCBIN_U8("graphics/pokemon/icons/vulpix_icon.4bpp"); +const u8 gMonFootprint_Vulpix[] = INCBIN_U8("graphics/pokemon/footprints/vulpix_footprint.1bpp"); + +const u8 gMonStillFrontPic_Ninetales[] = INCBIN_U8("graphics/pokemon/front_pics/ninetales_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Ninetales[] = INCBIN_U8("graphics/pokemon/palettes/ninetales_palette.gbapal.lz"); +const u8 gMonBackPic_Ninetales[] = INCBIN_U8("graphics/pokemon/back_pics/ninetales_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Ninetales[] = INCBIN_U8("graphics/pokemon/palettes/ninetales_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Ninetales[] = INCBIN_U8("graphics/pokemon/icons/ninetales_icon.4bpp"); +const u8 gMonFootprint_Ninetales[] = INCBIN_U8("graphics/pokemon/footprints/ninetales_footprint.1bpp"); + +const u8 gMonStillFrontPic_Jigglypuff[] = INCBIN_U8("graphics/pokemon/front_pics/jigglypuff_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Jigglypuff[] = INCBIN_U8("graphics/pokemon/palettes/jigglypuff_palette.gbapal.lz"); +const u8 gMonBackPic_Jigglypuff[] = INCBIN_U8("graphics/pokemon/back_pics/jigglypuff_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Jigglypuff[] = INCBIN_U8("graphics/pokemon/palettes/jigglypuff_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Jigglypuff[] = INCBIN_U8("graphics/pokemon/icons/jigglypuff_icon.4bpp"); +const u8 gMonFootprint_Jigglypuff[] = INCBIN_U8("graphics/pokemon/footprints/jigglypuff_footprint.1bpp"); + +const u8 gMonStillFrontPic_Wigglytuff[] = INCBIN_U8("graphics/pokemon/front_pics/wigglytuff_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Wigglytuff[] = INCBIN_U8("graphics/pokemon/palettes/wigglytuff_palette.gbapal.lz"); +const u8 gMonBackPic_Wigglytuff[] = INCBIN_U8("graphics/pokemon/back_pics/wigglytuff_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Wigglytuff[] = INCBIN_U8("graphics/pokemon/palettes/wigglytuff_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Wigglytuff[] = INCBIN_U8("graphics/pokemon/icons/wigglytuff_icon.4bpp"); +const u8 gMonFootprint_Wigglytuff[] = INCBIN_U8("graphics/pokemon/footprints/wigglytuff_footprint.1bpp"); + +const u8 gMonStillFrontPic_Zubat[] = INCBIN_U8("graphics/pokemon/front_pics/zubat_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Zubat[] = INCBIN_U8("graphics/pokemon/palettes/zubat_palette.gbapal.lz"); +const u8 gMonBackPic_Zubat[] = INCBIN_U8("graphics/pokemon/back_pics/zubat_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Zubat[] = INCBIN_U8("graphics/pokemon/palettes/zubat_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Zubat[] = INCBIN_U8("graphics/pokemon/icons/zubat_icon.4bpp"); +const u8 gMonFootprint_Zubat[] = INCBIN_U8("graphics/pokemon/footprints/zubat_footprint.1bpp"); + +const u8 gMonStillFrontPic_Golbat[] = INCBIN_U8("graphics/pokemon/front_pics/golbat_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Golbat[] = INCBIN_U8("graphics/pokemon/palettes/golbat_palette.gbapal.lz"); +const u8 gMonBackPic_Golbat[] = INCBIN_U8("graphics/pokemon/back_pics/golbat_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Golbat[] = INCBIN_U8("graphics/pokemon/palettes/golbat_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Golbat[] = INCBIN_U8("graphics/pokemon/icons/golbat_icon.4bpp"); +const u8 gMonFootprint_Golbat[] = INCBIN_U8("graphics/pokemon/footprints/golbat_footprint.1bpp"); + +const u8 gMonStillFrontPic_Oddish[] = INCBIN_U8("graphics/pokemon/front_pics/oddish_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Oddish[] = INCBIN_U8("graphics/pokemon/palettes/oddish_palette.gbapal.lz"); +const u8 gMonBackPic_Oddish[] = INCBIN_U8("graphics/pokemon/back_pics/oddish_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Oddish[] = INCBIN_U8("graphics/pokemon/palettes/oddish_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Oddish[] = INCBIN_U8("graphics/pokemon/icons/oddish_icon.4bpp"); +const u8 gMonFootprint_Oddish[] = INCBIN_U8("graphics/pokemon/footprints/oddish_footprint.1bpp"); + +const u8 gMonStillFrontPic_Gloom[] = INCBIN_U8("graphics/pokemon/front_pics/gloom_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Gloom[] = INCBIN_U8("graphics/pokemon/palettes/gloom_palette.gbapal.lz"); +const u8 gMonBackPic_Gloom[] = INCBIN_U8("graphics/pokemon/back_pics/gloom_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Gloom[] = INCBIN_U8("graphics/pokemon/palettes/gloom_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Gloom[] = INCBIN_U8("graphics/pokemon/icons/gloom_icon.4bpp"); +const u8 gMonFootprint_Gloom[] = INCBIN_U8("graphics/pokemon/footprints/gloom_footprint.1bpp"); + +const u8 gMonStillFrontPic_Vileplume[] = INCBIN_U8("graphics/pokemon/front_pics/vileplume_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Vileplume[] = INCBIN_U8("graphics/pokemon/palettes/vileplume_palette.gbapal.lz"); +const u8 gMonBackPic_Vileplume[] = INCBIN_U8("graphics/pokemon/back_pics/vileplume_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Vileplume[] = INCBIN_U8("graphics/pokemon/palettes/vileplume_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Vileplume[] = INCBIN_U8("graphics/pokemon/icons/vileplume_icon.4bpp"); +const u8 gMonFootprint_Vileplume[] = INCBIN_U8("graphics/pokemon/footprints/vileplume_footprint.1bpp"); + +const u8 gMonStillFrontPic_Paras[] = INCBIN_U8("graphics/pokemon/front_pics/paras_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Paras[] = INCBIN_U8("graphics/pokemon/palettes/paras_palette.gbapal.lz"); +const u8 gMonBackPic_Paras[] = INCBIN_U8("graphics/pokemon/back_pics/paras_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Paras[] = INCBIN_U8("graphics/pokemon/palettes/paras_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Paras[] = INCBIN_U8("graphics/pokemon/icons/paras_icon.4bpp"); +const u8 gMonFootprint_Paras[] = INCBIN_U8("graphics/pokemon/footprints/paras_footprint.1bpp"); + +const u8 gMonStillFrontPic_Parasect[] = INCBIN_U8("graphics/pokemon/front_pics/parasect_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Parasect[] = INCBIN_U8("graphics/pokemon/palettes/parasect_palette.gbapal.lz"); +const u8 gMonBackPic_Parasect[] = INCBIN_U8("graphics/pokemon/back_pics/parasect_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Parasect[] = INCBIN_U8("graphics/pokemon/palettes/parasect_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Parasect[] = INCBIN_U8("graphics/pokemon/icons/parasect_icon.4bpp"); +const u8 gMonFootprint_Parasect[] = INCBIN_U8("graphics/pokemon/footprints/parasect_footprint.1bpp"); + +const u8 gMonStillFrontPic_Venonat[] = INCBIN_U8("graphics/pokemon/front_pics/venonat_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Venonat[] = INCBIN_U8("graphics/pokemon/palettes/venonat_palette.gbapal.lz"); +const u8 gMonBackPic_Venonat[] = INCBIN_U8("graphics/pokemon/back_pics/venonat_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Venonat[] = INCBIN_U8("graphics/pokemon/palettes/venonat_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Venonat[] = INCBIN_U8("graphics/pokemon/icons/venonat_icon.4bpp"); +const u8 gMonFootprint_Venonat[] = INCBIN_U8("graphics/pokemon/footprints/venonat_footprint.1bpp"); + +const u8 gMonStillFrontPic_Venomoth[] = INCBIN_U8("graphics/pokemon/front_pics/venomoth_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Venomoth[] = INCBIN_U8("graphics/pokemon/palettes/venomoth_palette.gbapal.lz"); +const u8 gMonBackPic_Venomoth[] = INCBIN_U8("graphics/pokemon/back_pics/venomoth_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Venomoth[] = INCBIN_U8("graphics/pokemon/palettes/venomoth_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Venomoth[] = INCBIN_U8("graphics/pokemon/icons/venomoth_icon.4bpp"); +const u8 gMonFootprint_Venomoth[] = INCBIN_U8("graphics/pokemon/footprints/venomoth_footprint.1bpp"); + +const u8 gMonStillFrontPic_Diglett[] = INCBIN_U8("graphics/pokemon/front_pics/diglett_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Diglett[] = INCBIN_U8("graphics/pokemon/palettes/diglett_palette.gbapal.lz"); +const u8 gMonBackPic_Diglett[] = INCBIN_U8("graphics/pokemon/back_pics/diglett_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Diglett[] = INCBIN_U8("graphics/pokemon/palettes/diglett_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Diglett[] = INCBIN_U8("graphics/pokemon/icons/diglett_icon.4bpp"); +const u8 gMonFootprint_Diglett[] = INCBIN_U8("graphics/pokemon/footprints/diglett_footprint.1bpp"); + +const u8 gMonStillFrontPic_Dugtrio[] = INCBIN_U8("graphics/pokemon/front_pics/dugtrio_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Dugtrio[] = INCBIN_U8("graphics/pokemon/palettes/dugtrio_palette.gbapal.lz"); +const u8 gMonBackPic_Dugtrio[] = INCBIN_U8("graphics/pokemon/back_pics/dugtrio_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Dugtrio[] = INCBIN_U8("graphics/pokemon/palettes/dugtrio_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Dugtrio[] = INCBIN_U8("graphics/pokemon/icons/dugtrio_icon.4bpp"); +const u8 gMonFootprint_Dugtrio[] = INCBIN_U8("graphics/pokemon/footprints/dugtrio_footprint.1bpp"); + +const u8 gMonStillFrontPic_Meowth[] = INCBIN_U8("graphics/pokemon/front_pics/meowth_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Meowth[] = INCBIN_U8("graphics/pokemon/palettes/meowth_palette.gbapal.lz"); +const u8 gMonBackPic_Meowth[] = INCBIN_U8("graphics/pokemon/back_pics/meowth_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Meowth[] = INCBIN_U8("graphics/pokemon/palettes/meowth_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Meowth[] = INCBIN_U8("graphics/pokemon/icons/meowth_icon.4bpp"); +const u8 gMonFootprint_Meowth[] = INCBIN_U8("graphics/pokemon/footprints/meowth_footprint.1bpp"); + +const u8 gMonStillFrontPic_Persian[] = INCBIN_U8("graphics/pokemon/front_pics/persian_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Persian[] = INCBIN_U8("graphics/pokemon/palettes/persian_palette.gbapal.lz"); +const u8 gMonBackPic_Persian[] = INCBIN_U8("graphics/pokemon/back_pics/persian_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Persian[] = INCBIN_U8("graphics/pokemon/palettes/persian_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Persian[] = INCBIN_U8("graphics/pokemon/icons/persian_icon.4bpp"); +const u8 gMonFootprint_Persian[] = INCBIN_U8("graphics/pokemon/footprints/persian_footprint.1bpp"); + +const u8 gMonStillFrontPic_Psyduck[] = INCBIN_U8("graphics/pokemon/front_pics/psyduck_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Psyduck[] = INCBIN_U8("graphics/pokemon/palettes/psyduck_palette.gbapal.lz"); +const u8 gMonBackPic_Psyduck[] = INCBIN_U8("graphics/pokemon/back_pics/psyduck_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Psyduck[] = INCBIN_U8("graphics/pokemon/palettes/psyduck_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Psyduck[] = INCBIN_U8("graphics/pokemon/icons/psyduck_icon.4bpp"); +const u8 gMonFootprint_Psyduck[] = INCBIN_U8("graphics/pokemon/footprints/psyduck_footprint.1bpp"); + +const u8 gMonStillFrontPic_Golduck[] = INCBIN_U8("graphics/pokemon/front_pics/golduck_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Golduck[] = INCBIN_U8("graphics/pokemon/palettes/golduck_palette.gbapal.lz"); +const u8 gMonBackPic_Golduck[] = INCBIN_U8("graphics/pokemon/back_pics/golduck_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Golduck[] = INCBIN_U8("graphics/pokemon/palettes/golduck_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Golduck[] = INCBIN_U8("graphics/pokemon/icons/golduck_icon.4bpp"); +const u8 gMonFootprint_Golduck[] = INCBIN_U8("graphics/pokemon/footprints/golduck_footprint.1bpp"); + +const u8 gMonStillFrontPic_Mankey[] = INCBIN_U8("graphics/pokemon/front_pics/mankey_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Mankey[] = INCBIN_U8("graphics/pokemon/palettes/mankey_palette.gbapal.lz"); +const u8 gMonBackPic_Mankey[] = INCBIN_U8("graphics/pokemon/back_pics/mankey_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Mankey[] = INCBIN_U8("graphics/pokemon/palettes/mankey_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Mankey[] = INCBIN_U8("graphics/pokemon/icons/mankey_icon.4bpp"); +const u8 gMonFootprint_Mankey[] = INCBIN_U8("graphics/pokemon/footprints/mankey_footprint.1bpp"); + +const u8 gMonStillFrontPic_Primeape[] = INCBIN_U8("graphics/pokemon/front_pics/primeape_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Primeape[] = INCBIN_U8("graphics/pokemon/palettes/primeape_palette.gbapal.lz"); +const u8 gMonBackPic_Primeape[] = INCBIN_U8("graphics/pokemon/back_pics/primeape_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Primeape[] = INCBIN_U8("graphics/pokemon/palettes/primeape_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Primeape[] = INCBIN_U8("graphics/pokemon/icons/primeape_icon.4bpp"); +const u8 gMonFootprint_Primeape[] = INCBIN_U8("graphics/pokemon/footprints/primeape_footprint.1bpp"); + +const u8 gMonStillFrontPic_Growlithe[] = INCBIN_U8("graphics/pokemon/front_pics/growlithe_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Growlithe[] = INCBIN_U8("graphics/pokemon/palettes/growlithe_palette.gbapal.lz"); +const u8 gMonBackPic_Growlithe[] = INCBIN_U8("graphics/pokemon/back_pics/growlithe_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Growlithe[] = INCBIN_U8("graphics/pokemon/palettes/growlithe_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Growlithe[] = INCBIN_U8("graphics/pokemon/icons/growlithe_icon.4bpp"); +const u8 gMonFootprint_Growlithe[] = INCBIN_U8("graphics/pokemon/footprints/growlithe_footprint.1bpp"); + +const u8 gMonStillFrontPic_Arcanine[] = INCBIN_U8("graphics/pokemon/front_pics/arcanine_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Arcanine[] = INCBIN_U8("graphics/pokemon/palettes/arcanine_palette.gbapal.lz"); +const u8 gMonBackPic_Arcanine[] = INCBIN_U8("graphics/pokemon/back_pics/arcanine_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Arcanine[] = INCBIN_U8("graphics/pokemon/palettes/arcanine_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Arcanine[] = INCBIN_U8("graphics/pokemon/icons/arcanine_icon.4bpp"); +const u8 gMonFootprint_Arcanine[] = INCBIN_U8("graphics/pokemon/footprints/arcanine_footprint.1bpp"); + +const u8 gMonStillFrontPic_Poliwag[] = INCBIN_U8("graphics/pokemon/front_pics/poliwag_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Poliwag[] = INCBIN_U8("graphics/pokemon/palettes/poliwag_palette.gbapal.lz"); +const u8 gMonBackPic_Poliwag[] = INCBIN_U8("graphics/pokemon/back_pics/poliwag_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Poliwag[] = INCBIN_U8("graphics/pokemon/palettes/poliwag_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Poliwag[] = INCBIN_U8("graphics/pokemon/icons/poliwag_icon.4bpp"); +const u8 gMonFootprint_Poliwag[] = INCBIN_U8("graphics/pokemon/footprints/poliwag_footprint.1bpp"); + +const u8 gMonStillFrontPic_Poliwhirl[] = INCBIN_U8("graphics/pokemon/front_pics/poliwhirl_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Poliwhirl[] = INCBIN_U8("graphics/pokemon/palettes/poliwhirl_palette.gbapal.lz"); +const u8 gMonBackPic_Poliwhirl[] = INCBIN_U8("graphics/pokemon/back_pics/poliwhirl_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Poliwhirl[] = INCBIN_U8("graphics/pokemon/palettes/poliwhirl_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Poliwhirl[] = INCBIN_U8("graphics/pokemon/icons/poliwhirl_icon.4bpp"); +const u8 gMonFootprint_Poliwhirl[] = INCBIN_U8("graphics/pokemon/footprints/poliwhirl_footprint.1bpp"); + +const u8 gMonStillFrontPic_Poliwrath[] = INCBIN_U8("graphics/pokemon/front_pics/poliwrath_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Poliwrath[] = INCBIN_U8("graphics/pokemon/palettes/poliwrath_palette.gbapal.lz"); +const u8 gMonBackPic_Poliwrath[] = INCBIN_U8("graphics/pokemon/back_pics/poliwrath_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Poliwrath[] = INCBIN_U8("graphics/pokemon/palettes/poliwrath_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Poliwrath[] = INCBIN_U8("graphics/pokemon/icons/poliwrath_icon.4bpp"); +const u8 gMonFootprint_Poliwrath[] = INCBIN_U8("graphics/pokemon/footprints/poliwrath_footprint.1bpp"); + +const u8 gMonStillFrontPic_Abra[] = INCBIN_U8("graphics/pokemon/front_pics/abra_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Abra[] = INCBIN_U8("graphics/pokemon/palettes/abra_palette.gbapal.lz"); +const u8 gMonBackPic_Abra[] = INCBIN_U8("graphics/pokemon/back_pics/abra_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Abra[] = INCBIN_U8("graphics/pokemon/palettes/abra_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Abra[] = INCBIN_U8("graphics/pokemon/icons/abra_icon.4bpp"); +const u8 gMonFootprint_Abra[] = INCBIN_U8("graphics/pokemon/footprints/abra_footprint.1bpp"); + +const u8 gMonStillFrontPic_Kadabra[] = INCBIN_U8("graphics/pokemon/front_pics/kadabra_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Kadabra[] = INCBIN_U8("graphics/pokemon/palettes/kadabra_palette.gbapal.lz"); +const u8 gMonBackPic_Kadabra[] = INCBIN_U8("graphics/pokemon/back_pics/kadabra_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Kadabra[] = INCBIN_U8("graphics/pokemon/palettes/kadabra_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Kadabra[] = INCBIN_U8("graphics/pokemon/icons/kadabra_icon.4bpp"); +const u8 gMonFootprint_Kadabra[] = INCBIN_U8("graphics/pokemon/footprints/kadabra_footprint.1bpp"); + +const u8 gMonStillFrontPic_Alakazam[] = INCBIN_U8("graphics/pokemon/front_pics/alakazam_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Alakazam[] = INCBIN_U8("graphics/pokemon/palettes/alakazam_palette.gbapal.lz"); +const u8 gMonBackPic_Alakazam[] = INCBIN_U8("graphics/pokemon/back_pics/alakazam_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Alakazam[] = INCBIN_U8("graphics/pokemon/palettes/alakazam_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Alakazam[] = INCBIN_U8("graphics/pokemon/icons/alakazam_icon.4bpp"); +const u8 gMonFootprint_Alakazam[] = INCBIN_U8("graphics/pokemon/footprints/alakazam_footprint.1bpp"); + +const u8 gMonStillFrontPic_Machop[] = INCBIN_U8("graphics/pokemon/front_pics/machop_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Machop[] = INCBIN_U8("graphics/pokemon/palettes/machop_palette.gbapal.lz"); +const u8 gMonBackPic_Machop[] = INCBIN_U8("graphics/pokemon/back_pics/machop_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Machop[] = INCBIN_U8("graphics/pokemon/palettes/machop_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Machop[] = INCBIN_U8("graphics/pokemon/icons/machop_icon.4bpp"); +const u8 gMonFootprint_Machop[] = INCBIN_U8("graphics/pokemon/footprints/machop_footprint.1bpp"); + +const u8 gMonStillFrontPic_Machoke[] = INCBIN_U8("graphics/pokemon/front_pics/machoke_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Machoke[] = INCBIN_U8("graphics/pokemon/palettes/machoke_palette.gbapal.lz"); +const u8 gMonBackPic_Machoke[] = INCBIN_U8("graphics/pokemon/back_pics/machoke_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Machoke[] = INCBIN_U8("graphics/pokemon/palettes/machoke_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Machoke[] = INCBIN_U8("graphics/pokemon/icons/machoke_icon.4bpp"); +const u8 gMonFootprint_Machoke[] = INCBIN_U8("graphics/pokemon/footprints/machoke_footprint.1bpp"); + +const u8 gMonStillFrontPic_Machamp[] = INCBIN_U8("graphics/pokemon/front_pics/machamp_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Machamp[] = INCBIN_U8("graphics/pokemon/palettes/machamp_palette.gbapal.lz"); +const u8 gMonBackPic_Machamp[] = INCBIN_U8("graphics/pokemon/back_pics/machamp_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Machamp[] = INCBIN_U8("graphics/pokemon/palettes/machamp_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Machamp[] = INCBIN_U8("graphics/pokemon/icons/machamp_icon.4bpp"); +const u8 gMonFootprint_Machamp[] = INCBIN_U8("graphics/pokemon/footprints/machamp_footprint.1bpp"); + +const u8 gMonStillFrontPic_Bellsprout[] = INCBIN_U8("graphics/pokemon/front_pics/bellsprout_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Bellsprout[] = INCBIN_U8("graphics/pokemon/palettes/bellsprout_palette.gbapal.lz"); +const u8 gMonBackPic_Bellsprout[] = INCBIN_U8("graphics/pokemon/back_pics/bellsprout_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Bellsprout[] = INCBIN_U8("graphics/pokemon/palettes/bellsprout_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Bellsprout[] = INCBIN_U8("graphics/pokemon/icons/bellsprout_icon.4bpp"); +const u8 gMonFootprint_Bellsprout[] = INCBIN_U8("graphics/pokemon/footprints/bellsprout_footprint.1bpp"); + +const u8 gMonStillFrontPic_Weepinbell[] = INCBIN_U8("graphics/pokemon/front_pics/weepinbell_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Weepinbell[] = INCBIN_U8("graphics/pokemon/palettes/weepinbell_palette.gbapal.lz"); +const u8 gMonBackPic_Weepinbell[] = INCBIN_U8("graphics/pokemon/back_pics/weepinbell_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Weepinbell[] = INCBIN_U8("graphics/pokemon/palettes/weepinbell_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Weepinbell[] = INCBIN_U8("graphics/pokemon/icons/weepinbell_icon.4bpp"); +const u8 gMonFootprint_Weepinbell[] = INCBIN_U8("graphics/pokemon/footprints/weepinbell_footprint.1bpp"); + +const u8 gMonStillFrontPic_Victreebel[] = INCBIN_U8("graphics/pokemon/front_pics/victreebel_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Victreebel[] = INCBIN_U8("graphics/pokemon/palettes/victreebel_palette.gbapal.lz"); +const u8 gMonBackPic_Victreebel[] = INCBIN_U8("graphics/pokemon/back_pics/victreebel_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Victreebel[] = INCBIN_U8("graphics/pokemon/palettes/victreebel_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Victreebel[] = INCBIN_U8("graphics/pokemon/icons/victreebel_icon.4bpp"); +const u8 gMonFootprint_Victreebel[] = INCBIN_U8("graphics/pokemon/footprints/victreebel_footprint.1bpp"); + +const u8 gMonStillFrontPic_Tentacool[] = INCBIN_U8("graphics/pokemon/front_pics/tentacool_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Tentacool[] = INCBIN_U8("graphics/pokemon/palettes/tentacool_palette.gbapal.lz"); +const u8 gMonBackPic_Tentacool[] = INCBIN_U8("graphics/pokemon/back_pics/tentacool_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Tentacool[] = INCBIN_U8("graphics/pokemon/palettes/tentacool_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Tentacool[] = INCBIN_U8("graphics/pokemon/icons/tentacool_icon.4bpp"); +const u8 gMonFootprint_Tentacool[] = INCBIN_U8("graphics/pokemon/footprints/tentacool_footprint.1bpp"); + +const u8 gMonStillFrontPic_Tentacruel[] = INCBIN_U8("graphics/pokemon/front_pics/tentacruel_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Tentacruel[] = INCBIN_U8("graphics/pokemon/palettes/tentacruel_palette.gbapal.lz"); +const u8 gMonBackPic_Tentacruel[] = INCBIN_U8("graphics/pokemon/back_pics/tentacruel_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Tentacruel[] = INCBIN_U8("graphics/pokemon/palettes/tentacruel_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Tentacruel[] = INCBIN_U8("graphics/pokemon/icons/tentacruel_icon.4bpp"); +const u8 gMonFootprint_Tentacruel[] = INCBIN_U8("graphics/pokemon/footprints/tentacruel_footprint.1bpp"); + +const u8 gMonStillFrontPic_Geodude[] = INCBIN_U8("graphics/pokemon/front_pics/geodude_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Geodude[] = INCBIN_U8("graphics/pokemon/palettes/geodude_palette.gbapal.lz"); +const u8 gMonBackPic_Geodude[] = INCBIN_U8("graphics/pokemon/back_pics/geodude_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Geodude[] = INCBIN_U8("graphics/pokemon/palettes/geodude_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Geodude[] = INCBIN_U8("graphics/pokemon/icons/geodude_icon.4bpp"); +const u8 gMonFootprint_Geodude[] = INCBIN_U8("graphics/pokemon/footprints/geodude_footprint.1bpp"); + +const u8 gMonStillFrontPic_Graveler[] = INCBIN_U8("graphics/pokemon/front_pics/graveler_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Graveler[] = INCBIN_U8("graphics/pokemon/palettes/graveler_palette.gbapal.lz"); +const u8 gMonBackPic_Graveler[] = INCBIN_U8("graphics/pokemon/back_pics/graveler_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Graveler[] = INCBIN_U8("graphics/pokemon/palettes/graveler_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Graveler[] = INCBIN_U8("graphics/pokemon/icons/graveler_icon.4bpp"); +const u8 gMonFootprint_Graveler[] = INCBIN_U8("graphics/pokemon/footprints/graveler_footprint.1bpp"); + +const u8 gMonStillFrontPic_Golem[] = INCBIN_U8("graphics/pokemon/front_pics/golem_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Golem[] = INCBIN_U8("graphics/pokemon/palettes/golem_palette.gbapal.lz"); +const u8 gMonBackPic_Golem[] = INCBIN_U8("graphics/pokemon/back_pics/golem_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Golem[] = INCBIN_U8("graphics/pokemon/palettes/golem_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Golem[] = INCBIN_U8("graphics/pokemon/icons/golem_icon.4bpp"); +const u8 gMonFootprint_Golem[] = INCBIN_U8("graphics/pokemon/footprints/golem_footprint.1bpp"); + +const u8 gMonStillFrontPic_Ponyta[] = INCBIN_U8("graphics/pokemon/front_pics/ponyta_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Ponyta[] = INCBIN_U8("graphics/pokemon/palettes/ponyta_palette.gbapal.lz"); +const u8 gMonBackPic_Ponyta[] = INCBIN_U8("graphics/pokemon/back_pics/ponyta_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Ponyta[] = INCBIN_U8("graphics/pokemon/palettes/ponyta_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Ponyta[] = INCBIN_U8("graphics/pokemon/icons/ponyta_icon.4bpp"); +const u8 gMonFootprint_Ponyta[] = INCBIN_U8("graphics/pokemon/footprints/ponyta_footprint.1bpp"); + +const u8 gMonStillFrontPic_Rapidash[] = INCBIN_U8("graphics/pokemon/front_pics/rapidash_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Rapidash[] = INCBIN_U8("graphics/pokemon/palettes/rapidash_palette.gbapal.lz"); +const u8 gMonBackPic_Rapidash[] = INCBIN_U8("graphics/pokemon/back_pics/rapidash_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Rapidash[] = INCBIN_U8("graphics/pokemon/palettes/rapidash_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Rapidash[] = INCBIN_U8("graphics/pokemon/icons/rapidash_icon.4bpp"); +const u8 gMonFootprint_Rapidash[] = INCBIN_U8("graphics/pokemon/footprints/rapidash_footprint.1bpp"); + +const u8 gMonStillFrontPic_Slowpoke[] = INCBIN_U8("graphics/pokemon/front_pics/slowpoke_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Slowpoke[] = INCBIN_U8("graphics/pokemon/palettes/slowpoke_palette.gbapal.lz"); +const u8 gMonBackPic_Slowpoke[] = INCBIN_U8("graphics/pokemon/back_pics/slowpoke_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Slowpoke[] = INCBIN_U8("graphics/pokemon/palettes/slowpoke_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Slowpoke[] = INCBIN_U8("graphics/pokemon/icons/slowpoke_icon.4bpp"); +const u8 gMonFootprint_Slowpoke[] = INCBIN_U8("graphics/pokemon/footprints/slowpoke_footprint.1bpp"); + +const u8 gMonStillFrontPic_Slowbro[] = INCBIN_U8("graphics/pokemon/front_pics/slowbro_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Slowbro[] = INCBIN_U8("graphics/pokemon/palettes/slowbro_palette.gbapal.lz"); +const u8 gMonBackPic_Slowbro[] = INCBIN_U8("graphics/pokemon/back_pics/slowbro_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Slowbro[] = INCBIN_U8("graphics/pokemon/palettes/slowbro_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Slowbro[] = INCBIN_U8("graphics/pokemon/icons/slowbro_icon.4bpp"); +const u8 gMonFootprint_Slowbro[] = INCBIN_U8("graphics/pokemon/footprints/slowbro_footprint.1bpp"); + +const u8 gMonStillFrontPic_Magnemite[] = INCBIN_U8("graphics/pokemon/front_pics/magnemite_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Magnemite[] = INCBIN_U8("graphics/pokemon/palettes/magnemite_palette.gbapal.lz"); +const u8 gMonBackPic_Magnemite[] = INCBIN_U8("graphics/pokemon/back_pics/magnemite_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Magnemite[] = INCBIN_U8("graphics/pokemon/palettes/magnemite_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Magnemite[] = INCBIN_U8("graphics/pokemon/icons/magnemite_icon.4bpp"); +const u8 gMonFootprint_Magnemite[] = INCBIN_U8("graphics/pokemon/footprints/magnemite_footprint.1bpp"); + +const u8 gMonStillFrontPic_Magneton[] = INCBIN_U8("graphics/pokemon/front_pics/magneton_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Magneton[] = INCBIN_U8("graphics/pokemon/palettes/magneton_palette.gbapal.lz"); +const u8 gMonBackPic_Magneton[] = INCBIN_U8("graphics/pokemon/back_pics/magneton_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Magneton[] = INCBIN_U8("graphics/pokemon/palettes/magneton_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Magneton[] = INCBIN_U8("graphics/pokemon/icons/magneton_icon.4bpp"); +const u8 gMonFootprint_Magneton[] = INCBIN_U8("graphics/pokemon/footprints/magneton_footprint.1bpp"); + +const u8 gMonStillFrontPic_Farfetchd[] = INCBIN_U8("graphics/pokemon/front_pics/farfetch_d_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Farfetchd[] = INCBIN_U8("graphics/pokemon/palettes/farfetch_d_palette.gbapal.lz"); +const u8 gMonBackPic_Farfetchd[] = INCBIN_U8("graphics/pokemon/back_pics/farfetch_d_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Farfetchd[] = INCBIN_U8("graphics/pokemon/palettes/farfetch_d_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Farfetchd[] = INCBIN_U8("graphics/pokemon/icons/farfetch_d_icon.4bpp"); +const u8 gMonFootprint_Farfetchd[] = INCBIN_U8("graphics/pokemon/footprints/farfetch_d_footprint.1bpp"); + +const u8 gMonStillFrontPic_Doduo[] = INCBIN_U8("graphics/pokemon/front_pics/doduo_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Doduo[] = INCBIN_U8("graphics/pokemon/palettes/doduo_palette.gbapal.lz"); +const u8 gMonBackPic_Doduo[] = INCBIN_U8("graphics/pokemon/back_pics/doduo_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Doduo[] = INCBIN_U8("graphics/pokemon/palettes/doduo_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Doduo[] = INCBIN_U8("graphics/pokemon/icons/doduo_icon.4bpp"); +const u8 gMonFootprint_Doduo[] = INCBIN_U8("graphics/pokemon/footprints/doduo_footprint.1bpp"); + +const u8 gMonStillFrontPic_Dodrio[] = INCBIN_U8("graphics/pokemon/front_pics/dodrio_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Dodrio[] = INCBIN_U8("graphics/pokemon/palettes/dodrio_palette.gbapal.lz"); +const u8 gMonBackPic_Dodrio[] = INCBIN_U8("graphics/pokemon/back_pics/dodrio_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Dodrio[] = INCBIN_U8("graphics/pokemon/palettes/dodrio_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Dodrio[] = INCBIN_U8("graphics/pokemon/icons/dodrio_icon.4bpp"); +const u8 gMonFootprint_Dodrio[] = INCBIN_U8("graphics/pokemon/footprints/dodrio_footprint.1bpp"); + +const u8 gMonStillFrontPic_Seel[] = INCBIN_U8("graphics/pokemon/front_pics/seel_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Seel[] = INCBIN_U8("graphics/pokemon/palettes/seel_palette.gbapal.lz"); +const u8 gMonBackPic_Seel[] = INCBIN_U8("graphics/pokemon/back_pics/seel_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Seel[] = INCBIN_U8("graphics/pokemon/palettes/seel_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Seel[] = INCBIN_U8("graphics/pokemon/icons/seel_icon.4bpp"); +const u8 gMonFootprint_Seel[] = INCBIN_U8("graphics/pokemon/footprints/seel_footprint.1bpp"); + +const u8 gMonStillFrontPic_Dewgong[] = INCBIN_U8("graphics/pokemon/front_pics/dewgong_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Dewgong[] = INCBIN_U8("graphics/pokemon/palettes/dewgong_palette.gbapal.lz"); +const u8 gMonBackPic_Dewgong[] = INCBIN_U8("graphics/pokemon/back_pics/dewgong_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Dewgong[] = INCBIN_U8("graphics/pokemon/palettes/dewgong_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Dewgong[] = INCBIN_U8("graphics/pokemon/icons/dewgong_icon.4bpp"); +const u8 gMonFootprint_Dewgong[] = INCBIN_U8("graphics/pokemon/footprints/dewgong_footprint.1bpp"); + +const u8 gMonStillFrontPic_Grimer[] = INCBIN_U8("graphics/pokemon/front_pics/grimer_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Grimer[] = INCBIN_U8("graphics/pokemon/palettes/grimer_palette.gbapal.lz"); +const u8 gMonBackPic_Grimer[] = INCBIN_U8("graphics/pokemon/back_pics/grimer_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Grimer[] = INCBIN_U8("graphics/pokemon/palettes/grimer_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Grimer[] = INCBIN_U8("graphics/pokemon/icons/grimer_icon.4bpp"); +const u8 gMonFootprint_Grimer[] = INCBIN_U8("graphics/pokemon/footprints/grimer_footprint.1bpp"); + +const u8 gMonStillFrontPic_Muk[] = INCBIN_U8("graphics/pokemon/front_pics/muk_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Muk[] = INCBIN_U8("graphics/pokemon/palettes/muk_palette.gbapal.lz"); +const u8 gMonBackPic_Muk[] = INCBIN_U8("graphics/pokemon/back_pics/muk_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Muk[] = INCBIN_U8("graphics/pokemon/palettes/muk_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Muk[] = INCBIN_U8("graphics/pokemon/icons/muk_icon.4bpp"); +const u8 gMonFootprint_Muk[] = INCBIN_U8("graphics/pokemon/footprints/muk_footprint.1bpp"); + +const u8 gMonStillFrontPic_Shellder[] = INCBIN_U8("graphics/pokemon/front_pics/shellder_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Shellder[] = INCBIN_U8("graphics/pokemon/palettes/shellder_palette.gbapal.lz"); +const u8 gMonBackPic_Shellder[] = INCBIN_U8("graphics/pokemon/back_pics/shellder_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Shellder[] = INCBIN_U8("graphics/pokemon/palettes/shellder_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Shellder[] = INCBIN_U8("graphics/pokemon/icons/shellder_icon.4bpp"); +const u8 gMonFootprint_Shellder[] = INCBIN_U8("graphics/pokemon/footprints/shellder_footprint.1bpp"); + +const u8 gMonStillFrontPic_Cloyster[] = INCBIN_U8("graphics/pokemon/front_pics/cloyster_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Cloyster[] = INCBIN_U8("graphics/pokemon/palettes/cloyster_palette.gbapal.lz"); +const u8 gMonBackPic_Cloyster[] = INCBIN_U8("graphics/pokemon/back_pics/cloyster_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Cloyster[] = INCBIN_U8("graphics/pokemon/palettes/cloyster_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Cloyster[] = INCBIN_U8("graphics/pokemon/icons/cloyster_icon.4bpp"); +const u8 gMonFootprint_Cloyster[] = INCBIN_U8("graphics/pokemon/footprints/cloyster_footprint.1bpp"); + +const u8 gMonStillFrontPic_Gastly[] = INCBIN_U8("graphics/pokemon/front_pics/gastly_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Gastly[] = INCBIN_U8("graphics/pokemon/palettes/gastly_palette.gbapal.lz"); +const u8 gMonBackPic_Gastly[] = INCBIN_U8("graphics/pokemon/back_pics/gastly_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Gastly[] = INCBIN_U8("graphics/pokemon/palettes/gastly_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Gastly[] = INCBIN_U8("graphics/pokemon/icons/gastly_icon.4bpp"); +const u8 gMonFootprint_Gastly[] = INCBIN_U8("graphics/pokemon/footprints/gastly_footprint.1bpp"); + +const u8 gMonStillFrontPic_Haunter[] = INCBIN_U8("graphics/pokemon/front_pics/haunter_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Haunter[] = INCBIN_U8("graphics/pokemon/palettes/haunter_palette.gbapal.lz"); +const u8 gMonBackPic_Haunter[] = INCBIN_U8("graphics/pokemon/back_pics/haunter_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Haunter[] = INCBIN_U8("graphics/pokemon/palettes/haunter_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Haunter[] = INCBIN_U8("graphics/pokemon/icons/haunter_icon.4bpp"); +const u8 gMonFootprint_Haunter[] = INCBIN_U8("graphics/pokemon/footprints/haunter_footprint.1bpp"); + +const u8 gMonStillFrontPic_Gengar[] = INCBIN_U8("graphics/pokemon/front_pics/gengar_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Gengar[] = INCBIN_U8("graphics/pokemon/palettes/gengar_palette.gbapal.lz"); +const u8 gMonBackPic_Gengar[] = INCBIN_U8("graphics/pokemon/back_pics/gengar_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Gengar[] = INCBIN_U8("graphics/pokemon/palettes/gengar_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Gengar[] = INCBIN_U8("graphics/pokemon/icons/gengar_icon.4bpp"); +const u8 gMonFootprint_Gengar[] = INCBIN_U8("graphics/pokemon/footprints/gengar_footprint.1bpp"); + +const u8 gMonStillFrontPic_Onix[] = INCBIN_U8("graphics/pokemon/front_pics/onix_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Onix[] = INCBIN_U8("graphics/pokemon/palettes/onix_palette.gbapal.lz"); +const u8 gMonBackPic_Onix[] = INCBIN_U8("graphics/pokemon/back_pics/onix_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Onix[] = INCBIN_U8("graphics/pokemon/palettes/onix_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Onix[] = INCBIN_U8("graphics/pokemon/icons/onix_icon.4bpp"); +const u8 gMonFootprint_Onix[] = INCBIN_U8("graphics/pokemon/footprints/onix_footprint.1bpp"); + +const u8 gMonStillFrontPic_Drowzee[] = INCBIN_U8("graphics/pokemon/front_pics/drowzee_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Drowzee[] = INCBIN_U8("graphics/pokemon/palettes/drowzee_palette.gbapal.lz"); +const u8 gMonBackPic_Drowzee[] = INCBIN_U8("graphics/pokemon/back_pics/drowzee_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Drowzee[] = INCBIN_U8("graphics/pokemon/palettes/drowzee_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Drowzee[] = INCBIN_U8("graphics/pokemon/icons/drowzee_icon.4bpp"); +const u8 gMonFootprint_Drowzee[] = INCBIN_U8("graphics/pokemon/footprints/drowzee_footprint.1bpp"); + +const u8 gMonStillFrontPic_Hypno[] = INCBIN_U8("graphics/pokemon/front_pics/hypno_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Hypno[] = INCBIN_U8("graphics/pokemon/palettes/hypno_palette.gbapal.lz"); +const u8 gMonBackPic_Hypno[] = INCBIN_U8("graphics/pokemon/back_pics/hypno_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Hypno[] = INCBIN_U8("graphics/pokemon/palettes/hypno_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Hypno[] = INCBIN_U8("graphics/pokemon/icons/hypno_icon.4bpp"); +const u8 gMonFootprint_Hypno[] = INCBIN_U8("graphics/pokemon/footprints/hypno_footprint.1bpp"); + +const u8 gMonStillFrontPic_Krabby[] = INCBIN_U8("graphics/pokemon/front_pics/krabby_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Krabby[] = INCBIN_U8("graphics/pokemon/palettes/krabby_palette.gbapal.lz"); +const u8 gMonBackPic_Krabby[] = INCBIN_U8("graphics/pokemon/back_pics/krabby_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Krabby[] = INCBIN_U8("graphics/pokemon/palettes/krabby_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Krabby[] = INCBIN_U8("graphics/pokemon/icons/krabby_icon.4bpp"); +const u8 gMonFootprint_Krabby[] = INCBIN_U8("graphics/pokemon/footprints/krabby_footprint.1bpp"); + +const u8 gMonStillFrontPic_Kingler[] = INCBIN_U8("graphics/pokemon/front_pics/kingler_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Kingler[] = INCBIN_U8("graphics/pokemon/palettes/kingler_palette.gbapal.lz"); +const u8 gMonBackPic_Kingler[] = INCBIN_U8("graphics/pokemon/back_pics/kingler_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Kingler[] = INCBIN_U8("graphics/pokemon/palettes/kingler_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Kingler[] = INCBIN_U8("graphics/pokemon/icons/kingler_icon.4bpp"); +const u8 gMonFootprint_Kingler[] = INCBIN_U8("graphics/pokemon/footprints/kingler_footprint.1bpp"); + +const u8 gMonStillFrontPic_Voltorb[] = INCBIN_U8("graphics/pokemon/front_pics/voltorb_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Voltorb[] = INCBIN_U8("graphics/pokemon/palettes/voltorb_palette.gbapal.lz"); +const u8 gMonBackPic_Voltorb[] = INCBIN_U8("graphics/pokemon/back_pics/voltorb_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Voltorb[] = INCBIN_U8("graphics/pokemon/palettes/voltorb_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Voltorb[] = INCBIN_U8("graphics/pokemon/icons/voltorb_icon.4bpp"); +const u8 gMonFootprint_Voltorb[] = INCBIN_U8("graphics/pokemon/footprints/voltorb_footprint.1bpp"); + +const u8 gMonStillFrontPic_Electrode[] = INCBIN_U8("graphics/pokemon/front_pics/electrode_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Electrode[] = INCBIN_U8("graphics/pokemon/palettes/electrode_palette.gbapal.lz"); +const u8 gMonBackPic_Electrode[] = INCBIN_U8("graphics/pokemon/back_pics/electrode_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Electrode[] = INCBIN_U8("graphics/pokemon/palettes/electrode_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Electrode[] = INCBIN_U8("graphics/pokemon/icons/electrode_icon.4bpp"); +const u8 gMonFootprint_Electrode[] = INCBIN_U8("graphics/pokemon/footprints/electrode_footprint.1bpp"); + +const u8 gMonStillFrontPic_Exeggcute[] = INCBIN_U8("graphics/pokemon/front_pics/exeggcute_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Exeggcute[] = INCBIN_U8("graphics/pokemon/palettes/exeggcute_palette.gbapal.lz"); +const u8 gMonBackPic_Exeggcute[] = INCBIN_U8("graphics/pokemon/back_pics/exeggcute_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Exeggcute[] = INCBIN_U8("graphics/pokemon/palettes/exeggcute_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Exeggcute[] = INCBIN_U8("graphics/pokemon/icons/exeggcute_icon.4bpp"); +const u8 gMonFootprint_Exeggcute[] = INCBIN_U8("graphics/pokemon/footprints/exeggcute_footprint.1bpp"); + +const u8 gMonStillFrontPic_Exeggutor[] = INCBIN_U8("graphics/pokemon/front_pics/exeggutor_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Exeggutor[] = INCBIN_U8("graphics/pokemon/palettes/exeggutor_palette.gbapal.lz"); +const u8 gMonBackPic_Exeggutor[] = INCBIN_U8("graphics/pokemon/back_pics/exeggutor_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Exeggutor[] = INCBIN_U8("graphics/pokemon/palettes/exeggutor_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Exeggutor[] = INCBIN_U8("graphics/pokemon/icons/exeggutor_icon.4bpp"); +const u8 gMonFootprint_Exeggutor[] = INCBIN_U8("graphics/pokemon/footprints/exeggutor_footprint.1bpp"); + +const u8 gMonStillFrontPic_Cubone[] = INCBIN_U8("graphics/pokemon/front_pics/cubone_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Cubone[] = INCBIN_U8("graphics/pokemon/palettes/cubone_palette.gbapal.lz"); +const u8 gMonBackPic_Cubone[] = INCBIN_U8("graphics/pokemon/back_pics/cubone_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Cubone[] = INCBIN_U8("graphics/pokemon/palettes/cubone_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Cubone[] = INCBIN_U8("graphics/pokemon/icons/cubone_icon.4bpp"); +const u8 gMonFootprint_Cubone[] = INCBIN_U8("graphics/pokemon/footprints/cubone_footprint.1bpp"); + +const u8 gMonStillFrontPic_Marowak[] = INCBIN_U8("graphics/pokemon/front_pics/marowak_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Marowak[] = INCBIN_U8("graphics/pokemon/palettes/marowak_palette.gbapal.lz"); +const u8 gMonBackPic_Marowak[] = INCBIN_U8("graphics/pokemon/back_pics/marowak_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Marowak[] = INCBIN_U8("graphics/pokemon/palettes/marowak_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Marowak[] = INCBIN_U8("graphics/pokemon/icons/marowak_icon.4bpp"); +const u8 gMonFootprint_Marowak[] = INCBIN_U8("graphics/pokemon/footprints/marowak_footprint.1bpp"); + +const u8 gMonStillFrontPic_Hitmonlee[] = INCBIN_U8("graphics/pokemon/front_pics/hitmonlee_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Hitmonlee[] = INCBIN_U8("graphics/pokemon/palettes/hitmonlee_palette.gbapal.lz"); +const u8 gMonBackPic_Hitmonlee[] = INCBIN_U8("graphics/pokemon/back_pics/hitmonlee_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Hitmonlee[] = INCBIN_U8("graphics/pokemon/palettes/hitmonlee_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Hitmonlee[] = INCBIN_U8("graphics/pokemon/icons/hitmonlee_icon.4bpp"); +const u8 gMonFootprint_Hitmonlee[] = INCBIN_U8("graphics/pokemon/footprints/hitmonlee_footprint.1bpp"); + +const u8 gMonStillFrontPic_Hitmonchan[] = INCBIN_U8("graphics/pokemon/front_pics/hitmonchan_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Hitmonchan[] = INCBIN_U8("graphics/pokemon/palettes/hitmonchan_palette.gbapal.lz"); +const u8 gMonBackPic_Hitmonchan[] = INCBIN_U8("graphics/pokemon/back_pics/hitmonchan_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Hitmonchan[] = INCBIN_U8("graphics/pokemon/palettes/hitmonchan_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Hitmonchan[] = INCBIN_U8("graphics/pokemon/icons/hitmonchan_icon.4bpp"); +const u8 gMonFootprint_Hitmonchan[] = INCBIN_U8("graphics/pokemon/footprints/hitmonchan_footprint.1bpp"); + +const u8 gMonStillFrontPic_Lickitung[] = INCBIN_U8("graphics/pokemon/front_pics/lickitung_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Lickitung[] = INCBIN_U8("graphics/pokemon/palettes/lickitung_palette.gbapal.lz"); +const u8 gMonBackPic_Lickitung[] = INCBIN_U8("graphics/pokemon/back_pics/lickitung_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Lickitung[] = INCBIN_U8("graphics/pokemon/palettes/lickitung_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Lickitung[] = INCBIN_U8("graphics/pokemon/icons/lickitung_icon.4bpp"); +const u8 gMonFootprint_Lickitung[] = INCBIN_U8("graphics/pokemon/footprints/lickitung_footprint.1bpp"); + +const u8 gMonStillFrontPic_Koffing[] = INCBIN_U8("graphics/pokemon/front_pics/koffing_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Koffing[] = INCBIN_U8("graphics/pokemon/palettes/koffing_palette.gbapal.lz"); +const u8 gMonBackPic_Koffing[] = INCBIN_U8("graphics/pokemon/back_pics/koffing_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Koffing[] = INCBIN_U8("graphics/pokemon/palettes/koffing_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Koffing[] = INCBIN_U8("graphics/pokemon/icons/koffing_icon.4bpp"); +const u8 gMonFootprint_Koffing[] = INCBIN_U8("graphics/pokemon/footprints/koffing_footprint.1bpp"); + +const u8 gMonStillFrontPic_Weezing[] = INCBIN_U8("graphics/pokemon/front_pics/weezing_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Weezing[] = INCBIN_U8("graphics/pokemon/palettes/weezing_palette.gbapal.lz"); +const u8 gMonBackPic_Weezing[] = INCBIN_U8("graphics/pokemon/back_pics/weezing_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Weezing[] = INCBIN_U8("graphics/pokemon/palettes/weezing_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Weezing[] = INCBIN_U8("graphics/pokemon/icons/weezing_icon.4bpp"); +const u8 gMonFootprint_Weezing[] = INCBIN_U8("graphics/pokemon/footprints/weezing_footprint.1bpp"); + +const u8 gMonStillFrontPic_Rhyhorn[] = INCBIN_U8("graphics/pokemon/front_pics/rhyhorn_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Rhyhorn[] = INCBIN_U8("graphics/pokemon/palettes/rhyhorn_palette.gbapal.lz"); +const u8 gMonBackPic_Rhyhorn[] = INCBIN_U8("graphics/pokemon/back_pics/rhyhorn_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Rhyhorn[] = INCBIN_U8("graphics/pokemon/palettes/rhyhorn_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Rhyhorn[] = INCBIN_U8("graphics/pokemon/icons/rhyhorn_icon.4bpp"); +const u8 gMonFootprint_Rhyhorn[] = INCBIN_U8("graphics/pokemon/footprints/rhyhorn_footprint.1bpp"); + +const u8 gMonStillFrontPic_Rhydon[] = INCBIN_U8("graphics/pokemon/front_pics/rhydon_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Rhydon[] = INCBIN_U8("graphics/pokemon/palettes/rhydon_palette.gbapal.lz"); +const u8 gMonBackPic_Rhydon[] = INCBIN_U8("graphics/pokemon/back_pics/rhydon_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Rhydon[] = INCBIN_U8("graphics/pokemon/palettes/rhydon_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Rhydon[] = INCBIN_U8("graphics/pokemon/icons/rhydon_icon.4bpp"); +const u8 gMonFootprint_Rhydon[] = INCBIN_U8("graphics/pokemon/footprints/rhydon_footprint.1bpp"); + +const u8 gMonStillFrontPic_Chansey[] = INCBIN_U8("graphics/pokemon/front_pics/chansey_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Chansey[] = INCBIN_U8("graphics/pokemon/palettes/chansey_palette.gbapal.lz"); +const u8 gMonBackPic_Chansey[] = INCBIN_U8("graphics/pokemon/back_pics/chansey_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Chansey[] = INCBIN_U8("graphics/pokemon/palettes/chansey_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Chansey[] = INCBIN_U8("graphics/pokemon/icons/chansey_icon.4bpp"); +const u8 gMonFootprint_Chansey[] = INCBIN_U8("graphics/pokemon/footprints/chansey_footprint.1bpp"); + +const u8 gMonStillFrontPic_Tangela[] = INCBIN_U8("graphics/pokemon/front_pics/tangela_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Tangela[] = INCBIN_U8("graphics/pokemon/palettes/tangela_palette.gbapal.lz"); +const u8 gMonBackPic_Tangela[] = INCBIN_U8("graphics/pokemon/back_pics/tangela_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Tangela[] = INCBIN_U8("graphics/pokemon/palettes/tangela_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Tangela[] = INCBIN_U8("graphics/pokemon/icons/tangela_icon.4bpp"); +const u8 gMonFootprint_Tangela[] = INCBIN_U8("graphics/pokemon/footprints/tangela_footprint.1bpp"); + +const u8 gMonStillFrontPic_Kangaskhan[] = INCBIN_U8("graphics/pokemon/front_pics/kangaskhan_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Kangaskhan[] = INCBIN_U8("graphics/pokemon/palettes/kangaskhan_palette.gbapal.lz"); +const u8 gMonBackPic_Kangaskhan[] = INCBIN_U8("graphics/pokemon/back_pics/kangaskhan_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Kangaskhan[] = INCBIN_U8("graphics/pokemon/palettes/kangaskhan_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Kangaskhan[] = INCBIN_U8("graphics/pokemon/icons/kangaskhan_icon.4bpp"); +const u8 gMonFootprint_Kangaskhan[] = INCBIN_U8("graphics/pokemon/footprints/kangaskhan_footprint.1bpp"); + +const u8 gMonStillFrontPic_Horsea[] = INCBIN_U8("graphics/pokemon/front_pics/horsea_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Horsea[] = INCBIN_U8("graphics/pokemon/palettes/horsea_palette.gbapal.lz"); +const u8 gMonBackPic_Horsea[] = INCBIN_U8("graphics/pokemon/back_pics/horsea_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Horsea[] = INCBIN_U8("graphics/pokemon/palettes/horsea_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Horsea[] = INCBIN_U8("graphics/pokemon/icons/horsea_icon.4bpp"); +const u8 gMonFootprint_Horsea[] = INCBIN_U8("graphics/pokemon/footprints/horsea_footprint.1bpp"); + +const u8 gMonStillFrontPic_Seadra[] = INCBIN_U8("graphics/pokemon/front_pics/seadra_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Seadra[] = INCBIN_U8("graphics/pokemon/palettes/seadra_palette.gbapal.lz"); +const u8 gMonBackPic_Seadra[] = INCBIN_U8("graphics/pokemon/back_pics/seadra_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Seadra[] = INCBIN_U8("graphics/pokemon/palettes/seadra_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Seadra[] = INCBIN_U8("graphics/pokemon/icons/seadra_icon.4bpp"); +const u8 gMonFootprint_Seadra[] = INCBIN_U8("graphics/pokemon/footprints/seadra_footprint.1bpp"); + +const u8 gMonStillFrontPic_Goldeen[] = INCBIN_U8("graphics/pokemon/front_pics/goldeen_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Goldeen[] = INCBIN_U8("graphics/pokemon/palettes/goldeen_palette.gbapal.lz"); +const u8 gMonBackPic_Goldeen[] = INCBIN_U8("graphics/pokemon/back_pics/goldeen_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Goldeen[] = INCBIN_U8("graphics/pokemon/palettes/goldeen_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Goldeen[] = INCBIN_U8("graphics/pokemon/icons/goldeen_icon.4bpp"); +const u8 gMonFootprint_Goldeen[] = INCBIN_U8("graphics/pokemon/footprints/goldeen_footprint.1bpp"); + +const u8 gMonStillFrontPic_Seaking[] = INCBIN_U8("graphics/pokemon/front_pics/seaking_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Seaking[] = INCBIN_U8("graphics/pokemon/palettes/seaking_palette.gbapal.lz"); +const u8 gMonBackPic_Seaking[] = INCBIN_U8("graphics/pokemon/back_pics/seaking_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Seaking[] = INCBIN_U8("graphics/pokemon/palettes/seaking_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Seaking[] = INCBIN_U8("graphics/pokemon/icons/seaking_icon.4bpp"); +const u8 gMonFootprint_Seaking[] = INCBIN_U8("graphics/pokemon/footprints/seaking_footprint.1bpp"); + +const u8 gMonStillFrontPic_Staryu[] = INCBIN_U8("graphics/pokemon/front_pics/staryu_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Staryu[] = INCBIN_U8("graphics/pokemon/palettes/staryu_palette.gbapal.lz"); +const u8 gMonBackPic_Staryu[] = INCBIN_U8("graphics/pokemon/back_pics/staryu_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Staryu[] = INCBIN_U8("graphics/pokemon/palettes/staryu_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Staryu[] = INCBIN_U8("graphics/pokemon/icons/staryu_icon.4bpp"); +const u8 gMonFootprint_Staryu[] = INCBIN_U8("graphics/pokemon/footprints/staryu_footprint.1bpp"); + +const u8 gMonStillFrontPic_Starmie[] = INCBIN_U8("graphics/pokemon/front_pics/starmie_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Starmie[] = INCBIN_U8("graphics/pokemon/palettes/starmie_palette.gbapal.lz"); +const u8 gMonBackPic_Starmie[] = INCBIN_U8("graphics/pokemon/back_pics/starmie_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Starmie[] = INCBIN_U8("graphics/pokemon/palettes/starmie_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Starmie[] = INCBIN_U8("graphics/pokemon/icons/starmie_icon.4bpp"); +const u8 gMonFootprint_Starmie[] = INCBIN_U8("graphics/pokemon/footprints/starmie_footprint.1bpp"); + +const u8 gMonStillFrontPic_Mrmime[] = INCBIN_U8("graphics/pokemon/front_pics/mr_mime_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Mrmime[] = INCBIN_U8("graphics/pokemon/palettes/mr_mime_palette.gbapal.lz"); +const u8 gMonBackPic_Mrmime[] = INCBIN_U8("graphics/pokemon/back_pics/mr_mime_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Mrmime[] = INCBIN_U8("graphics/pokemon/palettes/mr_mime_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Mrmime[] = INCBIN_U8("graphics/pokemon/icons/mr_mime_icon.4bpp"); +const u8 gMonFootprint_Mrmime[] = INCBIN_U8("graphics/pokemon/footprints/mr_mime_footprint.1bpp"); + +const u8 gMonStillFrontPic_Scyther[] = INCBIN_U8("graphics/pokemon/front_pics/scyther_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Scyther[] = INCBIN_U8("graphics/pokemon/palettes/scyther_palette.gbapal.lz"); +const u8 gMonBackPic_Scyther[] = INCBIN_U8("graphics/pokemon/back_pics/scyther_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Scyther[] = INCBIN_U8("graphics/pokemon/palettes/scyther_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Scyther[] = INCBIN_U8("graphics/pokemon/icons/scyther_icon.4bpp"); +const u8 gMonFootprint_Scyther[] = INCBIN_U8("graphics/pokemon/footprints/scyther_footprint.1bpp"); + +const u8 gMonStillFrontPic_Jynx[] = INCBIN_U8("graphics/pokemon/front_pics/jynx_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Jynx[] = INCBIN_U8("graphics/pokemon/palettes/jynx_palette.gbapal.lz"); +const u8 gMonBackPic_Jynx[] = INCBIN_U8("graphics/pokemon/back_pics/jynx_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Jynx[] = INCBIN_U8("graphics/pokemon/palettes/jynx_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Jynx[] = INCBIN_U8("graphics/pokemon/icons/jynx_icon.4bpp"); +const u8 gMonFootprint_Jynx[] = INCBIN_U8("graphics/pokemon/footprints/jynx_footprint.1bpp"); + +const u8 gMonStillFrontPic_Electabuzz[] = INCBIN_U8("graphics/pokemon/front_pics/electabuzz_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Electabuzz[] = INCBIN_U8("graphics/pokemon/palettes/electabuzz_palette.gbapal.lz"); +const u8 gMonBackPic_Electabuzz[] = INCBIN_U8("graphics/pokemon/back_pics/electabuzz_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Electabuzz[] = INCBIN_U8("graphics/pokemon/palettes/electabuzz_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Electabuzz[] = INCBIN_U8("graphics/pokemon/icons/electabuzz_icon.4bpp"); +const u8 gMonFootprint_Electabuzz[] = INCBIN_U8("graphics/pokemon/footprints/electabuzz_footprint.1bpp"); + +const u8 gMonStillFrontPic_Magmar[] = INCBIN_U8("graphics/pokemon/front_pics/magmar_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Magmar[] = INCBIN_U8("graphics/pokemon/palettes/magmar_palette.gbapal.lz"); +const u8 gMonBackPic_Magmar[] = INCBIN_U8("graphics/pokemon/back_pics/magmar_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Magmar[] = INCBIN_U8("graphics/pokemon/palettes/magmar_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Magmar[] = INCBIN_U8("graphics/pokemon/icons/magmar_icon.4bpp"); +const u8 gMonFootprint_Magmar[] = INCBIN_U8("graphics/pokemon/footprints/magmar_footprint.1bpp"); + +const u8 gMonStillFrontPic_Pinsir[] = INCBIN_U8("graphics/pokemon/front_pics/pinsir_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Pinsir[] = INCBIN_U8("graphics/pokemon/palettes/pinsir_palette.gbapal.lz"); +const u8 gMonBackPic_Pinsir[] = INCBIN_U8("graphics/pokemon/back_pics/pinsir_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Pinsir[] = INCBIN_U8("graphics/pokemon/palettes/pinsir_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Pinsir[] = INCBIN_U8("graphics/pokemon/icons/pinsir_icon.4bpp"); +const u8 gMonFootprint_Pinsir[] = INCBIN_U8("graphics/pokemon/footprints/pinsir_footprint.1bpp"); + +const u8 gMonStillFrontPic_Tauros[] = INCBIN_U8("graphics/pokemon/front_pics/tauros_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Tauros[] = INCBIN_U8("graphics/pokemon/palettes/tauros_palette.gbapal.lz"); +const u8 gMonBackPic_Tauros[] = INCBIN_U8("graphics/pokemon/back_pics/tauros_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Tauros[] = INCBIN_U8("graphics/pokemon/palettes/tauros_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Tauros[] = INCBIN_U8("graphics/pokemon/icons/tauros_icon.4bpp"); +const u8 gMonFootprint_Tauros[] = INCBIN_U8("graphics/pokemon/footprints/tauros_footprint.1bpp"); + +const u8 gMonStillFrontPic_Magikarp[] = INCBIN_U8("graphics/pokemon/front_pics/magikarp_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Magikarp[] = INCBIN_U8("graphics/pokemon/palettes/magikarp_palette.gbapal.lz"); +const u8 gMonBackPic_Magikarp[] = INCBIN_U8("graphics/pokemon/back_pics/magikarp_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Magikarp[] = INCBIN_U8("graphics/pokemon/palettes/magikarp_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Magikarp[] = INCBIN_U8("graphics/pokemon/icons/magikarp_icon.4bpp"); +const u8 gMonFootprint_Magikarp[] = INCBIN_U8("graphics/pokemon/footprints/magikarp_footprint.1bpp"); + +const u8 gMonStillFrontPic_Gyarados[] = INCBIN_U8("graphics/pokemon/front_pics/gyarados_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Gyarados[] = INCBIN_U8("graphics/pokemon/palettes/gyarados_palette.gbapal.lz"); +const u8 gMonBackPic_Gyarados[] = INCBIN_U8("graphics/pokemon/back_pics/gyarados_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Gyarados[] = INCBIN_U8("graphics/pokemon/palettes/gyarados_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Gyarados[] = INCBIN_U8("graphics/pokemon/icons/gyarados_icon.4bpp"); +const u8 gMonFootprint_Gyarados[] = INCBIN_U8("graphics/pokemon/footprints/gyarados_footprint.1bpp"); + +const u8 gMonStillFrontPic_Lapras[] = INCBIN_U8("graphics/pokemon/front_pics/lapras_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Lapras[] = INCBIN_U8("graphics/pokemon/palettes/lapras_palette.gbapal.lz"); +const u8 gMonBackPic_Lapras[] = INCBIN_U8("graphics/pokemon/back_pics/lapras_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Lapras[] = INCBIN_U8("graphics/pokemon/palettes/lapras_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Lapras[] = INCBIN_U8("graphics/pokemon/icons/lapras_icon.4bpp"); +const u8 gMonFootprint_Lapras[] = INCBIN_U8("graphics/pokemon/footprints/lapras_footprint.1bpp"); + +const u8 gMonStillFrontPic_Ditto[] = INCBIN_U8("graphics/pokemon/front_pics/ditto_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Ditto[] = INCBIN_U8("graphics/pokemon/palettes/ditto_palette.gbapal.lz"); +const u8 gMonBackPic_Ditto[] = INCBIN_U8("graphics/pokemon/back_pics/ditto_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Ditto[] = INCBIN_U8("graphics/pokemon/palettes/ditto_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Ditto[] = INCBIN_U8("graphics/pokemon/icons/ditto_icon.4bpp"); +const u8 gMonFootprint_Ditto[] = INCBIN_U8("graphics/pokemon/footprints/ditto_footprint.1bpp"); + +const u8 gMonStillFrontPic_Eevee[] = INCBIN_U8("graphics/pokemon/front_pics/eevee_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Eevee[] = INCBIN_U8("graphics/pokemon/palettes/eevee_palette.gbapal.lz"); +const u8 gMonBackPic_Eevee[] = INCBIN_U8("graphics/pokemon/back_pics/eevee_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Eevee[] = INCBIN_U8("graphics/pokemon/palettes/eevee_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Eevee[] = INCBIN_U8("graphics/pokemon/icons/eevee_icon.4bpp"); +const u8 gMonFootprint_Eevee[] = INCBIN_U8("graphics/pokemon/footprints/eevee_footprint.1bpp"); + +const u8 gMonStillFrontPic_Vaporeon[] = INCBIN_U8("graphics/pokemon/front_pics/vaporeon_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Vaporeon[] = INCBIN_U8("graphics/pokemon/palettes/vaporeon_palette.gbapal.lz"); +const u8 gMonBackPic_Vaporeon[] = INCBIN_U8("graphics/pokemon/back_pics/vaporeon_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Vaporeon[] = INCBIN_U8("graphics/pokemon/palettes/vaporeon_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Vaporeon[] = INCBIN_U8("graphics/pokemon/icons/vaporeon_icon.4bpp"); +const u8 gMonFootprint_Vaporeon[] = INCBIN_U8("graphics/pokemon/footprints/vaporeon_footprint.1bpp"); + +const u8 gMonStillFrontPic_Jolteon[] = INCBIN_U8("graphics/pokemon/front_pics/jolteon_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Jolteon[] = INCBIN_U8("graphics/pokemon/palettes/jolteon_palette.gbapal.lz"); +const u8 gMonBackPic_Jolteon[] = INCBIN_U8("graphics/pokemon/back_pics/jolteon_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Jolteon[] = INCBIN_U8("graphics/pokemon/palettes/jolteon_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Jolteon[] = INCBIN_U8("graphics/pokemon/icons/jolteon_icon.4bpp"); +const u8 gMonFootprint_Jolteon[] = INCBIN_U8("graphics/pokemon/footprints/jolteon_footprint.1bpp"); + +const u8 gMonStillFrontPic_Flareon[] = INCBIN_U8("graphics/pokemon/front_pics/flareon_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Flareon[] = INCBIN_U8("graphics/pokemon/palettes/flareon_palette.gbapal.lz"); +const u8 gMonBackPic_Flareon[] = INCBIN_U8("graphics/pokemon/back_pics/flareon_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Flareon[] = INCBIN_U8("graphics/pokemon/palettes/flareon_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Flareon[] = INCBIN_U8("graphics/pokemon/icons/flareon_icon.4bpp"); +const u8 gMonFootprint_Flareon[] = INCBIN_U8("graphics/pokemon/footprints/flareon_footprint.1bpp"); + +const u8 gMonStillFrontPic_Porygon[] = INCBIN_U8("graphics/pokemon/front_pics/porygon_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Porygon[] = INCBIN_U8("graphics/pokemon/palettes/porygon_palette.gbapal.lz"); +const u8 gMonBackPic_Porygon[] = INCBIN_U8("graphics/pokemon/back_pics/porygon_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Porygon[] = INCBIN_U8("graphics/pokemon/palettes/porygon_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Porygon[] = INCBIN_U8("graphics/pokemon/icons/porygon_icon.4bpp"); +const u8 gMonFootprint_Porygon[] = INCBIN_U8("graphics/pokemon/footprints/porygon_footprint.1bpp"); + +const u8 gMonStillFrontPic_Omanyte[] = INCBIN_U8("graphics/pokemon/front_pics/omanyte_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Omanyte[] = INCBIN_U8("graphics/pokemon/palettes/omanyte_palette.gbapal.lz"); +const u8 gMonBackPic_Omanyte[] = INCBIN_U8("graphics/pokemon/back_pics/omanyte_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Omanyte[] = INCBIN_U8("graphics/pokemon/palettes/omanyte_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Omanyte[] = INCBIN_U8("graphics/pokemon/icons/omanyte_icon.4bpp"); +const u8 gMonFootprint_Omanyte[] = INCBIN_U8("graphics/pokemon/footprints/omanyte_footprint.1bpp"); + +const u8 gMonStillFrontPic_Omastar[] = INCBIN_U8("graphics/pokemon/front_pics/omastar_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Omastar[] = INCBIN_U8("graphics/pokemon/palettes/omastar_palette.gbapal.lz"); +const u8 gMonBackPic_Omastar[] = INCBIN_U8("graphics/pokemon/back_pics/omastar_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Omastar[] = INCBIN_U8("graphics/pokemon/palettes/omastar_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Omastar[] = INCBIN_U8("graphics/pokemon/icons/omastar_icon.4bpp"); +const u8 gMonFootprint_Omastar[] = INCBIN_U8("graphics/pokemon/footprints/omastar_footprint.1bpp"); + +const u8 gMonStillFrontPic_Kabuto[] = INCBIN_U8("graphics/pokemon/front_pics/kabuto_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Kabuto[] = INCBIN_U8("graphics/pokemon/palettes/kabuto_palette.gbapal.lz"); +const u8 gMonBackPic_Kabuto[] = INCBIN_U8("graphics/pokemon/back_pics/kabuto_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Kabuto[] = INCBIN_U8("graphics/pokemon/palettes/kabuto_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Kabuto[] = INCBIN_U8("graphics/pokemon/icons/kabuto_icon.4bpp"); +const u8 gMonFootprint_Kabuto[] = INCBIN_U8("graphics/pokemon/footprints/kabuto_footprint.1bpp"); + +const u8 gMonStillFrontPic_Kabutops[] = INCBIN_U8("graphics/pokemon/front_pics/kabutops_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Kabutops[] = INCBIN_U8("graphics/pokemon/palettes/kabutops_palette.gbapal.lz"); +const u8 gMonBackPic_Kabutops[] = INCBIN_U8("graphics/pokemon/back_pics/kabutops_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Kabutops[] = INCBIN_U8("graphics/pokemon/palettes/kabutops_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Kabutops[] = INCBIN_U8("graphics/pokemon/icons/kabutops_icon.4bpp"); +const u8 gMonFootprint_Kabutops[] = INCBIN_U8("graphics/pokemon/footprints/kabutops_footprint.1bpp"); + +const u8 gMonStillFrontPic_Aerodactyl[] = INCBIN_U8("graphics/pokemon/front_pics/aerodactyl_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Aerodactyl[] = INCBIN_U8("graphics/pokemon/palettes/aerodactyl_palette.gbapal.lz"); +const u8 gMonBackPic_Aerodactyl[] = INCBIN_U8("graphics/pokemon/back_pics/aerodactyl_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Aerodactyl[] = INCBIN_U8("graphics/pokemon/palettes/aerodactyl_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Aerodactyl[] = INCBIN_U8("graphics/pokemon/icons/aerodactyl_icon.4bpp"); +const u8 gMonFootprint_Aerodactyl[] = INCBIN_U8("graphics/pokemon/footprints/aerodactyl_footprint.1bpp"); + +const u8 gMonStillFrontPic_Snorlax[] = INCBIN_U8("graphics/pokemon/front_pics/snorlax_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Snorlax[] = INCBIN_U8("graphics/pokemon/palettes/snorlax_palette.gbapal.lz"); +const u8 gMonBackPic_Snorlax[] = INCBIN_U8("graphics/pokemon/back_pics/snorlax_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Snorlax[] = INCBIN_U8("graphics/pokemon/palettes/snorlax_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Snorlax[] = INCBIN_U8("graphics/pokemon/icons/snorlax_icon.4bpp"); +const u8 gMonFootprint_Snorlax[] = INCBIN_U8("graphics/pokemon/footprints/snorlax_footprint.1bpp"); + +const u8 gMonStillFrontPic_Articuno[] = INCBIN_U8("graphics/pokemon/front_pics/articuno_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Articuno[] = INCBIN_U8("graphics/pokemon/palettes/articuno_palette.gbapal.lz"); +const u8 gMonBackPic_Articuno[] = INCBIN_U8("graphics/pokemon/back_pics/articuno_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Articuno[] = INCBIN_U8("graphics/pokemon/palettes/articuno_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Articuno[] = INCBIN_U8("graphics/pokemon/icons/articuno_icon.4bpp"); +const u8 gMonFootprint_Articuno[] = INCBIN_U8("graphics/pokemon/footprints/articuno_footprint.1bpp"); + +const u8 gMonStillFrontPic_Zapdos[] = INCBIN_U8("graphics/pokemon/front_pics/zapdos_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Zapdos[] = INCBIN_U8("graphics/pokemon/palettes/zapdos_palette.gbapal.lz"); +const u8 gMonBackPic_Zapdos[] = INCBIN_U8("graphics/pokemon/back_pics/zapdos_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Zapdos[] = INCBIN_U8("graphics/pokemon/palettes/zapdos_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Zapdos[] = INCBIN_U8("graphics/pokemon/icons/zapdos_icon.4bpp"); +const u8 gMonFootprint_Zapdos[] = INCBIN_U8("graphics/pokemon/footprints/zapdos_footprint.1bpp"); + +const u8 gMonStillFrontPic_Moltres[] = INCBIN_U8("graphics/pokemon/front_pics/moltres_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Moltres[] = INCBIN_U8("graphics/pokemon/palettes/moltres_palette.gbapal.lz"); +const u8 gMonBackPic_Moltres[] = INCBIN_U8("graphics/pokemon/back_pics/moltres_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Moltres[] = INCBIN_U8("graphics/pokemon/palettes/moltres_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Moltres[] = INCBIN_U8("graphics/pokemon/icons/moltres_icon.4bpp"); +const u8 gMonFootprint_Moltres[] = INCBIN_U8("graphics/pokemon/footprints/moltres_footprint.1bpp"); + +const u8 gMonStillFrontPic_Dratini[] = INCBIN_U8("graphics/pokemon/front_pics/dratini_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Dratini[] = INCBIN_U8("graphics/pokemon/palettes/dratini_palette.gbapal.lz"); +const u8 gMonBackPic_Dratini[] = INCBIN_U8("graphics/pokemon/back_pics/dratini_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Dratini[] = INCBIN_U8("graphics/pokemon/palettes/dratini_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Dratini[] = INCBIN_U8("graphics/pokemon/icons/dratini_icon.4bpp"); +const u8 gMonFootprint_Dratini[] = INCBIN_U8("graphics/pokemon/footprints/dratini_footprint.1bpp"); + +const u8 gMonStillFrontPic_Dragonair[] = INCBIN_U8("graphics/pokemon/front_pics/dragonair_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Dragonair[] = INCBIN_U8("graphics/pokemon/palettes/dragonair_palette.gbapal.lz"); +const u8 gMonBackPic_Dragonair[] = INCBIN_U8("graphics/pokemon/back_pics/dragonair_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Dragonair[] = INCBIN_U8("graphics/pokemon/palettes/dragonair_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Dragonair[] = INCBIN_U8("graphics/pokemon/icons/dragonair_icon.4bpp"); +const u8 gMonFootprint_Dragonair[] = INCBIN_U8("graphics/pokemon/footprints/dragonair_footprint.1bpp"); + +const u8 gMonStillFrontPic_Dragonite[] = INCBIN_U8("graphics/pokemon/front_pics/dragonite_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Dragonite[] = INCBIN_U8("graphics/pokemon/palettes/dragonite_palette.gbapal.lz"); +const u8 gMonBackPic_Dragonite[] = INCBIN_U8("graphics/pokemon/back_pics/dragonite_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Dragonite[] = INCBIN_U8("graphics/pokemon/palettes/dragonite_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Dragonite[] = INCBIN_U8("graphics/pokemon/icons/dragonite_icon.4bpp"); +const u8 gMonFootprint_Dragonite[] = INCBIN_U8("graphics/pokemon/footprints/dragonite_footprint.1bpp"); + +const u8 gMonStillFrontPic_Mewtwo[] = INCBIN_U8("graphics/pokemon/front_pics/mewtwo_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Mewtwo[] = INCBIN_U8("graphics/pokemon/palettes/mewtwo_palette.gbapal.lz"); +const u8 gMonBackPic_Mewtwo[] = INCBIN_U8("graphics/pokemon/back_pics/mewtwo_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Mewtwo[] = INCBIN_U8("graphics/pokemon/palettes/mewtwo_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Mewtwo[] = INCBIN_U8("graphics/pokemon/icons/mewtwo_icon.4bpp"); +const u8 gMonFootprint_Mewtwo[] = INCBIN_U8("graphics/pokemon/footprints/mewtwo_footprint.1bpp"); + +const u8 gMonStillFrontPic_Mew[] = INCBIN_U8("graphics/pokemon/front_pics/mew_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Mew[] = INCBIN_U8("graphics/pokemon/palettes/mew_palette.gbapal.lz"); +const u8 gMonBackPic_Mew[] = INCBIN_U8("graphics/pokemon/back_pics/mew_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Mew[] = INCBIN_U8("graphics/pokemon/palettes/mew_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Mew[] = INCBIN_U8("graphics/pokemon/icons/mew_icon.4bpp"); +const u8 gMonFootprint_Mew[] = INCBIN_U8("graphics/pokemon/footprints/mew_footprint.1bpp"); + +const u8 gMonStillFrontPic_Chikorita[] = INCBIN_U8("graphics/pokemon/front_pics/chikorita_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Chikorita[] = INCBIN_U8("graphics/pokemon/palettes/chikorita_palette.gbapal.lz"); +const u8 gMonBackPic_Chikorita[] = INCBIN_U8("graphics/pokemon/back_pics/chikorita_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Chikorita[] = INCBIN_U8("graphics/pokemon/palettes/chikorita_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Chikorita[] = INCBIN_U8("graphics/pokemon/icons/chikorita_icon.4bpp"); +const u8 gMonFootprint_Chikorita[] = INCBIN_U8("graphics/pokemon/footprints/chikorita_footprint.1bpp"); + +const u8 gMonStillFrontPic_Bayleef[] = INCBIN_U8("graphics/pokemon/front_pics/bayleef_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Bayleef[] = INCBIN_U8("graphics/pokemon/palettes/bayleef_palette.gbapal.lz"); +const u8 gMonBackPic_Bayleef[] = INCBIN_U8("graphics/pokemon/back_pics/bayleef_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Bayleef[] = INCBIN_U8("graphics/pokemon/palettes/bayleef_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Bayleef[] = INCBIN_U8("graphics/pokemon/icons/bayleef_icon.4bpp"); +const u8 gMonFootprint_Bayleef[] = INCBIN_U8("graphics/pokemon/footprints/bayleef_footprint.1bpp"); + +const u8 gMonStillFrontPic_Meganium[] = INCBIN_U8("graphics/pokemon/front_pics/meganium_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Meganium[] = INCBIN_U8("graphics/pokemon/palettes/meganium_palette.gbapal.lz"); +const u8 gMonBackPic_Meganium[] = INCBIN_U8("graphics/pokemon/back_pics/meganium_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Meganium[] = INCBIN_U8("graphics/pokemon/palettes/meganium_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Meganium[] = INCBIN_U8("graphics/pokemon/icons/meganium_icon.4bpp"); +const u8 gMonFootprint_Meganium[] = INCBIN_U8("graphics/pokemon/footprints/meganium_footprint.1bpp"); + +const u8 gMonStillFrontPic_Cyndaquil[] = INCBIN_U8("graphics/pokemon/front_pics/cyndaquil_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Cyndaquil[] = INCBIN_U8("graphics/pokemon/palettes/cyndaquil_palette.gbapal.lz"); +const u8 gMonBackPic_Cyndaquil[] = INCBIN_U8("graphics/pokemon/back_pics/cyndaquil_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Cyndaquil[] = INCBIN_U8("graphics/pokemon/palettes/cyndaquil_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Cyndaquil[] = INCBIN_U8("graphics/pokemon/icons/cyndaquil_icon.4bpp"); +const u8 gMonFootprint_Cyndaquil[] = INCBIN_U8("graphics/pokemon/footprints/cyndaquil_footprint.1bpp"); + +const u8 gMonStillFrontPic_Quilava[] = INCBIN_U8("graphics/pokemon/front_pics/quilava_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Quilava[] = INCBIN_U8("graphics/pokemon/palettes/quilava_palette.gbapal.lz"); +const u8 gMonBackPic_Quilava[] = INCBIN_U8("graphics/pokemon/back_pics/quilava_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Quilava[] = INCBIN_U8("graphics/pokemon/palettes/quilava_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Quilava[] = INCBIN_U8("graphics/pokemon/icons/quilava_icon.4bpp"); +const u8 gMonFootprint_Quilava[] = INCBIN_U8("graphics/pokemon/footprints/quilava_footprint.1bpp"); + +const u8 gMonStillFrontPic_Typhlosion[] = INCBIN_U8("graphics/pokemon/front_pics/typhlosion_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Typhlosion[] = INCBIN_U8("graphics/pokemon/palettes/typhlosion_palette.gbapal.lz"); +const u8 gMonBackPic_Typhlosion[] = INCBIN_U8("graphics/pokemon/back_pics/typhlosion_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Typhlosion[] = INCBIN_U8("graphics/pokemon/palettes/typhlosion_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Typhlosion[] = INCBIN_U8("graphics/pokemon/icons/typhlosion_icon.4bpp"); +const u8 gMonFootprint_Typhlosion[] = INCBIN_U8("graphics/pokemon/footprints/typhlosion_footprint.1bpp"); + +const u8 gMonStillFrontPic_Totodile[] = INCBIN_U8("graphics/pokemon/front_pics/totodile_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Totodile[] = INCBIN_U8("graphics/pokemon/palettes/totodile_palette.gbapal.lz"); +const u8 gMonBackPic_Totodile[] = INCBIN_U8("graphics/pokemon/back_pics/totodile_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Totodile[] = INCBIN_U8("graphics/pokemon/palettes/totodile_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Totodile[] = INCBIN_U8("graphics/pokemon/icons/totodile_icon.4bpp"); +const u8 gMonFootprint_Totodile[] = INCBIN_U8("graphics/pokemon/footprints/totodile_footprint.1bpp"); + +const u8 gMonStillFrontPic_Croconaw[] = INCBIN_U8("graphics/pokemon/front_pics/croconaw_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Croconaw[] = INCBIN_U8("graphics/pokemon/palettes/croconaw_palette.gbapal.lz"); +const u8 gMonBackPic_Croconaw[] = INCBIN_U8("graphics/pokemon/back_pics/croconaw_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Croconaw[] = INCBIN_U8("graphics/pokemon/palettes/croconaw_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Croconaw[] = INCBIN_U8("graphics/pokemon/icons/croconaw_icon.4bpp"); +const u8 gMonFootprint_Croconaw[] = INCBIN_U8("graphics/pokemon/footprints/croconaw_footprint.1bpp"); + +const u8 gMonStillFrontPic_Feraligatr[] = INCBIN_U8("graphics/pokemon/front_pics/feraligatr_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Feraligatr[] = INCBIN_U8("graphics/pokemon/palettes/feraligatr_palette.gbapal.lz"); +const u8 gMonBackPic_Feraligatr[] = INCBIN_U8("graphics/pokemon/back_pics/feraligatr_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Feraligatr[] = INCBIN_U8("graphics/pokemon/palettes/feraligatr_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Feraligatr[] = INCBIN_U8("graphics/pokemon/icons/feraligatr_icon.4bpp"); +const u8 gMonFootprint_Feraligatr[] = INCBIN_U8("graphics/pokemon/footprints/feraligatr_footprint.1bpp"); + +const u8 gMonStillFrontPic_Sentret[] = INCBIN_U8("graphics/pokemon/front_pics/sentret_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Sentret[] = INCBIN_U8("graphics/pokemon/palettes/sentret_palette.gbapal.lz"); +const u8 gMonBackPic_Sentret[] = INCBIN_U8("graphics/pokemon/back_pics/sentret_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Sentret[] = INCBIN_U8("graphics/pokemon/palettes/sentret_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Sentret[] = INCBIN_U8("graphics/pokemon/icons/sentret_icon.4bpp"); +const u8 gMonFootprint_Sentret[] = INCBIN_U8("graphics/pokemon/footprints/sentret_footprint.1bpp"); + +const u8 gMonStillFrontPic_Furret[] = INCBIN_U8("graphics/pokemon/front_pics/furret_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Furret[] = INCBIN_U8("graphics/pokemon/palettes/furret_palette.gbapal.lz"); +const u8 gMonBackPic_Furret[] = INCBIN_U8("graphics/pokemon/back_pics/furret_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Furret[] = INCBIN_U8("graphics/pokemon/palettes/furret_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Furret[] = INCBIN_U8("graphics/pokemon/icons/furret_icon.4bpp"); +const u8 gMonFootprint_Furret[] = INCBIN_U8("graphics/pokemon/footprints/furret_footprint.1bpp"); + +const u8 gMonStillFrontPic_Hoothoot[] = INCBIN_U8("graphics/pokemon/front_pics/hoothoot_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Hoothoot[] = INCBIN_U8("graphics/pokemon/palettes/hoothoot_palette.gbapal.lz"); +const u8 gMonBackPic_Hoothoot[] = INCBIN_U8("graphics/pokemon/back_pics/hoothoot_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Hoothoot[] = INCBIN_U8("graphics/pokemon/palettes/hoothoot_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Hoothoot[] = INCBIN_U8("graphics/pokemon/icons/hoothoot_icon.4bpp"); +const u8 gMonFootprint_Hoothoot[] = INCBIN_U8("graphics/pokemon/footprints/hoothoot_footprint.1bpp"); + +const u8 gMonStillFrontPic_Noctowl[] = INCBIN_U8("graphics/pokemon/front_pics/noctowl_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Noctowl[] = INCBIN_U8("graphics/pokemon/palettes/noctowl_palette.gbapal.lz"); +const u8 gMonBackPic_Noctowl[] = INCBIN_U8("graphics/pokemon/back_pics/noctowl_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Noctowl[] = INCBIN_U8("graphics/pokemon/palettes/noctowl_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Noctowl[] = INCBIN_U8("graphics/pokemon/icons/noctowl_icon.4bpp"); +const u8 gMonFootprint_Noctowl[] = INCBIN_U8("graphics/pokemon/footprints/noctowl_footprint.1bpp"); + +const u8 gMonStillFrontPic_Ledyba[] = INCBIN_U8("graphics/pokemon/front_pics/ledyba_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Ledyba[] = INCBIN_U8("graphics/pokemon/palettes/ledyba_palette.gbapal.lz"); +const u8 gMonBackPic_Ledyba[] = INCBIN_U8("graphics/pokemon/back_pics/ledyba_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Ledyba[] = INCBIN_U8("graphics/pokemon/palettes/ledyba_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Ledyba[] = INCBIN_U8("graphics/pokemon/icons/ledyba_icon.4bpp"); +const u8 gMonFootprint_Ledyba[] = INCBIN_U8("graphics/pokemon/footprints/ledyba_footprint.1bpp"); + +const u8 gMonStillFrontPic_Ledian[] = INCBIN_U8("graphics/pokemon/front_pics/ledian_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Ledian[] = INCBIN_U8("graphics/pokemon/palettes/ledian_palette.gbapal.lz"); +const u8 gMonBackPic_Ledian[] = INCBIN_U8("graphics/pokemon/back_pics/ledian_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Ledian[] = INCBIN_U8("graphics/pokemon/palettes/ledian_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Ledian[] = INCBIN_U8("graphics/pokemon/icons/ledian_icon.4bpp"); +const u8 gMonFootprint_Ledian[] = INCBIN_U8("graphics/pokemon/footprints/ledian_footprint.1bpp"); + +const u8 gMonStillFrontPic_Spinarak[] = INCBIN_U8("graphics/pokemon/front_pics/spinarak_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Spinarak[] = INCBIN_U8("graphics/pokemon/palettes/spinarak_palette.gbapal.lz"); +const u8 gMonBackPic_Spinarak[] = INCBIN_U8("graphics/pokemon/back_pics/spinarak_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Spinarak[] = INCBIN_U8("graphics/pokemon/palettes/spinarak_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Spinarak[] = INCBIN_U8("graphics/pokemon/icons/spinarak_icon.4bpp"); +const u8 gMonFootprint_Spinarak[] = INCBIN_U8("graphics/pokemon/footprints/spinarak_footprint.1bpp"); + +const u8 gMonStillFrontPic_Ariados[] = INCBIN_U8("graphics/pokemon/front_pics/ariados_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Ariados[] = INCBIN_U8("graphics/pokemon/palettes/ariados_palette.gbapal.lz"); +const u8 gMonBackPic_Ariados[] = INCBIN_U8("graphics/pokemon/back_pics/ariados_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Ariados[] = INCBIN_U8("graphics/pokemon/palettes/ariados_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Ariados[] = INCBIN_U8("graphics/pokemon/icons/ariados_icon.4bpp"); +const u8 gMonFootprint_Ariados[] = INCBIN_U8("graphics/pokemon/footprints/ariados_footprint.1bpp"); + +const u8 gMonStillFrontPic_Crobat[] = INCBIN_U8("graphics/pokemon/front_pics/crobat_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Crobat[] = INCBIN_U8("graphics/pokemon/palettes/crobat_palette.gbapal.lz"); +const u8 gMonBackPic_Crobat[] = INCBIN_U8("graphics/pokemon/back_pics/crobat_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Crobat[] = INCBIN_U8("graphics/pokemon/palettes/crobat_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Crobat[] = INCBIN_U8("graphics/pokemon/icons/crobat_icon.4bpp"); +const u8 gMonFootprint_Crobat[] = INCBIN_U8("graphics/pokemon/footprints/crobat_footprint.1bpp"); + +const u8 gMonStillFrontPic_Chinchou[] = INCBIN_U8("graphics/pokemon/front_pics/chinchou_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Chinchou[] = INCBIN_U8("graphics/pokemon/palettes/chinchou_palette.gbapal.lz"); +const u8 gMonBackPic_Chinchou[] = INCBIN_U8("graphics/pokemon/back_pics/chinchou_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Chinchou[] = INCBIN_U8("graphics/pokemon/palettes/chinchou_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Chinchou[] = INCBIN_U8("graphics/pokemon/icons/chinchou_icon.4bpp"); +const u8 gMonFootprint_Chinchou[] = INCBIN_U8("graphics/pokemon/footprints/chinchou_footprint.1bpp"); + +const u8 gMonStillFrontPic_Lanturn[] = INCBIN_U8("graphics/pokemon/front_pics/lanturn_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Lanturn[] = INCBIN_U8("graphics/pokemon/palettes/lanturn_palette.gbapal.lz"); +const u8 gMonBackPic_Lanturn[] = INCBIN_U8("graphics/pokemon/back_pics/lanturn_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Lanturn[] = INCBIN_U8("graphics/pokemon/palettes/lanturn_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Lanturn[] = INCBIN_U8("graphics/pokemon/icons/lanturn_icon.4bpp"); +const u8 gMonFootprint_Lanturn[] = INCBIN_U8("graphics/pokemon/footprints/lanturn_footprint.1bpp"); + +const u8 gMonStillFrontPic_Pichu[] = INCBIN_U8("graphics/pokemon/front_pics/pichu_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Pichu[] = INCBIN_U8("graphics/pokemon/palettes/pichu_palette.gbapal.lz"); +const u8 gMonBackPic_Pichu[] = INCBIN_U8("graphics/pokemon/back_pics/pichu_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Pichu[] = INCBIN_U8("graphics/pokemon/palettes/pichu_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Pichu[] = INCBIN_U8("graphics/pokemon/icons/pichu_icon.4bpp"); +const u8 gMonFootprint_Pichu[] = INCBIN_U8("graphics/pokemon/footprints/pichu_footprint.1bpp"); + +const u8 gMonStillFrontPic_Cleffa[] = INCBIN_U8("graphics/pokemon/front_pics/cleffa_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Cleffa[] = INCBIN_U8("graphics/pokemon/palettes/cleffa_palette.gbapal.lz"); +const u8 gMonBackPic_Cleffa[] = INCBIN_U8("graphics/pokemon/back_pics/cleffa_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Cleffa[] = INCBIN_U8("graphics/pokemon/palettes/cleffa_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Cleffa[] = INCBIN_U8("graphics/pokemon/icons/cleffa_icon.4bpp"); +const u8 gMonFootprint_Cleffa[] = INCBIN_U8("graphics/pokemon/footprints/cleffa_footprint.1bpp"); + +const u8 gMonStillFrontPic_Igglybuff[] = INCBIN_U8("graphics/pokemon/front_pics/igglybuff_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Igglybuff[] = INCBIN_U8("graphics/pokemon/palettes/igglybuff_palette.gbapal.lz"); +const u8 gMonBackPic_Igglybuff[] = INCBIN_U8("graphics/pokemon/back_pics/igglybuff_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Igglybuff[] = INCBIN_U8("graphics/pokemon/palettes/igglybuff_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Igglybuff[] = INCBIN_U8("graphics/pokemon/icons/igglybuff_icon.4bpp"); +const u8 gMonFootprint_Igglybuff[] = INCBIN_U8("graphics/pokemon/footprints/igglybuff_footprint.1bpp"); + +const u8 gMonStillFrontPic_Togepi[] = INCBIN_U8("graphics/pokemon/front_pics/togepi_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Togepi[] = INCBIN_U8("graphics/pokemon/palettes/togepi_palette.gbapal.lz"); +const u8 gMonBackPic_Togepi[] = INCBIN_U8("graphics/pokemon/back_pics/togepi_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Togepi[] = INCBIN_U8("graphics/pokemon/palettes/togepi_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Togepi[] = INCBIN_U8("graphics/pokemon/icons/togepi_icon.4bpp"); +const u8 gMonFootprint_Togepi[] = INCBIN_U8("graphics/pokemon/footprints/togepi_footprint.1bpp"); + +const u8 gMonStillFrontPic_Togetic[] = INCBIN_U8("graphics/pokemon/front_pics/togetic_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Togetic[] = INCBIN_U8("graphics/pokemon/palettes/togetic_palette.gbapal.lz"); +const u8 gMonBackPic_Togetic[] = INCBIN_U8("graphics/pokemon/back_pics/togetic_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Togetic[] = INCBIN_U8("graphics/pokemon/palettes/togetic_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Togetic[] = INCBIN_U8("graphics/pokemon/icons/togetic_icon.4bpp"); +const u8 gMonFootprint_Togetic[] = INCBIN_U8("graphics/pokemon/footprints/togetic_footprint.1bpp"); + +const u8 gMonStillFrontPic_Natu[] = INCBIN_U8("graphics/pokemon/front_pics/natu_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Natu[] = INCBIN_U8("graphics/pokemon/palettes/natu_palette.gbapal.lz"); +const u8 gMonBackPic_Natu[] = INCBIN_U8("graphics/pokemon/back_pics/natu_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Natu[] = INCBIN_U8("graphics/pokemon/palettes/natu_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Natu[] = INCBIN_U8("graphics/pokemon/icons/natu_icon.4bpp"); +const u8 gMonFootprint_Natu[] = INCBIN_U8("graphics/pokemon/footprints/natu_footprint.1bpp"); + +const u8 gMonStillFrontPic_Xatu[] = INCBIN_U8("graphics/pokemon/front_pics/xatu_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Xatu[] = INCBIN_U8("graphics/pokemon/palettes/xatu_palette.gbapal.lz"); +const u8 gMonBackPic_Xatu[] = INCBIN_U8("graphics/pokemon/back_pics/xatu_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Xatu[] = INCBIN_U8("graphics/pokemon/palettes/xatu_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Xatu[] = INCBIN_U8("graphics/pokemon/icons/xatu_icon.4bpp"); +const u8 gMonFootprint_Xatu[] = INCBIN_U8("graphics/pokemon/footprints/xatu_footprint.1bpp"); + +const u8 gMonStillFrontPic_Mareep[] = INCBIN_U8("graphics/pokemon/front_pics/mareep_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Mareep[] = INCBIN_U8("graphics/pokemon/palettes/mareep_palette.gbapal.lz"); +const u8 gMonBackPic_Mareep[] = INCBIN_U8("graphics/pokemon/back_pics/mareep_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Mareep[] = INCBIN_U8("graphics/pokemon/palettes/mareep_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Mareep[] = INCBIN_U8("graphics/pokemon/icons/mareep_icon.4bpp"); +const u8 gMonFootprint_Mareep[] = INCBIN_U8("graphics/pokemon/footprints/mareep_footprint.1bpp"); + +const u8 gMonStillFrontPic_Flaaffy[] = INCBIN_U8("graphics/pokemon/front_pics/flaaffy_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Flaaffy[] = INCBIN_U8("graphics/pokemon/palettes/flaaffy_palette.gbapal.lz"); +const u8 gMonBackPic_Flaaffy[] = INCBIN_U8("graphics/pokemon/back_pics/flaaffy_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Flaaffy[] = INCBIN_U8("graphics/pokemon/palettes/flaaffy_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Flaaffy[] = INCBIN_U8("graphics/pokemon/icons/flaaffy_icon.4bpp"); +const u8 gMonFootprint_Flaaffy[] = INCBIN_U8("graphics/pokemon/footprints/flaaffy_footprint.1bpp"); + +const u8 gMonStillFrontPic_Ampharos[] = INCBIN_U8("graphics/pokemon/front_pics/ampharos_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Ampharos[] = INCBIN_U8("graphics/pokemon/palettes/ampharos_palette.gbapal.lz"); +const u8 gMonBackPic_Ampharos[] = INCBIN_U8("graphics/pokemon/back_pics/ampharos_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Ampharos[] = INCBIN_U8("graphics/pokemon/palettes/ampharos_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Ampharos[] = INCBIN_U8("graphics/pokemon/icons/ampharos_icon.4bpp"); +const u8 gMonFootprint_Ampharos[] = INCBIN_U8("graphics/pokemon/footprints/ampharos_footprint.1bpp"); + +const u8 gMonStillFrontPic_Bellossom[] = INCBIN_U8("graphics/pokemon/front_pics/bellossom_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Bellossom[] = INCBIN_U8("graphics/pokemon/palettes/bellossom_palette.gbapal.lz"); +const u8 gMonBackPic_Bellossom[] = INCBIN_U8("graphics/pokemon/back_pics/bellossom_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Bellossom[] = INCBIN_U8("graphics/pokemon/palettes/bellossom_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Bellossom[] = INCBIN_U8("graphics/pokemon/icons/bellossom_icon.4bpp"); +const u8 gMonFootprint_Bellossom[] = INCBIN_U8("graphics/pokemon/footprints/bellossom_footprint.1bpp"); + +const u8 gMonStillFrontPic_Marill[] = INCBIN_U8("graphics/pokemon/front_pics/marill_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Marill[] = INCBIN_U8("graphics/pokemon/palettes/marill_palette.gbapal.lz"); +const u8 gMonBackPic_Marill[] = INCBIN_U8("graphics/pokemon/back_pics/marill_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Marill[] = INCBIN_U8("graphics/pokemon/palettes/marill_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Marill[] = INCBIN_U8("graphics/pokemon/icons/marill_icon.4bpp"); +const u8 gMonFootprint_Marill[] = INCBIN_U8("graphics/pokemon/footprints/marill_footprint.1bpp"); + +const u8 gMonStillFrontPic_Azumarill[] = INCBIN_U8("graphics/pokemon/front_pics/azumarill_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Azumarill[] = INCBIN_U8("graphics/pokemon/palettes/azumarill_palette.gbapal.lz"); +const u8 gMonBackPic_Azumarill[] = INCBIN_U8("graphics/pokemon/back_pics/azumarill_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Azumarill[] = INCBIN_U8("graphics/pokemon/palettes/azumarill_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Azumarill[] = INCBIN_U8("graphics/pokemon/icons/azumarill_icon.4bpp"); +const u8 gMonFootprint_Azumarill[] = INCBIN_U8("graphics/pokemon/footprints/azumarill_footprint.1bpp"); + +const u8 gMonStillFrontPic_Sudowoodo[] = INCBIN_U8("graphics/pokemon/front_pics/sudowoodo_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Sudowoodo[] = INCBIN_U8("graphics/pokemon/palettes/sudowoodo_palette.gbapal.lz"); +const u8 gMonBackPic_Sudowoodo[] = INCBIN_U8("graphics/pokemon/back_pics/sudowoodo_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Sudowoodo[] = INCBIN_U8("graphics/pokemon/palettes/sudowoodo_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Sudowoodo[] = INCBIN_U8("graphics/pokemon/icons/sudowoodo_icon.4bpp"); +const u8 gMonFootprint_Sudowoodo[] = INCBIN_U8("graphics/pokemon/footprints/sudowoodo_footprint.1bpp"); + +const u8 gMonStillFrontPic_Politoed[] = INCBIN_U8("graphics/pokemon/front_pics/politoed_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Politoed[] = INCBIN_U8("graphics/pokemon/palettes/politoed_palette.gbapal.lz"); +const u8 gMonBackPic_Politoed[] = INCBIN_U8("graphics/pokemon/back_pics/politoed_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Politoed[] = INCBIN_U8("graphics/pokemon/palettes/politoed_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Politoed[] = INCBIN_U8("graphics/pokemon/icons/politoed_icon.4bpp"); +const u8 gMonFootprint_Politoed[] = INCBIN_U8("graphics/pokemon/footprints/politoed_footprint.1bpp"); + +const u8 gMonStillFrontPic_Hoppip[] = INCBIN_U8("graphics/pokemon/front_pics/hoppip_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Hoppip[] = INCBIN_U8("graphics/pokemon/palettes/hoppip_palette.gbapal.lz"); +const u8 gMonBackPic_Hoppip[] = INCBIN_U8("graphics/pokemon/back_pics/hoppip_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Hoppip[] = INCBIN_U8("graphics/pokemon/palettes/hoppip_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Hoppip[] = INCBIN_U8("graphics/pokemon/icons/hoppip_icon.4bpp"); +const u8 gMonFootprint_Hoppip[] = INCBIN_U8("graphics/pokemon/footprints/hoppip_footprint.1bpp"); + +const u8 gMonStillFrontPic_Skiploom[] = INCBIN_U8("graphics/pokemon/front_pics/skiploom_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Skiploom[] = INCBIN_U8("graphics/pokemon/palettes/skiploom_palette.gbapal.lz"); +const u8 gMonBackPic_Skiploom[] = INCBIN_U8("graphics/pokemon/back_pics/skiploom_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Skiploom[] = INCBIN_U8("graphics/pokemon/palettes/skiploom_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Skiploom[] = INCBIN_U8("graphics/pokemon/icons/skiploom_icon.4bpp"); +const u8 gMonFootprint_Skiploom[] = INCBIN_U8("graphics/pokemon/footprints/skiploom_footprint.1bpp"); + +const u8 gMonStillFrontPic_Jumpluff[] = INCBIN_U8("graphics/pokemon/front_pics/jumpluff_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Jumpluff[] = INCBIN_U8("graphics/pokemon/palettes/jumpluff_palette.gbapal.lz"); +const u8 gMonBackPic_Jumpluff[] = INCBIN_U8("graphics/pokemon/back_pics/jumpluff_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Jumpluff[] = INCBIN_U8("graphics/pokemon/palettes/jumpluff_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Jumpluff[] = INCBIN_U8("graphics/pokemon/icons/jumpluff_icon.4bpp"); +const u8 gMonFootprint_Jumpluff[] = INCBIN_U8("graphics/pokemon/footprints/jumpluff_footprint.1bpp"); + +const u8 gMonStillFrontPic_Aipom[] = INCBIN_U8("graphics/pokemon/front_pics/aipom_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Aipom[] = INCBIN_U8("graphics/pokemon/palettes/aipom_palette.gbapal.lz"); +const u8 gMonBackPic_Aipom[] = INCBIN_U8("graphics/pokemon/back_pics/aipom_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Aipom[] = INCBIN_U8("graphics/pokemon/palettes/aipom_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Aipom[] = INCBIN_U8("graphics/pokemon/icons/aipom_icon.4bpp"); +const u8 gMonFootprint_Aipom[] = INCBIN_U8("graphics/pokemon/footprints/aipom_footprint.1bpp"); + +const u8 gMonStillFrontPic_Sunkern[] = INCBIN_U8("graphics/pokemon/front_pics/sunkern_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Sunkern[] = INCBIN_U8("graphics/pokemon/palettes/sunkern_palette.gbapal.lz"); +const u8 gMonBackPic_Sunkern[] = INCBIN_U8("graphics/pokemon/back_pics/sunkern_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Sunkern[] = INCBIN_U8("graphics/pokemon/palettes/sunkern_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Sunkern[] = INCBIN_U8("graphics/pokemon/icons/sunkern_icon.4bpp"); +const u8 gMonFootprint_Sunkern[] = INCBIN_U8("graphics/pokemon/footprints/sunkern_footprint.1bpp"); + +const u8 gMonStillFrontPic_Sunflora[] = INCBIN_U8("graphics/pokemon/front_pics/sunflora_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Sunflora[] = INCBIN_U8("graphics/pokemon/palettes/sunflora_palette.gbapal.lz"); +const u8 gMonBackPic_Sunflora[] = INCBIN_U8("graphics/pokemon/back_pics/sunflora_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Sunflora[] = INCBIN_U8("graphics/pokemon/palettes/sunflora_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Sunflora[] = INCBIN_U8("graphics/pokemon/icons/sunflora_icon.4bpp"); +const u8 gMonFootprint_Sunflora[] = INCBIN_U8("graphics/pokemon/footprints/sunflora_footprint.1bpp"); + +const u8 gMonStillFrontPic_Yanma[] = INCBIN_U8("graphics/pokemon/front_pics/yanma_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Yanma[] = INCBIN_U8("graphics/pokemon/palettes/yanma_palette.gbapal.lz"); +const u8 gMonBackPic_Yanma[] = INCBIN_U8("graphics/pokemon/back_pics/yanma_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Yanma[] = INCBIN_U8("graphics/pokemon/palettes/yanma_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Yanma[] = INCBIN_U8("graphics/pokemon/icons/yanma_icon.4bpp"); +const u8 gMonFootprint_Yanma[] = INCBIN_U8("graphics/pokemon/footprints/yanma_footprint.1bpp"); + +const u8 gMonStillFrontPic_Wooper[] = INCBIN_U8("graphics/pokemon/front_pics/wooper_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Wooper[] = INCBIN_U8("graphics/pokemon/palettes/wooper_palette.gbapal.lz"); +const u8 gMonBackPic_Wooper[] = INCBIN_U8("graphics/pokemon/back_pics/wooper_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Wooper[] = INCBIN_U8("graphics/pokemon/palettes/wooper_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Wooper[] = INCBIN_U8("graphics/pokemon/icons/wooper_icon.4bpp"); +const u8 gMonFootprint_Wooper[] = INCBIN_U8("graphics/pokemon/footprints/wooper_footprint.1bpp"); + +const u8 gMonStillFrontPic_Quagsire[] = INCBIN_U8("graphics/pokemon/front_pics/quagsire_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Quagsire[] = INCBIN_U8("graphics/pokemon/palettes/quagsire_palette.gbapal.lz"); +const u8 gMonBackPic_Quagsire[] = INCBIN_U8("graphics/pokemon/back_pics/quagsire_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Quagsire[] = INCBIN_U8("graphics/pokemon/palettes/quagsire_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Quagsire[] = INCBIN_U8("graphics/pokemon/icons/quagsire_icon.4bpp"); +const u8 gMonFootprint_Quagsire[] = INCBIN_U8("graphics/pokemon/footprints/quagsire_footprint.1bpp"); + +const u8 gMonStillFrontPic_Espeon[] = INCBIN_U8("graphics/pokemon/front_pics/espeon_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Espeon[] = INCBIN_U8("graphics/pokemon/palettes/espeon_palette.gbapal.lz"); +const u8 gMonBackPic_Espeon[] = INCBIN_U8("graphics/pokemon/back_pics/espeon_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Espeon[] = INCBIN_U8("graphics/pokemon/palettes/espeon_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Espeon[] = INCBIN_U8("graphics/pokemon/icons/espeon_icon.4bpp"); +const u8 gMonFootprint_Espeon[] = INCBIN_U8("graphics/pokemon/footprints/espeon_footprint.1bpp"); + +const u8 gMonStillFrontPic_Umbreon[] = INCBIN_U8("graphics/pokemon/front_pics/umbreon_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Umbreon[] = INCBIN_U8("graphics/pokemon/palettes/umbreon_palette.gbapal.lz"); +const u8 gMonBackPic_Umbreon[] = INCBIN_U8("graphics/pokemon/back_pics/umbreon_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Umbreon[] = INCBIN_U8("graphics/pokemon/palettes/umbreon_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Umbreon[] = INCBIN_U8("graphics/pokemon/icons/umbreon_icon.4bpp"); +const u8 gMonFootprint_Umbreon[] = INCBIN_U8("graphics/pokemon/footprints/umbreon_footprint.1bpp"); + +const u8 gMonStillFrontPic_Murkrow[] = INCBIN_U8("graphics/pokemon/front_pics/murkrow_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Murkrow[] = INCBIN_U8("graphics/pokemon/palettes/murkrow_palette.gbapal.lz"); +const u8 gMonBackPic_Murkrow[] = INCBIN_U8("graphics/pokemon/back_pics/murkrow_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Murkrow[] = INCBIN_U8("graphics/pokemon/palettes/murkrow_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Murkrow[] = INCBIN_U8("graphics/pokemon/icons/murkrow_icon.4bpp"); +const u8 gMonFootprint_Murkrow[] = INCBIN_U8("graphics/pokemon/footprints/murkrow_footprint.1bpp"); + +const u8 gMonStillFrontPic_Slowking[] = INCBIN_U8("graphics/pokemon/front_pics/slowking_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Slowking[] = INCBIN_U8("graphics/pokemon/palettes/slowking_palette.gbapal.lz"); +const u8 gMonBackPic_Slowking[] = INCBIN_U8("graphics/pokemon/back_pics/slowking_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Slowking[] = INCBIN_U8("graphics/pokemon/palettes/slowking_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Slowking[] = INCBIN_U8("graphics/pokemon/icons/slowking_icon.4bpp"); +const u8 gMonFootprint_Slowking[] = INCBIN_U8("graphics/pokemon/footprints/slowking_footprint.1bpp"); + +const u8 gMonStillFrontPic_Misdreavus[] = INCBIN_U8("graphics/pokemon/front_pics/misdreavus_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Misdreavus[] = INCBIN_U8("graphics/pokemon/palettes/misdreavus_palette.gbapal.lz"); +const u8 gMonBackPic_Misdreavus[] = INCBIN_U8("graphics/pokemon/back_pics/misdreavus_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Misdreavus[] = INCBIN_U8("graphics/pokemon/palettes/misdreavus_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Misdreavus[] = INCBIN_U8("graphics/pokemon/icons/misdreavus_icon.4bpp"); +const u8 gMonFootprint_Misdreavus[] = INCBIN_U8("graphics/pokemon/footprints/misdreavus_footprint.1bpp"); + +const u8 gMonStillFrontPic_UnownA[] = INCBIN_U8("graphics/pokemon/front_pics/unown_a_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Unown[] = INCBIN_U8("graphics/pokemon/palettes/unown_palette.gbapal.lz"); +const u8 gMonBackPic_UnownA[] = INCBIN_U8("graphics/pokemon/back_pics/unown_a_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Unown[] = INCBIN_U8("graphics/pokemon/palettes/unown_shiny_palette.gbapal.lz"); +const u8 gMonIcon_UnownA[] = INCBIN_U8("graphics/pokemon/icons/unown_a_icon.4bpp"); +const u8 gMonFootprint_Unown[] = INCBIN_U8("graphics/pokemon/footprints/unown_footprint.1bpp"); + +const u8 gMonStillFrontPic_Wobbuffet[] = INCBIN_U8("graphics/pokemon/front_pics/wobbuffet_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Wobbuffet[] = INCBIN_U8("graphics/pokemon/palettes/wobbuffet_palette.gbapal.lz"); +const u8 gMonBackPic_Wobbuffet[] = INCBIN_U8("graphics/pokemon/back_pics/wobbuffet_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Wobbuffet[] = INCBIN_U8("graphics/pokemon/palettes/wobbuffet_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Wobbuffet[] = INCBIN_U8("graphics/pokemon/icons/wobbuffet_icon.4bpp"); +const u8 gMonFootprint_Wobbuffet[] = INCBIN_U8("graphics/pokemon/footprints/wobbuffet_footprint.1bpp"); + +const u8 gMonStillFrontPic_Girafarig[] = INCBIN_U8("graphics/pokemon/front_pics/girafarig_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Girafarig[] = INCBIN_U8("graphics/pokemon/palettes/girafarig_palette.gbapal.lz"); +const u8 gMonBackPic_Girafarig[] = INCBIN_U8("graphics/pokemon/back_pics/girafarig_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Girafarig[] = INCBIN_U8("graphics/pokemon/palettes/girafarig_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Girafarig[] = INCBIN_U8("graphics/pokemon/icons/girafarig_icon.4bpp"); +const u8 gMonFootprint_Girafarig[] = INCBIN_U8("graphics/pokemon/footprints/girafarig_footprint.1bpp"); + +const u8 gMonStillFrontPic_Pineco[] = INCBIN_U8("graphics/pokemon/front_pics/pineco_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Pineco[] = INCBIN_U8("graphics/pokemon/palettes/pineco_palette.gbapal.lz"); +const u8 gMonBackPic_Pineco[] = INCBIN_U8("graphics/pokemon/back_pics/pineco_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Pineco[] = INCBIN_U8("graphics/pokemon/palettes/pineco_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Pineco[] = INCBIN_U8("graphics/pokemon/icons/pineco_icon.4bpp"); +const u8 gMonFootprint_Pineco[] = INCBIN_U8("graphics/pokemon/footprints/pineco_footprint.1bpp"); + +const u8 gMonStillFrontPic_Forretress[] = INCBIN_U8("graphics/pokemon/front_pics/forretress_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Forretress[] = INCBIN_U8("graphics/pokemon/palettes/forretress_palette.gbapal.lz"); +const u8 gMonBackPic_Forretress[] = INCBIN_U8("graphics/pokemon/back_pics/forretress_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Forretress[] = INCBIN_U8("graphics/pokemon/palettes/forretress_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Forretress[] = INCBIN_U8("graphics/pokemon/icons/forretress_icon.4bpp"); +const u8 gMonFootprint_Forretress[] = INCBIN_U8("graphics/pokemon/footprints/forretress_footprint.1bpp"); + +const u8 gMonStillFrontPic_Dunsparce[] = INCBIN_U8("graphics/pokemon/front_pics/dunsparce_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Dunsparce[] = INCBIN_U8("graphics/pokemon/palettes/dunsparce_palette.gbapal.lz"); +const u8 gMonBackPic_Dunsparce[] = INCBIN_U8("graphics/pokemon/back_pics/dunsparce_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Dunsparce[] = INCBIN_U8("graphics/pokemon/palettes/dunsparce_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Dunsparce[] = INCBIN_U8("graphics/pokemon/icons/dunsparce_icon.4bpp"); +const u8 gMonFootprint_Dunsparce[] = INCBIN_U8("graphics/pokemon/footprints/dunsparce_footprint.1bpp"); + +const u8 gMonStillFrontPic_Gligar[] = INCBIN_U8("graphics/pokemon/front_pics/gligar_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Gligar[] = INCBIN_U8("graphics/pokemon/palettes/gligar_palette.gbapal.lz"); +const u8 gMonBackPic_Gligar[] = INCBIN_U8("graphics/pokemon/back_pics/gligar_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Gligar[] = INCBIN_U8("graphics/pokemon/palettes/gligar_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Gligar[] = INCBIN_U8("graphics/pokemon/icons/gligar_icon.4bpp"); +const u8 gMonFootprint_Gligar[] = INCBIN_U8("graphics/pokemon/footprints/gligar_footprint.1bpp"); + +const u8 gMonStillFrontPic_Steelix[] = INCBIN_U8("graphics/pokemon/front_pics/steelix_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Steelix[] = INCBIN_U8("graphics/pokemon/palettes/steelix_palette.gbapal.lz"); +const u8 gMonBackPic_Steelix[] = INCBIN_U8("graphics/pokemon/back_pics/steelix_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Steelix[] = INCBIN_U8("graphics/pokemon/palettes/steelix_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Steelix[] = INCBIN_U8("graphics/pokemon/icons/steelix_icon.4bpp"); +const u8 gMonFootprint_Steelix[] = INCBIN_U8("graphics/pokemon/footprints/steelix_footprint.1bpp"); + +const u8 gMonStillFrontPic_Snubbull[] = INCBIN_U8("graphics/pokemon/front_pics/snubbull_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Snubbull[] = INCBIN_U8("graphics/pokemon/palettes/snubbull_palette.gbapal.lz"); +const u8 gMonBackPic_Snubbull[] = INCBIN_U8("graphics/pokemon/back_pics/snubbull_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Snubbull[] = INCBIN_U8("graphics/pokemon/palettes/snubbull_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Snubbull[] = INCBIN_U8("graphics/pokemon/icons/snubbull_icon.4bpp"); +const u8 gMonFootprint_Snubbull[] = INCBIN_U8("graphics/pokemon/footprints/snubbull_footprint.1bpp"); + +const u8 gMonStillFrontPic_Granbull[] = INCBIN_U8("graphics/pokemon/front_pics/granbull_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Granbull[] = INCBIN_U8("graphics/pokemon/palettes/granbull_palette.gbapal.lz"); +const u8 gMonBackPic_Granbull[] = INCBIN_U8("graphics/pokemon/back_pics/granbull_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Granbull[] = INCBIN_U8("graphics/pokemon/palettes/granbull_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Granbull[] = INCBIN_U8("graphics/pokemon/icons/granbull_icon.4bpp"); +const u8 gMonFootprint_Granbull[] = INCBIN_U8("graphics/pokemon/footprints/granbull_footprint.1bpp"); + +const u8 gMonStillFrontPic_Qwilfish[] = INCBIN_U8("graphics/pokemon/front_pics/qwilfish_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Qwilfish[] = INCBIN_U8("graphics/pokemon/palettes/qwilfish_palette.gbapal.lz"); +const u8 gMonBackPic_Qwilfish[] = INCBIN_U8("graphics/pokemon/back_pics/qwilfish_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Qwilfish[] = INCBIN_U8("graphics/pokemon/palettes/qwilfish_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Qwilfish[] = INCBIN_U8("graphics/pokemon/icons/qwilfish_icon.4bpp"); +const u8 gMonFootprint_Qwilfish[] = INCBIN_U8("graphics/pokemon/footprints/qwilfish_footprint.1bpp"); + +const u8 gMonStillFrontPic_Scizor[] = INCBIN_U8("graphics/pokemon/front_pics/scizor_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Scizor[] = INCBIN_U8("graphics/pokemon/palettes/scizor_palette.gbapal.lz"); +const u8 gMonBackPic_Scizor[] = INCBIN_U8("graphics/pokemon/back_pics/scizor_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Scizor[] = INCBIN_U8("graphics/pokemon/palettes/scizor_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Scizor[] = INCBIN_U8("graphics/pokemon/icons/scizor_icon.4bpp"); +const u8 gMonFootprint_Scizor[] = INCBIN_U8("graphics/pokemon/footprints/scizor_footprint.1bpp"); + +const u8 gMonStillFrontPic_Shuckle[] = INCBIN_U8("graphics/pokemon/front_pics/shuckle_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Shuckle[] = INCBIN_U8("graphics/pokemon/palettes/shuckle_palette.gbapal.lz"); +const u8 gMonBackPic_Shuckle[] = INCBIN_U8("graphics/pokemon/back_pics/shuckle_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Shuckle[] = INCBIN_U8("graphics/pokemon/palettes/shuckle_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Shuckle[] = INCBIN_U8("graphics/pokemon/icons/shuckle_icon.4bpp"); +const u8 gMonFootprint_Shuckle[] = INCBIN_U8("graphics/pokemon/footprints/shuckle_footprint.1bpp"); + +const u8 gMonStillFrontPic_Heracross[] = INCBIN_U8("graphics/pokemon/front_pics/heracross_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Heracross[] = INCBIN_U8("graphics/pokemon/palettes/heracross_palette.gbapal.lz"); +const u8 gMonBackPic_Heracross[] = INCBIN_U8("graphics/pokemon/back_pics/heracross_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Heracross[] = INCBIN_U8("graphics/pokemon/palettes/heracross_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Heracross[] = INCBIN_U8("graphics/pokemon/icons/heracross_icon.4bpp"); +const u8 gMonFootprint_Heracross[] = INCBIN_U8("graphics/pokemon/footprints/heracross_footprint.1bpp"); + +const u8 gMonStillFrontPic_Sneasel[] = INCBIN_U8("graphics/pokemon/front_pics/sneasel_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Sneasel[] = INCBIN_U8("graphics/pokemon/palettes/sneasel_palette.gbapal.lz"); +const u8 gMonBackPic_Sneasel[] = INCBIN_U8("graphics/pokemon/back_pics/sneasel_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Sneasel[] = INCBIN_U8("graphics/pokemon/palettes/sneasel_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Sneasel[] = INCBIN_U8("graphics/pokemon/icons/sneasel_icon.4bpp"); +const u8 gMonFootprint_Sneasel[] = INCBIN_U8("graphics/pokemon/footprints/sneasel_footprint.1bpp"); + +const u8 gMonStillFrontPic_Teddiursa[] = INCBIN_U8("graphics/pokemon/front_pics/teddiursa_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Teddiursa[] = INCBIN_U8("graphics/pokemon/palettes/teddiursa_palette.gbapal.lz"); +const u8 gMonBackPic_Teddiursa[] = INCBIN_U8("graphics/pokemon/back_pics/teddiursa_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Teddiursa[] = INCBIN_U8("graphics/pokemon/palettes/teddiursa_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Teddiursa[] = INCBIN_U8("graphics/pokemon/icons/teddiursa_icon.4bpp"); +const u8 gMonFootprint_Teddiursa[] = INCBIN_U8("graphics/pokemon/footprints/teddiursa_footprint.1bpp"); +const u8 gMonStillFrontPic_Ursaring[] = INCBIN_U8("graphics/pokemon/front_pics/ursaring_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Ursaring[] = INCBIN_U8("graphics/pokemon/palettes/ursaring_palette.gbapal.lz"); +const u8 gMonBackPic_Ursaring[] = INCBIN_U8("graphics/pokemon/back_pics/ursaring_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Ursaring[] = INCBIN_U8("graphics/pokemon/palettes/ursaring_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Ursaring[] = INCBIN_U8("graphics/pokemon/icons/ursaring_icon.4bpp"); +const u8 gMonFootprint_Ursaring[] = INCBIN_U8("graphics/pokemon/footprints/ursaring_footprint.1bpp"); + +const u8 gMonStillFrontPic_Slugma[] = INCBIN_U8("graphics/pokemon/front_pics/slugma_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Slugma[] = INCBIN_U8("graphics/pokemon/palettes/slugma_palette.gbapal.lz"); +const u8 gMonBackPic_Slugma[] = INCBIN_U8("graphics/pokemon/back_pics/slugma_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Slugma[] = INCBIN_U8("graphics/pokemon/palettes/slugma_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Slugma[] = INCBIN_U8("graphics/pokemon/icons/slugma_icon.4bpp"); +const u8 gMonFootprint_Slugma[] = INCBIN_U8("graphics/pokemon/footprints/slugma_footprint.1bpp"); + +const u8 gMonStillFrontPic_Magcargo[] = INCBIN_U8("graphics/pokemon/front_pics/magcargo_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Magcargo[] = INCBIN_U8("graphics/pokemon/palettes/magcargo_palette.gbapal.lz"); +const u8 gMonBackPic_Magcargo[] = INCBIN_U8("graphics/pokemon/back_pics/magcargo_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Magcargo[] = INCBIN_U8("graphics/pokemon/palettes/magcargo_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Magcargo[] = INCBIN_U8("graphics/pokemon/icons/magcargo_icon.4bpp"); +const u8 gMonFootprint_Magcargo[] = INCBIN_U8("graphics/pokemon/footprints/magcargo_footprint.1bpp"); + +const u8 gMonStillFrontPic_Swinub[] = INCBIN_U8("graphics/pokemon/front_pics/swinub_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Swinub[] = INCBIN_U8("graphics/pokemon/palettes/swinub_palette.gbapal.lz"); +const u8 gMonBackPic_Swinub[] = INCBIN_U8("graphics/pokemon/back_pics/swinub_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Swinub[] = INCBIN_U8("graphics/pokemon/palettes/swinub_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Swinub[] = INCBIN_U8("graphics/pokemon/icons/swinub_icon.4bpp"); +const u8 gMonFootprint_Swinub[] = INCBIN_U8("graphics/pokemon/footprints/swinub_footprint.1bpp"); + +const u8 gMonStillFrontPic_Piloswine[] = INCBIN_U8("graphics/pokemon/front_pics/piloswine_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Piloswine[] = INCBIN_U8("graphics/pokemon/palettes/piloswine_palette.gbapal.lz"); +const u8 gMonBackPic_Piloswine[] = INCBIN_U8("graphics/pokemon/back_pics/piloswine_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Piloswine[] = INCBIN_U8("graphics/pokemon/palettes/piloswine_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Piloswine[] = INCBIN_U8("graphics/pokemon/icons/piloswine_icon.4bpp"); +const u8 gMonFootprint_Piloswine[] = INCBIN_U8("graphics/pokemon/footprints/piloswine_footprint.1bpp"); + +const u8 gMonStillFrontPic_Corsola[] = INCBIN_U8("graphics/pokemon/front_pics/corsola_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Corsola[] = INCBIN_U8("graphics/pokemon/palettes/corsola_palette.gbapal.lz"); +const u8 gMonBackPic_Corsola[] = INCBIN_U8("graphics/pokemon/back_pics/corsola_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Corsola[] = INCBIN_U8("graphics/pokemon/palettes/corsola_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Corsola[] = INCBIN_U8("graphics/pokemon/icons/corsola_icon.4bpp"); +const u8 gMonFootprint_Corsola[] = INCBIN_U8("graphics/pokemon/footprints/corsola_footprint.1bpp"); + +const u8 gMonStillFrontPic_Remoraid[] = INCBIN_U8("graphics/pokemon/front_pics/remoraid_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Remoraid[] = INCBIN_U8("graphics/pokemon/palettes/remoraid_palette.gbapal.lz"); +const u8 gMonBackPic_Remoraid[] = INCBIN_U8("graphics/pokemon/back_pics/remoraid_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Remoraid[] = INCBIN_U8("graphics/pokemon/palettes/remoraid_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Remoraid[] = INCBIN_U8("graphics/pokemon/icons/remoraid_icon.4bpp"); +const u8 gMonFootprint_Remoraid[] = INCBIN_U8("graphics/pokemon/footprints/remoraid_footprint.1bpp"); + +const u8 gMonStillFrontPic_Octillery[] = INCBIN_U8("graphics/pokemon/front_pics/octillery_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Octillery[] = INCBIN_U8("graphics/pokemon/palettes/octillery_palette.gbapal.lz"); +const u8 gMonBackPic_Octillery[] = INCBIN_U8("graphics/pokemon/back_pics/octillery_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Octillery[] = INCBIN_U8("graphics/pokemon/palettes/octillery_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Octillery[] = INCBIN_U8("graphics/pokemon/icons/octillery_icon.4bpp"); +const u8 gMonFootprint_Octillery[] = INCBIN_U8("graphics/pokemon/footprints/octillery_footprint.1bpp"); + +const u8 gMonStillFrontPic_Delibird[] = INCBIN_U8("graphics/pokemon/front_pics/delibird_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Delibird[] = INCBIN_U8("graphics/pokemon/palettes/delibird_palette.gbapal.lz"); +const u8 gMonBackPic_Delibird[] = INCBIN_U8("graphics/pokemon/back_pics/delibird_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Delibird[] = INCBIN_U8("graphics/pokemon/palettes/delibird_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Delibird[] = INCBIN_U8("graphics/pokemon/icons/delibird_icon.4bpp"); +const u8 gMonFootprint_Delibird[] = INCBIN_U8("graphics/pokemon/footprints/delibird_footprint.1bpp"); + +const u8 gMonStillFrontPic_Mantine[] = INCBIN_U8("graphics/pokemon/front_pics/mantine_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Mantine[] = INCBIN_U8("graphics/pokemon/palettes/mantine_palette.gbapal.lz"); +const u8 gMonBackPic_Mantine[] = INCBIN_U8("graphics/pokemon/back_pics/mantine_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Mantine[] = INCBIN_U8("graphics/pokemon/palettes/mantine_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Mantine[] = INCBIN_U8("graphics/pokemon/icons/mantine_icon.4bpp"); +const u8 gMonFootprint_Mantine[] = INCBIN_U8("graphics/pokemon/footprints/mantine_footprint.1bpp"); + +const u8 gMonStillFrontPic_Skarmory[] = INCBIN_U8("graphics/pokemon/front_pics/skarmory_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Skarmory[] = INCBIN_U8("graphics/pokemon/palettes/skarmory_palette.gbapal.lz"); +const u8 gMonBackPic_Skarmory[] = INCBIN_U8("graphics/pokemon/back_pics/skarmory_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Skarmory[] = INCBIN_U8("graphics/pokemon/palettes/skarmory_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Skarmory[] = INCBIN_U8("graphics/pokemon/icons/skarmory_icon.4bpp"); +const u8 gMonFootprint_Skarmory[] = INCBIN_U8("graphics/pokemon/footprints/skarmory_footprint.1bpp"); + +const u8 gMonStillFrontPic_Houndour[] = INCBIN_U8("graphics/pokemon/front_pics/houndour_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Houndour[] = INCBIN_U8("graphics/pokemon/palettes/houndour_palette.gbapal.lz"); +const u8 gMonBackPic_Houndour[] = INCBIN_U8("graphics/pokemon/back_pics/houndour_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Houndour[] = INCBIN_U8("graphics/pokemon/palettes/houndour_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Houndour[] = INCBIN_U8("graphics/pokemon/icons/houndour_icon.4bpp"); +const u8 gMonFootprint_Houndour[] = INCBIN_U8("graphics/pokemon/footprints/houndour_footprint.1bpp"); + +const u8 gMonStillFrontPic_Houndoom[] = INCBIN_U8("graphics/pokemon/front_pics/houndoom_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Houndoom[] = INCBIN_U8("graphics/pokemon/palettes/houndoom_palette.gbapal.lz"); +const u8 gMonBackPic_Houndoom[] = INCBIN_U8("graphics/pokemon/back_pics/houndoom_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Houndoom[] = INCBIN_U8("graphics/pokemon/palettes/houndoom_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Houndoom[] = INCBIN_U8("graphics/pokemon/icons/houndoom_icon.4bpp"); +const u8 gMonFootprint_Houndoom[] = INCBIN_U8("graphics/pokemon/footprints/houndoom_footprint.1bpp"); + +const u8 gMonStillFrontPic_Kingdra[] = INCBIN_U8("graphics/pokemon/front_pics/kingdra_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Kingdra[] = INCBIN_U8("graphics/pokemon/palettes/kingdra_palette.gbapal.lz"); +const u8 gMonBackPic_Kingdra[] = INCBIN_U8("graphics/pokemon/back_pics/kingdra_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Kingdra[] = INCBIN_U8("graphics/pokemon/palettes/kingdra_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Kingdra[] = INCBIN_U8("graphics/pokemon/icons/kingdra_icon.4bpp"); +const u8 gMonFootprint_Kingdra[] = INCBIN_U8("graphics/pokemon/footprints/kingdra_footprint.1bpp"); + +const u8 gMonStillFrontPic_Phanpy[] = INCBIN_U8("graphics/pokemon/front_pics/phanpy_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Phanpy[] = INCBIN_U8("graphics/pokemon/palettes/phanpy_palette.gbapal.lz"); +const u8 gMonBackPic_Phanpy[] = INCBIN_U8("graphics/pokemon/back_pics/phanpy_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Phanpy[] = INCBIN_U8("graphics/pokemon/palettes/phanpy_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Phanpy[] = INCBIN_U8("graphics/pokemon/icons/phanpy_icon.4bpp"); +const u8 gMonFootprint_Phanpy[] = INCBIN_U8("graphics/pokemon/footprints/phanpy_footprint.1bpp"); + +const u8 gMonStillFrontPic_Donphan[] = INCBIN_U8("graphics/pokemon/front_pics/donphan_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Donphan[] = INCBIN_U8("graphics/pokemon/palettes/donphan_palette.gbapal.lz"); +const u8 gMonBackPic_Donphan[] = INCBIN_U8("graphics/pokemon/back_pics/donphan_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Donphan[] = INCBIN_U8("graphics/pokemon/palettes/donphan_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Donphan[] = INCBIN_U8("graphics/pokemon/icons/donphan_icon.4bpp"); +const u8 gMonFootprint_Donphan[] = INCBIN_U8("graphics/pokemon/footprints/donphan_footprint.1bpp"); + +const u8 gMonStillFrontPic_Porygon2[] = INCBIN_U8("graphics/pokemon/front_pics/porygon2_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Porygon2[] = INCBIN_U8("graphics/pokemon/palettes/porygon2_palette.gbapal.lz"); +const u8 gMonBackPic_Porygon2[] = INCBIN_U8("graphics/pokemon/back_pics/porygon2_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Porygon2[] = INCBIN_U8("graphics/pokemon/palettes/porygon2_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Porygon2[] = INCBIN_U8("graphics/pokemon/icons/porygon2_icon.4bpp"); +const u8 gMonFootprint_Porygon2[] = INCBIN_U8("graphics/pokemon/footprints/porygon2_footprint.1bpp"); + +const u8 gMonStillFrontPic_Stantler[] = INCBIN_U8("graphics/pokemon/front_pics/stantler_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Stantler[] = INCBIN_U8("graphics/pokemon/palettes/stantler_palette.gbapal.lz"); +const u8 gMonBackPic_Stantler[] = INCBIN_U8("graphics/pokemon/back_pics/stantler_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Stantler[] = INCBIN_U8("graphics/pokemon/palettes/stantler_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Stantler[] = INCBIN_U8("graphics/pokemon/icons/stantler_icon.4bpp"); +const u8 gMonFootprint_Stantler[] = INCBIN_U8("graphics/pokemon/footprints/stantler_footprint.1bpp"); + +const u8 gMonStillFrontPic_Smeargle[] = INCBIN_U8("graphics/pokemon/front_pics/smeargle_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Smeargle[] = INCBIN_U8("graphics/pokemon/palettes/smeargle_palette.gbapal.lz"); +const u8 gMonBackPic_Smeargle[] = INCBIN_U8("graphics/pokemon/back_pics/smeargle_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Smeargle[] = INCBIN_U8("graphics/pokemon/palettes/smeargle_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Smeargle[] = INCBIN_U8("graphics/pokemon/icons/smeargle_icon.4bpp"); +const u8 gMonFootprint_Smeargle[] = INCBIN_U8("graphics/pokemon/footprints/smeargle_footprint.1bpp"); + +const u8 gMonStillFrontPic_Tyrogue[] = INCBIN_U8("graphics/pokemon/front_pics/tyrogue_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Tyrogue[] = INCBIN_U8("graphics/pokemon/palettes/tyrogue_palette.gbapal.lz"); +const u8 gMonBackPic_Tyrogue[] = INCBIN_U8("graphics/pokemon/back_pics/tyrogue_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Tyrogue[] = INCBIN_U8("graphics/pokemon/palettes/tyrogue_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Tyrogue[] = INCBIN_U8("graphics/pokemon/icons/tyrogue_icon.4bpp"); +const u8 gMonFootprint_Tyrogue[] = INCBIN_U8("graphics/pokemon/footprints/tyrogue_footprint.1bpp"); + +const u8 gMonStillFrontPic_Hitmontop[] = INCBIN_U8("graphics/pokemon/front_pics/hitmontop_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Hitmontop[] = INCBIN_U8("graphics/pokemon/palettes/hitmontop_palette.gbapal.lz"); +const u8 gMonBackPic_Hitmontop[] = INCBIN_U8("graphics/pokemon/back_pics/hitmontop_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Hitmontop[] = INCBIN_U8("graphics/pokemon/palettes/hitmontop_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Hitmontop[] = INCBIN_U8("graphics/pokemon/icons/hitmontop_icon.4bpp"); +const u8 gMonFootprint_Hitmontop[] = INCBIN_U8("graphics/pokemon/footprints/hitmontop_footprint.1bpp"); + +const u8 gMonStillFrontPic_Smoochum[] = INCBIN_U8("graphics/pokemon/front_pics/smoochum_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Smoochum[] = INCBIN_U8("graphics/pokemon/palettes/smoochum_palette.gbapal.lz"); +const u8 gMonBackPic_Smoochum[] = INCBIN_U8("graphics/pokemon/back_pics/smoochum_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Smoochum[] = INCBIN_U8("graphics/pokemon/palettes/smoochum_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Smoochum[] = INCBIN_U8("graphics/pokemon/icons/smoochum_icon.4bpp"); +const u8 gMonFootprint_Smoochum[] = INCBIN_U8("graphics/pokemon/footprints/smoochum_footprint.1bpp"); + +const u8 gMonStillFrontPic_Elekid[] = INCBIN_U8("graphics/pokemon/front_pics/elekid_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Elekid[] = INCBIN_U8("graphics/pokemon/palettes/elekid_palette.gbapal.lz"); +const u8 gMonBackPic_Elekid[] = INCBIN_U8("graphics/pokemon/back_pics/elekid_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Elekid[] = INCBIN_U8("graphics/pokemon/palettes/elekid_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Elekid[] = INCBIN_U8("graphics/pokemon/icons/elekid_icon.4bpp"); +const u8 gMonFootprint_Elekid[] = INCBIN_U8("graphics/pokemon/footprints/elekid_footprint.1bpp"); + +const u8 gMonStillFrontPic_Magby[] = INCBIN_U8("graphics/pokemon/front_pics/magby_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Magby[] = INCBIN_U8("graphics/pokemon/palettes/magby_palette.gbapal.lz"); +const u8 gMonBackPic_Magby[] = INCBIN_U8("graphics/pokemon/back_pics/magby_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Magby[] = INCBIN_U8("graphics/pokemon/palettes/magby_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Magby[] = INCBIN_U8("graphics/pokemon/icons/magby_icon.4bpp"); +const u8 gMonFootprint_Magby[] = INCBIN_U8("graphics/pokemon/footprints/magby_footprint.1bpp"); + +const u8 gMonStillFrontPic_Miltank[] = INCBIN_U8("graphics/pokemon/front_pics/miltank_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Miltank[] = INCBIN_U8("graphics/pokemon/palettes/miltank_palette.gbapal.lz"); +const u8 gMonBackPic_Miltank[] = INCBIN_U8("graphics/pokemon/back_pics/miltank_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Miltank[] = INCBIN_U8("graphics/pokemon/palettes/miltank_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Miltank[] = INCBIN_U8("graphics/pokemon/icons/miltank_icon.4bpp"); +const u8 gMonFootprint_Miltank[] = INCBIN_U8("graphics/pokemon/footprints/miltank_footprint.1bpp"); + +const u8 gMonStillFrontPic_Blissey[] = INCBIN_U8("graphics/pokemon/front_pics/blissey_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Blissey[] = INCBIN_U8("graphics/pokemon/palettes/blissey_palette.gbapal.lz"); +const u8 gMonBackPic_Blissey[] = INCBIN_U8("graphics/pokemon/back_pics/blissey_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Blissey[] = INCBIN_U8("graphics/pokemon/palettes/blissey_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Blissey[] = INCBIN_U8("graphics/pokemon/icons/blissey_icon.4bpp"); +const u8 gMonFootprint_Blissey[] = INCBIN_U8("graphics/pokemon/footprints/blissey_footprint.1bpp"); + +const u8 gMonStillFrontPic_Raikou[] = INCBIN_U8("graphics/pokemon/front_pics/raikou_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Raikou[] = INCBIN_U8("graphics/pokemon/palettes/raikou_palette.gbapal.lz"); +const u8 gMonBackPic_Raikou[] = INCBIN_U8("graphics/pokemon/back_pics/raikou_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Raikou[] = INCBIN_U8("graphics/pokemon/palettes/raikou_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Raikou[] = INCBIN_U8("graphics/pokemon/icons/raikou_icon.4bpp"); +const u8 gMonFootprint_Raikou[] = INCBIN_U8("graphics/pokemon/footprints/raikou_footprint.1bpp"); + +const u8 gMonStillFrontPic_Entei[] = INCBIN_U8("graphics/pokemon/front_pics/entei_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Entei[] = INCBIN_U8("graphics/pokemon/palettes/entei_palette.gbapal.lz"); +const u8 gMonBackPic_Entei[] = INCBIN_U8("graphics/pokemon/back_pics/entei_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Entei[] = INCBIN_U8("graphics/pokemon/palettes/entei_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Entei[] = INCBIN_U8("graphics/pokemon/icons/entei_icon.4bpp"); +const u8 gMonFootprint_Entei[] = INCBIN_U8("graphics/pokemon/footprints/entei_footprint.1bpp"); + +const u8 gMonStillFrontPic_Suicune[] = INCBIN_U8("graphics/pokemon/front_pics/suicune_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Suicune[] = INCBIN_U8("graphics/pokemon/palettes/suicune_palette.gbapal.lz"); +const u8 gMonBackPic_Suicune[] = INCBIN_U8("graphics/pokemon/back_pics/suicune_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Suicune[] = INCBIN_U8("graphics/pokemon/palettes/suicune_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Suicune[] = INCBIN_U8("graphics/pokemon/icons/suicune_icon.4bpp"); +const u8 gMonFootprint_Suicune[] = INCBIN_U8("graphics/pokemon/footprints/suicune_footprint.1bpp"); + +const u8 gMonStillFrontPic_Larvitar[] = INCBIN_U8("graphics/pokemon/front_pics/larvitar_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Larvitar[] = INCBIN_U8("graphics/pokemon/palettes/larvitar_palette.gbapal.lz"); +const u8 gMonBackPic_Larvitar[] = INCBIN_U8("graphics/pokemon/back_pics/larvitar_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Larvitar[] = INCBIN_U8("graphics/pokemon/palettes/larvitar_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Larvitar[] = INCBIN_U8("graphics/pokemon/icons/larvitar_icon.4bpp"); +const u8 gMonFootprint_Larvitar[] = INCBIN_U8("graphics/pokemon/footprints/larvitar_footprint.1bpp"); + +const u8 gMonStillFrontPic_Pupitar[] = INCBIN_U8("graphics/pokemon/front_pics/pupitar_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Pupitar[] = INCBIN_U8("graphics/pokemon/palettes/pupitar_palette.gbapal.lz"); +const u8 gMonBackPic_Pupitar[] = INCBIN_U8("graphics/pokemon/back_pics/pupitar_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Pupitar[] = INCBIN_U8("graphics/pokemon/palettes/pupitar_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Pupitar[] = INCBIN_U8("graphics/pokemon/icons/pupitar_icon.4bpp"); +const u8 gMonFootprint_Pupitar[] = INCBIN_U8("graphics/pokemon/footprints/pupitar_footprint.1bpp"); + +const u8 gMonStillFrontPic_Tyranitar[] = INCBIN_U8("graphics/pokemon/front_pics/tyranitar_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Tyranitar[] = INCBIN_U8("graphics/pokemon/palettes/tyranitar_palette.gbapal.lz"); +const u8 gMonBackPic_Tyranitar[] = INCBIN_U8("graphics/pokemon/back_pics/tyranitar_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Tyranitar[] = INCBIN_U8("graphics/pokemon/palettes/tyranitar_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Tyranitar[] = INCBIN_U8("graphics/pokemon/icons/tyranitar_icon.4bpp"); +const u8 gMonFootprint_Tyranitar[] = INCBIN_U8("graphics/pokemon/footprints/tyranitar_footprint.1bpp"); + +const u8 gMonStillFrontPic_Lugia[] = INCBIN_U8("graphics/pokemon/front_pics/lugia_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Lugia[] = INCBIN_U8("graphics/pokemon/palettes/lugia_palette.gbapal.lz"); +const u8 gMonBackPic_Lugia[] = INCBIN_U8("graphics/pokemon/back_pics/lugia_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Lugia[] = INCBIN_U8("graphics/pokemon/palettes/lugia_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Lugia[] = INCBIN_U8("graphics/pokemon/icons/lugia_icon.4bpp"); +const u8 gMonFootprint_Lugia[] = INCBIN_U8("graphics/pokemon/footprints/lugia_footprint.1bpp"); + +const u8 gMonStillFrontPic_HoOh[] = INCBIN_U8("graphics/pokemon/front_pics/ho_oh_still_front_pic.4bpp.lz"); +const u8 gMonPalette_HoOh[] = INCBIN_U8("graphics/pokemon/palettes/ho_oh_palette.gbapal.lz"); +const u8 gMonBackPic_HoOh[] = INCBIN_U8("graphics/pokemon/back_pics/ho_oh_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_HoOh[] = INCBIN_U8("graphics/pokemon/palettes/ho_oh_shiny_palette.gbapal.lz"); +const u8 gMonIcon_HoOh[] = INCBIN_U8("graphics/pokemon/icons/ho_oh_icon.4bpp"); +const u8 gMonFootprint_HoOh[] = INCBIN_U8("graphics/pokemon/footprints/ho_oh_footprint.1bpp"); + +const u8 gMonStillFrontPic_Celebi[] = INCBIN_U8("graphics/pokemon/front_pics/celebi_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Celebi[] = INCBIN_U8("graphics/pokemon/palettes/celebi_palette.gbapal.lz"); +const u8 gMonBackPic_Celebi[] = INCBIN_U8("graphics/pokemon/back_pics/celebi_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Celebi[] = INCBIN_U8("graphics/pokemon/palettes/celebi_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Celebi[] = INCBIN_U8("graphics/pokemon/icons/celebi_icon.4bpp"); +const u8 gMonFootprint_Celebi[] = INCBIN_U8("graphics/pokemon/footprints/celebi_footprint.1bpp"); + +const u8 gMonStillFrontPic_DoubleQuestionMark[] = INCBIN_U8("graphics/pokemon/front_pics/double_question_mark_still_front_pic.4bpp.lz"); +const u8 gMonPalette_DoubleQuestionMark[] = INCBIN_U8("graphics/pokemon/palettes/double_question_mark_palette.gbapal.lz"); +const u8 gMonBackPic_DoubleQuestionMark[] = INCBIN_U8("graphics/pokemon/back_pics/double_question_mark_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_DoubleQuestionMark[] = INCBIN_U8("graphics/pokemon/palettes/double_question_mark_shiny_palette.gbapal.lz"); + +const u8 gMonStillFrontPic_Treecko[] = INCBIN_U8("graphics/pokemon/front_pics/treecko_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Treecko[] = INCBIN_U8("graphics/pokemon/palettes/treecko_palette.gbapal.lz"); +const u8 gMonBackPic_Treecko[] = INCBIN_U8("graphics/pokemon/back_pics/treecko_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Treecko[] = INCBIN_U8("graphics/pokemon/palettes/treecko_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Treecko[] = INCBIN_U8("graphics/pokemon/icons/treecko_icon.4bpp"); +const u8 gMonFootprint_Treecko[] = INCBIN_U8("graphics/pokemon/footprints/treecko_footprint.1bpp"); + +const u8 gMonStillFrontPic_Grovyle[] = INCBIN_U8("graphics/pokemon/front_pics/grovyle_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Grovyle[] = INCBIN_U8("graphics/pokemon/palettes/grovyle_palette.gbapal.lz"); +const u8 gMonBackPic_Grovyle[] = INCBIN_U8("graphics/pokemon/back_pics/grovyle_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Grovyle[] = INCBIN_U8("graphics/pokemon/palettes/grovyle_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Grovyle[] = INCBIN_U8("graphics/pokemon/icons/grovyle_icon.4bpp"); +const u8 gMonFootprint_Grovyle[] = INCBIN_U8("graphics/pokemon/footprints/grovyle_footprint.1bpp"); + +const u8 gMonStillFrontPic_Sceptile[] = INCBIN_U8("graphics/pokemon/front_pics/sceptile_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Sceptile[] = INCBIN_U8("graphics/pokemon/palettes/sceptile_palette.gbapal.lz"); +const u8 gMonBackPic_Sceptile[] = INCBIN_U8("graphics/pokemon/back_pics/sceptile_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Sceptile[] = INCBIN_U8("graphics/pokemon/palettes/sceptile_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Sceptile[] = INCBIN_U8("graphics/pokemon/icons/sceptile_icon.4bpp"); +const u8 gMonFootprint_Sceptile[] = INCBIN_U8("graphics/pokemon/footprints/sceptile_footprint.1bpp"); + +const u8 gMonStillFrontPic_Torchic[] = INCBIN_U8("graphics/pokemon/front_pics/torchic_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Torchic[] = INCBIN_U8("graphics/pokemon/palettes/torchic_palette.gbapal.lz"); +const u8 gMonBackPic_Torchic[] = INCBIN_U8("graphics/pokemon/back_pics/torchic_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Torchic[] = INCBIN_U8("graphics/pokemon/palettes/torchic_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Torchic[] = INCBIN_U8("graphics/pokemon/icons/torchic_icon.4bpp"); +const u8 gMonFootprint_Torchic[] = INCBIN_U8("graphics/pokemon/footprints/torchic_footprint.1bpp"); + +const u8 gMonStillFrontPic_Combusken[] = INCBIN_U8("graphics/pokemon/front_pics/combusken_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Combusken[] = INCBIN_U8("graphics/pokemon/palettes/combusken_palette.gbapal.lz"); +const u8 gMonBackPic_Combusken[] = INCBIN_U8("graphics/pokemon/back_pics/combusken_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Combusken[] = INCBIN_U8("graphics/pokemon/palettes/combusken_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Combusken[] = INCBIN_U8("graphics/pokemon/icons/combusken_icon.4bpp"); +const u8 gMonFootprint_Combusken[] = INCBIN_U8("graphics/pokemon/footprints/combusken_footprint.1bpp"); + +const u8 gMonStillFrontPic_Blaziken[] = INCBIN_U8("graphics/pokemon/front_pics/blaziken_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Blaziken[] = INCBIN_U8("graphics/pokemon/palettes/blaziken_palette.gbapal.lz"); +const u8 gMonBackPic_Blaziken[] = INCBIN_U8("graphics/pokemon/back_pics/blaziken_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Blaziken[] = INCBIN_U8("graphics/pokemon/palettes/blaziken_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Blaziken[] = INCBIN_U8("graphics/pokemon/icons/blaziken_icon.4bpp"); +const u8 gMonFootprint_Blaziken[] = INCBIN_U8("graphics/pokemon/footprints/blaziken_footprint.1bpp"); + +const u8 gMonStillFrontPic_Mudkip[] = INCBIN_U8("graphics/pokemon/front_pics/mudkip_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Mudkip[] = INCBIN_U8("graphics/pokemon/palettes/mudkip_palette.gbapal.lz"); +const u8 gMonBackPic_Mudkip[] = INCBIN_U8("graphics/pokemon/back_pics/mudkip_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Mudkip[] = INCBIN_U8("graphics/pokemon/palettes/mudkip_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Mudkip[] = INCBIN_U8("graphics/pokemon/icons/mudkip_icon.4bpp"); +const u8 gMonFootprint_Mudkip[] = INCBIN_U8("graphics/pokemon/footprints/mudkip_footprint.1bpp"); + +const u8 gMonStillFrontPic_Marshtomp[] = INCBIN_U8("graphics/pokemon/front_pics/marshtomp_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Marshtomp[] = INCBIN_U8("graphics/pokemon/palettes/marshtomp_palette.gbapal.lz"); +const u8 gMonBackPic_Marshtomp[] = INCBIN_U8("graphics/pokemon/back_pics/marshtomp_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Marshtomp[] = INCBIN_U8("graphics/pokemon/palettes/marshtomp_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Marshtomp[] = INCBIN_U8("graphics/pokemon/icons/marshtomp_icon.4bpp"); +const u8 gMonFootprint_Marshtomp[] = INCBIN_U8("graphics/pokemon/footprints/marshtomp_footprint.1bpp"); + +const u8 gMonStillFrontPic_Swampert[] = INCBIN_U8("graphics/pokemon/front_pics/swampert_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Swampert[] = INCBIN_U8("graphics/pokemon/palettes/swampert_palette.gbapal.lz"); +const u8 gMonBackPic_Swampert[] = INCBIN_U8("graphics/pokemon/back_pics/swampert_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Swampert[] = INCBIN_U8("graphics/pokemon/palettes/swampert_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Swampert[] = INCBIN_U8("graphics/pokemon/icons/swampert_icon.4bpp"); +const u8 gMonFootprint_Swampert[] = INCBIN_U8("graphics/pokemon/footprints/swampert_footprint.1bpp"); + +const u8 gMonStillFrontPic_Poochyena[] = INCBIN_U8("graphics/pokemon/front_pics/poochyena_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Poochyena[] = INCBIN_U8("graphics/pokemon/palettes/poochyena_palette.gbapal.lz"); +const u8 gMonBackPic_Poochyena[] = INCBIN_U8("graphics/pokemon/back_pics/poochyena_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Poochyena[] = INCBIN_U8("graphics/pokemon/palettes/poochyena_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Poochyena[] = INCBIN_U8("graphics/pokemon/icons/poochyena_icon.4bpp"); +const u8 gMonFootprint_Poochyena[] = INCBIN_U8("graphics/pokemon/footprints/poochyena_footprint.1bpp"); + +const u8 gMonStillFrontPic_Mightyena[] = INCBIN_U8("graphics/pokemon/front_pics/mightyena_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Mightyena[] = INCBIN_U8("graphics/pokemon/palettes/mightyena_palette.gbapal.lz"); +const u8 gMonBackPic_Mightyena[] = INCBIN_U8("graphics/pokemon/back_pics/mightyena_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Mightyena[] = INCBIN_U8("graphics/pokemon/palettes/mightyena_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Mightyena[] = INCBIN_U8("graphics/pokemon/icons/mightyena_icon.4bpp"); +const u8 gMonFootprint_Mightyena[] = INCBIN_U8("graphics/pokemon/footprints/mightyena_footprint.1bpp"); + +const u8 gMonStillFrontPic_Zigzagoon[] = INCBIN_U8("graphics/pokemon/front_pics/zigzagoon_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Zigzagoon[] = INCBIN_U8("graphics/pokemon/palettes/zigzagoon_palette.gbapal.lz"); +const u8 gMonBackPic_Zigzagoon[] = INCBIN_U8("graphics/pokemon/back_pics/zigzagoon_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Zigzagoon[] = INCBIN_U8("graphics/pokemon/palettes/zigzagoon_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Zigzagoon[] = INCBIN_U8("graphics/pokemon/icons/zigzagoon_icon.4bpp"); +const u8 gMonFootprint_Zigzagoon[] = INCBIN_U8("graphics/pokemon/footprints/zigzagoon_footprint.1bpp"); + +const u8 gMonStillFrontPic_Linoone[] = INCBIN_U8("graphics/pokemon/front_pics/linoone_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Linoone[] = INCBIN_U8("graphics/pokemon/palettes/linoone_palette.gbapal.lz"); +const u8 gMonBackPic_Linoone[] = INCBIN_U8("graphics/pokemon/back_pics/linoone_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Linoone[] = INCBIN_U8("graphics/pokemon/palettes/linoone_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Linoone[] = INCBIN_U8("graphics/pokemon/icons/linoone_icon.4bpp"); +const u8 gMonFootprint_Linoone[] = INCBIN_U8("graphics/pokemon/footprints/linoone_footprint.1bpp"); + +const u8 gMonStillFrontPic_Wurmple[] = INCBIN_U8("graphics/pokemon/front_pics/wurmple_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Wurmple[] = INCBIN_U8("graphics/pokemon/palettes/wurmple_palette.gbapal.lz"); +const u8 gMonBackPic_Wurmple[] = INCBIN_U8("graphics/pokemon/back_pics/wurmple_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Wurmple[] = INCBIN_U8("graphics/pokemon/palettes/wurmple_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Wurmple[] = INCBIN_U8("graphics/pokemon/icons/wurmple_icon.4bpp"); +const u8 gMonFootprint_Wurmple[] = INCBIN_U8("graphics/pokemon/footprints/wurmple_footprint.1bpp"); + +const u8 gMonStillFrontPic_Silcoon[] = INCBIN_U8("graphics/pokemon/front_pics/silcoon_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Silcoon[] = INCBIN_U8("graphics/pokemon/palettes/silcoon_palette.gbapal.lz"); +const u8 gMonBackPic_Silcoon[] = INCBIN_U8("graphics/pokemon/back_pics/silcoon_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Silcoon[] = INCBIN_U8("graphics/pokemon/palettes/silcoon_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Silcoon[] = INCBIN_U8("graphics/pokemon/icons/silcoon_icon.4bpp"); +const u8 gMonFootprint_Silcoon[] = INCBIN_U8("graphics/pokemon/footprints/silcoon_footprint.1bpp"); + +const u8 gMonStillFrontPic_Beautifly[] = INCBIN_U8("graphics/pokemon/front_pics/beautifly_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Beautifly[] = INCBIN_U8("graphics/pokemon/palettes/beautifly_palette.gbapal.lz"); +const u8 gMonBackPic_Beautifly[] = INCBIN_U8("graphics/pokemon/back_pics/beautifly_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Beautifly[] = INCBIN_U8("graphics/pokemon/palettes/beautifly_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Beautifly[] = INCBIN_U8("graphics/pokemon/icons/beautifly_icon.4bpp"); +const u8 gMonFootprint_Beautifly[] = INCBIN_U8("graphics/pokemon/footprints/beautifly_footprint.1bpp"); + +const u8 gMonStillFrontPic_Cascoon[] = INCBIN_U8("graphics/pokemon/front_pics/cascoon_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Cascoon[] = INCBIN_U8("graphics/pokemon/palettes/cascoon_palette.gbapal.lz"); +const u8 gMonBackPic_Cascoon[] = INCBIN_U8("graphics/pokemon/back_pics/cascoon_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Cascoon[] = INCBIN_U8("graphics/pokemon/palettes/cascoon_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Cascoon[] = INCBIN_U8("graphics/pokemon/icons/cascoon_icon.4bpp"); +const u8 gMonFootprint_Cascoon[] = INCBIN_U8("graphics/pokemon/footprints/cascoon_footprint.1bpp"); + +const u8 gMonStillFrontPic_Dustox[] = INCBIN_U8("graphics/pokemon/front_pics/dustox_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Dustox[] = INCBIN_U8("graphics/pokemon/palettes/dustox_palette.gbapal.lz"); +const u8 gMonBackPic_Dustox[] = INCBIN_U8("graphics/pokemon/back_pics/dustox_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Dustox[] = INCBIN_U8("graphics/pokemon/palettes/dustox_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Dustox[] = INCBIN_U8("graphics/pokemon/icons/dustox_icon.4bpp"); +const u8 gMonFootprint_Dustox[] = INCBIN_U8("graphics/pokemon/footprints/dustox_footprint.1bpp"); + +const u8 gMonStillFrontPic_Lotad[] = INCBIN_U8("graphics/pokemon/front_pics/lotad_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Lotad[] = INCBIN_U8("graphics/pokemon/palettes/lotad_palette.gbapal.lz"); +const u8 gMonBackPic_Lotad[] = INCBIN_U8("graphics/pokemon/back_pics/lotad_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Lotad[] = INCBIN_U8("graphics/pokemon/palettes/lotad_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Lotad[] = INCBIN_U8("graphics/pokemon/icons/lotad_icon.4bpp"); +const u8 gMonFootprint_Lotad[] = INCBIN_U8("graphics/pokemon/footprints/lotad_footprint.1bpp"); + +const u8 gMonStillFrontPic_Lombre[] = INCBIN_U8("graphics/pokemon/front_pics/lombre_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Lombre[] = INCBIN_U8("graphics/pokemon/palettes/lombre_palette.gbapal.lz"); +const u8 gMonBackPic_Lombre[] = INCBIN_U8("graphics/pokemon/back_pics/lombre_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Lombre[] = INCBIN_U8("graphics/pokemon/palettes/lombre_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Lombre[] = INCBIN_U8("graphics/pokemon/icons/lombre_icon.4bpp"); +const u8 gMonFootprint_Lombre[] = INCBIN_U8("graphics/pokemon/footprints/lombre_footprint.1bpp"); + +const u8 gMonStillFrontPic_Ludicolo[] = INCBIN_U8("graphics/pokemon/front_pics/ludicolo_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Ludicolo[] = INCBIN_U8("graphics/pokemon/palettes/ludicolo_palette.gbapal.lz"); +const u8 gMonBackPic_Ludicolo[] = INCBIN_U8("graphics/pokemon/back_pics/ludicolo_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Ludicolo[] = INCBIN_U8("graphics/pokemon/palettes/ludicolo_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Ludicolo[] = INCBIN_U8("graphics/pokemon/icons/ludicolo_icon.4bpp"); +const u8 gMonFootprint_Ludicolo[] = INCBIN_U8("graphics/pokemon/footprints/ludicolo_footprint.1bpp"); + +const u8 gMonStillFrontPic_Seedot[] = INCBIN_U8("graphics/pokemon/front_pics/seedot_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Seedot[] = INCBIN_U8("graphics/pokemon/palettes/seedot_palette.gbapal.lz"); +const u8 gMonBackPic_Seedot[] = INCBIN_U8("graphics/pokemon/back_pics/seedot_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Seedot[] = INCBIN_U8("graphics/pokemon/palettes/seedot_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Seedot[] = INCBIN_U8("graphics/pokemon/icons/seedot_icon.4bpp"); +const u8 gMonFootprint_Seedot[] = INCBIN_U8("graphics/pokemon/footprints/seedot_footprint.1bpp"); + +const u8 gMonStillFrontPic_Nuzleaf[] = INCBIN_U8("graphics/pokemon/front_pics/nuzleaf_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Nuzleaf[] = INCBIN_U8("graphics/pokemon/palettes/nuzleaf_palette.gbapal.lz"); +const u8 gMonBackPic_Nuzleaf[] = INCBIN_U8("graphics/pokemon/back_pics/nuzleaf_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Nuzleaf[] = INCBIN_U8("graphics/pokemon/palettes/nuzleaf_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Nuzleaf[] = INCBIN_U8("graphics/pokemon/icons/nuzleaf_icon.4bpp"); +const u8 gMonFootprint_Nuzleaf[] = INCBIN_U8("graphics/pokemon/footprints/nuzleaf_footprint.1bpp"); + +const u8 gMonStillFrontPic_Shiftry[] = INCBIN_U8("graphics/pokemon/front_pics/shiftry_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Shiftry[] = INCBIN_U8("graphics/pokemon/palettes/shiftry_palette.gbapal.lz"); +const u8 gMonBackPic_Shiftry[] = INCBIN_U8("graphics/pokemon/back_pics/shiftry_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Shiftry[] = INCBIN_U8("graphics/pokemon/palettes/shiftry_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Shiftry[] = INCBIN_U8("graphics/pokemon/icons/shiftry_icon.4bpp"); +const u8 gMonFootprint_Shiftry[] = INCBIN_U8("graphics/pokemon/footprints/shiftry_footprint.1bpp"); + +const u8 gMonStillFrontPic_Nincada[] = INCBIN_U8("graphics/pokemon/front_pics/nincada_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Nincada[] = INCBIN_U8("graphics/pokemon/palettes/nincada_palette.gbapal.lz"); +const u8 gMonBackPic_Nincada[] = INCBIN_U8("graphics/pokemon/back_pics/nincada_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Nincada[] = INCBIN_U8("graphics/pokemon/palettes/nincada_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Nincada[] = INCBIN_U8("graphics/pokemon/icons/nincada_icon.4bpp"); +const u8 gMonFootprint_Nincada[] = INCBIN_U8("graphics/pokemon/footprints/nincada_footprint.1bpp"); + +const u8 gMonStillFrontPic_Ninjask[] = INCBIN_U8("graphics/pokemon/front_pics/ninjask_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Ninjask[] = INCBIN_U8("graphics/pokemon/palettes/ninjask_palette.gbapal.lz"); +const u8 gMonBackPic_Ninjask[] = INCBIN_U8("graphics/pokemon/back_pics/ninjask_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Ninjask[] = INCBIN_U8("graphics/pokemon/palettes/ninjask_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Ninjask[] = INCBIN_U8("graphics/pokemon/icons/ninjask_icon.4bpp"); +const u8 gMonFootprint_Ninjask[] = INCBIN_U8("graphics/pokemon/footprints/ninjask_footprint.1bpp"); + +const u8 gMonStillFrontPic_Shedinja[] = INCBIN_U8("graphics/pokemon/front_pics/shedinja_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Shedinja[] = INCBIN_U8("graphics/pokemon/palettes/shedinja_palette.gbapal.lz"); +const u8 gMonBackPic_Shedinja[] = INCBIN_U8("graphics/pokemon/back_pics/shedinja_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Shedinja[] = INCBIN_U8("graphics/pokemon/palettes/shedinja_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Shedinja[] = INCBIN_U8("graphics/pokemon/icons/shedinja_icon.4bpp"); +const u8 gMonFootprint_Shedinja[] = INCBIN_U8("graphics/pokemon/footprints/shedinja_footprint.1bpp"); + +const u8 gMonStillFrontPic_Taillow[] = INCBIN_U8("graphics/pokemon/front_pics/taillow_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Taillow[] = INCBIN_U8("graphics/pokemon/palettes/taillow_palette.gbapal.lz"); +const u8 gMonBackPic_Taillow[] = INCBIN_U8("graphics/pokemon/back_pics/taillow_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Taillow[] = INCBIN_U8("graphics/pokemon/palettes/taillow_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Taillow[] = INCBIN_U8("graphics/pokemon/icons/taillow_icon.4bpp"); +const u8 gMonFootprint_Taillow[] = INCBIN_U8("graphics/pokemon/footprints/taillow_footprint.1bpp"); + +const u8 gMonStillFrontPic_Swellow[] = INCBIN_U8("graphics/pokemon/front_pics/swellow_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Swellow[] = INCBIN_U8("graphics/pokemon/palettes/swellow_palette.gbapal.lz"); +const u8 gMonBackPic_Swellow[] = INCBIN_U8("graphics/pokemon/back_pics/swellow_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Swellow[] = INCBIN_U8("graphics/pokemon/palettes/swellow_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Swellow[] = INCBIN_U8("graphics/pokemon/icons/swellow_icon.4bpp"); +const u8 gMonFootprint_Swellow[] = INCBIN_U8("graphics/pokemon/footprints/swellow_footprint.1bpp"); + +const u8 gMonStillFrontPic_Shroomish[] = INCBIN_U8("graphics/pokemon/front_pics/shroomish_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Shroomish[] = INCBIN_U8("graphics/pokemon/palettes/shroomish_palette.gbapal.lz"); +const u8 gMonBackPic_Shroomish[] = INCBIN_U8("graphics/pokemon/back_pics/shroomish_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Shroomish[] = INCBIN_U8("graphics/pokemon/palettes/shroomish_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Shroomish[] = INCBIN_U8("graphics/pokemon/icons/shroomish_icon.4bpp"); +const u8 gMonFootprint_Shroomish[] = INCBIN_U8("graphics/pokemon/footprints/shroomish_footprint.1bpp"); + +const u8 gMonStillFrontPic_Breloom[] = INCBIN_U8("graphics/pokemon/front_pics/breloom_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Breloom[] = INCBIN_U8("graphics/pokemon/palettes/breloom_palette.gbapal.lz"); +const u8 gMonBackPic_Breloom[] = INCBIN_U8("graphics/pokemon/back_pics/breloom_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Breloom[] = INCBIN_U8("graphics/pokemon/palettes/breloom_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Breloom[] = INCBIN_U8("graphics/pokemon/icons/breloom_icon.4bpp"); +const u8 gMonFootprint_Breloom[] = INCBIN_U8("graphics/pokemon/footprints/breloom_footprint.1bpp"); + +const u8 gMonStillFrontPic_Spinda[] = INCBIN_U8("graphics/pokemon/front_pics/spinda_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Spinda[] = INCBIN_U8("graphics/pokemon/palettes/spinda_palette.gbapal.lz"); +const u8 gMonBackPic_Spinda[] = INCBIN_U8("graphics/pokemon/back_pics/spinda_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Spinda[] = INCBIN_U8("graphics/pokemon/palettes/spinda_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Spinda[] = INCBIN_U8("graphics/pokemon/icons/spinda_icon.4bpp"); +const u8 gMonFootprint_Spinda[] = INCBIN_U8("graphics/pokemon/footprints/spinda_footprint.1bpp"); + +const u8 gMonStillFrontPic_Wingull[] = INCBIN_U8("graphics/pokemon/front_pics/wingull_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Wingull[] = INCBIN_U8("graphics/pokemon/palettes/wingull_palette.gbapal.lz"); +const u8 gMonBackPic_Wingull[] = INCBIN_U8("graphics/pokemon/back_pics/wingull_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Wingull[] = INCBIN_U8("graphics/pokemon/palettes/wingull_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Wingull[] = INCBIN_U8("graphics/pokemon/icons/wingull_icon.4bpp"); +const u8 gMonFootprint_Wingull[] = INCBIN_U8("graphics/pokemon/footprints/wingull_footprint.1bpp"); + +const u8 gMonStillFrontPic_Pelipper[] = INCBIN_U8("graphics/pokemon/front_pics/pelipper_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Pelipper[] = INCBIN_U8("graphics/pokemon/palettes/pelipper_palette.gbapal.lz"); +const u8 gMonBackPic_Pelipper[] = INCBIN_U8("graphics/pokemon/back_pics/pelipper_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Pelipper[] = INCBIN_U8("graphics/pokemon/palettes/pelipper_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Pelipper[] = INCBIN_U8("graphics/pokemon/icons/pelipper_icon.4bpp"); +const u8 gMonFootprint_Pelipper[] = INCBIN_U8("graphics/pokemon/footprints/pelipper_footprint.1bpp"); + +const u8 gMonStillFrontPic_Surskit[] = INCBIN_U8("graphics/pokemon/front_pics/surskit_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Surskit[] = INCBIN_U8("graphics/pokemon/palettes/surskit_palette.gbapal.lz"); +const u8 gMonBackPic_Surskit[] = INCBIN_U8("graphics/pokemon/back_pics/surskit_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Surskit[] = INCBIN_U8("graphics/pokemon/palettes/surskit_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Surskit[] = INCBIN_U8("graphics/pokemon/icons/surskit_icon.4bpp"); +const u8 gMonFootprint_Surskit[] = INCBIN_U8("graphics/pokemon/footprints/surskit_footprint.1bpp"); + +const u8 gMonStillFrontPic_Masquerain[] = INCBIN_U8("graphics/pokemon/front_pics/masquerain_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Masquerain[] = INCBIN_U8("graphics/pokemon/palettes/masquerain_palette.gbapal.lz"); +const u8 gMonBackPic_Masquerain[] = INCBIN_U8("graphics/pokemon/back_pics/masquerain_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Masquerain[] = INCBIN_U8("graphics/pokemon/palettes/masquerain_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Masquerain[] = INCBIN_U8("graphics/pokemon/icons/masquerain_icon.4bpp"); +const u8 gMonFootprint_Masquerain[] = INCBIN_U8("graphics/pokemon/footprints/masquerain_footprint.1bpp"); + +const u8 gMonStillFrontPic_Wailmer[] = INCBIN_U8("graphics/pokemon/front_pics/wailmer_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Wailmer[] = INCBIN_U8("graphics/pokemon/palettes/wailmer_palette.gbapal.lz"); +const u8 gMonBackPic_Wailmer[] = INCBIN_U8("graphics/pokemon/back_pics/wailmer_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Wailmer[] = INCBIN_U8("graphics/pokemon/palettes/wailmer_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Wailmer[] = INCBIN_U8("graphics/pokemon/icons/wailmer_icon.4bpp"); +const u8 gMonFootprint_Wailmer[] = INCBIN_U8("graphics/pokemon/footprints/wailmer_footprint.1bpp"); + +const u8 gMonStillFrontPic_Wailord[] = INCBIN_U8("graphics/pokemon/front_pics/wailord_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Wailord[] = INCBIN_U8("graphics/pokemon/palettes/wailord_palette.gbapal.lz"); +const u8 gMonBackPic_Wailord[] = INCBIN_U8("graphics/pokemon/back_pics/wailord_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Wailord[] = INCBIN_U8("graphics/pokemon/palettes/wailord_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Wailord[] = INCBIN_U8("graphics/pokemon/icons/wailord_icon.4bpp"); +const u8 gMonFootprint_Wailord[] = INCBIN_U8("graphics/pokemon/footprints/wailord_footprint.1bpp"); + +const u8 gMonStillFrontPic_Skitty[] = INCBIN_U8("graphics/pokemon/front_pics/skitty_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Skitty[] = INCBIN_U8("graphics/pokemon/palettes/skitty_palette.gbapal.lz"); +const u8 gMonBackPic_Skitty[] = INCBIN_U8("graphics/pokemon/back_pics/skitty_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Skitty[] = INCBIN_U8("graphics/pokemon/palettes/skitty_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Skitty[] = INCBIN_U8("graphics/pokemon/icons/skitty_icon.4bpp"); +const u8 gMonFootprint_Skitty[] = INCBIN_U8("graphics/pokemon/footprints/skitty_footprint.1bpp"); + +const u8 gMonStillFrontPic_Delcatty[] = INCBIN_U8("graphics/pokemon/front_pics/delcatty_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Delcatty[] = INCBIN_U8("graphics/pokemon/palettes/delcatty_palette.gbapal.lz"); +const u8 gMonBackPic_Delcatty[] = INCBIN_U8("graphics/pokemon/back_pics/delcatty_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Delcatty[] = INCBIN_U8("graphics/pokemon/palettes/delcatty_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Delcatty[] = INCBIN_U8("graphics/pokemon/icons/delcatty_icon.4bpp"); +const u8 gMonFootprint_Delcatty[] = INCBIN_U8("graphics/pokemon/footprints/delcatty_footprint.1bpp"); + +const u8 gMonStillFrontPic_Kecleon[] = INCBIN_U8("graphics/pokemon/front_pics/kecleon_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Kecleon[] = INCBIN_U8("graphics/pokemon/palettes/kecleon_palette.gbapal.lz"); +const u8 gMonBackPic_Kecleon[] = INCBIN_U8("graphics/pokemon/back_pics/kecleon_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Kecleon[] = INCBIN_U8("graphics/pokemon/palettes/kecleon_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Kecleon[] = INCBIN_U8("graphics/pokemon/icons/kecleon_icon.4bpp"); +const u8 gMonFootprint_Kecleon[] = INCBIN_U8("graphics/pokemon/footprints/kecleon_footprint.1bpp"); + +const u8 gMonStillFrontPic_Baltoy[] = INCBIN_U8("graphics/pokemon/front_pics/baltoy_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Baltoy[] = INCBIN_U8("graphics/pokemon/palettes/baltoy_palette.gbapal.lz"); +const u8 gMonBackPic_Baltoy[] = INCBIN_U8("graphics/pokemon/back_pics/baltoy_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Baltoy[] = INCBIN_U8("graphics/pokemon/palettes/baltoy_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Baltoy[] = INCBIN_U8("graphics/pokemon/icons/baltoy_icon.4bpp"); +const u8 gMonFootprint_Baltoy[] = INCBIN_U8("graphics/pokemon/footprints/baltoy_footprint.1bpp"); + +const u8 gMonStillFrontPic_Claydol[] = INCBIN_U8("graphics/pokemon/front_pics/claydol_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Claydol[] = INCBIN_U8("graphics/pokemon/palettes/claydol_palette.gbapal.lz"); +const u8 gMonBackPic_Claydol[] = INCBIN_U8("graphics/pokemon/back_pics/claydol_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Claydol[] = INCBIN_U8("graphics/pokemon/palettes/claydol_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Claydol[] = INCBIN_U8("graphics/pokemon/icons/claydol_icon.4bpp"); +const u8 gMonFootprint_Claydol[] = INCBIN_U8("graphics/pokemon/footprints/claydol_footprint.1bpp"); + +const u8 gMonStillFrontPic_Nosepass[] = INCBIN_U8("graphics/pokemon/front_pics/nosepass_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Nosepass[] = INCBIN_U8("graphics/pokemon/palettes/nosepass_palette.gbapal.lz"); +const u8 gMonBackPic_Nosepass[] = INCBIN_U8("graphics/pokemon/back_pics/nosepass_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Nosepass[] = INCBIN_U8("graphics/pokemon/palettes/nosepass_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Nosepass[] = INCBIN_U8("graphics/pokemon/icons/nosepass_icon.4bpp"); +const u8 gMonFootprint_Nosepass[] = INCBIN_U8("graphics/pokemon/footprints/nosepass_footprint.1bpp"); + +const u8 gMonStillFrontPic_Torkoal[] = INCBIN_U8("graphics/pokemon/front_pics/torkoal_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Torkoal[] = INCBIN_U8("graphics/pokemon/palettes/torkoal_palette.gbapal.lz"); +const u8 gMonBackPic_Torkoal[] = INCBIN_U8("graphics/pokemon/back_pics/torkoal_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Torkoal[] = INCBIN_U8("graphics/pokemon/palettes/torkoal_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Torkoal[] = INCBIN_U8("graphics/pokemon/icons/torkoal_icon.4bpp"); +const u8 gMonFootprint_Torkoal[] = INCBIN_U8("graphics/pokemon/footprints/torkoal_footprint.1bpp"); + +const u8 gMonStillFrontPic_Sableye[] = INCBIN_U8("graphics/pokemon/front_pics/sableye_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Sableye[] = INCBIN_U8("graphics/pokemon/palettes/sableye_palette.gbapal.lz"); +const u8 gMonBackPic_Sableye[] = INCBIN_U8("graphics/pokemon/back_pics/sableye_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Sableye[] = INCBIN_U8("graphics/pokemon/palettes/sableye_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Sableye[] = INCBIN_U8("graphics/pokemon/icons/sableye_icon.4bpp"); +const u8 gMonFootprint_Sableye[] = INCBIN_U8("graphics/pokemon/footprints/sableye_footprint.1bpp"); + +const u8 gMonStillFrontPic_Barboach[] = INCBIN_U8("graphics/pokemon/front_pics/barboach_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Barboach[] = INCBIN_U8("graphics/pokemon/palettes/barboach_palette.gbapal.lz"); +const u8 gMonBackPic_Barboach[] = INCBIN_U8("graphics/pokemon/back_pics/barboach_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Barboach[] = INCBIN_U8("graphics/pokemon/palettes/barboach_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Barboach[] = INCBIN_U8("graphics/pokemon/icons/barboach_icon.4bpp"); +const u8 gMonFootprint_Barboach[] = INCBIN_U8("graphics/pokemon/footprints/barboach_footprint.1bpp"); + +const u8 gMonStillFrontPic_Whiscash[] = INCBIN_U8("graphics/pokemon/front_pics/whiscash_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Whiscash[] = INCBIN_U8("graphics/pokemon/palettes/whiscash_palette.gbapal.lz"); +const u8 gMonBackPic_Whiscash[] = INCBIN_U8("graphics/pokemon/back_pics/whiscash_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Whiscash[] = INCBIN_U8("graphics/pokemon/palettes/whiscash_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Whiscash[] = INCBIN_U8("graphics/pokemon/icons/whiscash_icon.4bpp"); +const u8 gMonFootprint_Whiscash[] = INCBIN_U8("graphics/pokemon/footprints/whiscash_footprint.1bpp"); + +const u8 gMonStillFrontPic_Luvdisc[] = INCBIN_U8("graphics/pokemon/front_pics/luvdisc_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Luvdisc[] = INCBIN_U8("graphics/pokemon/palettes/luvdisc_palette.gbapal.lz"); +const u8 gMonBackPic_Luvdisc[] = INCBIN_U8("graphics/pokemon/back_pics/luvdisc_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Luvdisc[] = INCBIN_U8("graphics/pokemon/palettes/luvdisc_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Luvdisc[] = INCBIN_U8("graphics/pokemon/icons/luvdisc_icon.4bpp"); +const u8 gMonFootprint_Luvdisc[] = INCBIN_U8("graphics/pokemon/footprints/luvdisc_footprint.1bpp"); + +const u8 gMonStillFrontPic_Corphish[] = INCBIN_U8("graphics/pokemon/front_pics/corphish_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Corphish[] = INCBIN_U8("graphics/pokemon/palettes/corphish_palette.gbapal.lz"); +const u8 gMonBackPic_Corphish[] = INCBIN_U8("graphics/pokemon/back_pics/corphish_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Corphish[] = INCBIN_U8("graphics/pokemon/palettes/corphish_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Corphish[] = INCBIN_U8("graphics/pokemon/icons/corphish_icon.4bpp"); +const u8 gMonFootprint_Corphish[] = INCBIN_U8("graphics/pokemon/footprints/corphish_footprint.1bpp"); + +const u8 gMonStillFrontPic_Crawdaunt[] = INCBIN_U8("graphics/pokemon/front_pics/crawdaunt_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Crawdaunt[] = INCBIN_U8("graphics/pokemon/palettes/crawdaunt_palette.gbapal.lz"); +const u8 gMonBackPic_Crawdaunt[] = INCBIN_U8("graphics/pokemon/back_pics/crawdaunt_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Crawdaunt[] = INCBIN_U8("graphics/pokemon/palettes/crawdaunt_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Crawdaunt[] = INCBIN_U8("graphics/pokemon/icons/crawdaunt_icon.4bpp"); +const u8 gMonFootprint_Crawdaunt[] = INCBIN_U8("graphics/pokemon/footprints/crawdaunt_footprint.1bpp"); + +const u8 gMonStillFrontPic_Feebas[] = INCBIN_U8("graphics/pokemon/front_pics/feebas_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Feebas[] = INCBIN_U8("graphics/pokemon/palettes/feebas_palette.gbapal.lz"); +const u8 gMonBackPic_Feebas[] = INCBIN_U8("graphics/pokemon/back_pics/feebas_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Feebas[] = INCBIN_U8("graphics/pokemon/palettes/feebas_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Feebas[] = INCBIN_U8("graphics/pokemon/icons/feebas_icon.4bpp"); +const u8 gMonFootprint_Feebas[] = INCBIN_U8("graphics/pokemon/footprints/feebas_footprint.1bpp"); + +const u8 gMonStillFrontPic_Milotic[] = INCBIN_U8("graphics/pokemon/front_pics/milotic_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Milotic[] = INCBIN_U8("graphics/pokemon/palettes/milotic_palette.gbapal.lz"); +const u8 gMonBackPic_Milotic[] = INCBIN_U8("graphics/pokemon/back_pics/milotic_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Milotic[] = INCBIN_U8("graphics/pokemon/palettes/milotic_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Milotic[] = INCBIN_U8("graphics/pokemon/icons/milotic_icon.4bpp"); +const u8 gMonFootprint_Milotic[] = INCBIN_U8("graphics/pokemon/footprints/milotic_footprint.1bpp"); + +const u8 gMonStillFrontPic_Carvanha[] = INCBIN_U8("graphics/pokemon/front_pics/carvanha_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Carvanha[] = INCBIN_U8("graphics/pokemon/palettes/carvanha_palette.gbapal.lz"); +const u8 gMonBackPic_Carvanha[] = INCBIN_U8("graphics/pokemon/back_pics/carvanha_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Carvanha[] = INCBIN_U8("graphics/pokemon/palettes/carvanha_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Carvanha[] = INCBIN_U8("graphics/pokemon/icons/carvanha_icon.4bpp"); +const u8 gMonFootprint_Carvanha[] = INCBIN_U8("graphics/pokemon/footprints/carvanha_footprint.1bpp"); + +const u8 gMonStillFrontPic_Sharpedo[] = INCBIN_U8("graphics/pokemon/front_pics/sharpedo_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Sharpedo[] = INCBIN_U8("graphics/pokemon/palettes/sharpedo_palette.gbapal.lz"); +const u8 gMonBackPic_Sharpedo[] = INCBIN_U8("graphics/pokemon/back_pics/sharpedo_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Sharpedo[] = INCBIN_U8("graphics/pokemon/palettes/sharpedo_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Sharpedo[] = INCBIN_U8("graphics/pokemon/icons/sharpedo_icon.4bpp"); +const u8 gMonFootprint_Sharpedo[] = INCBIN_U8("graphics/pokemon/footprints/sharpedo_footprint.1bpp"); + +const u8 gMonStillFrontPic_Trapinch[] = INCBIN_U8("graphics/pokemon/front_pics/trapinch_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Trapinch[] = INCBIN_U8("graphics/pokemon/palettes/trapinch_palette.gbapal.lz"); +const u8 gMonBackPic_Trapinch[] = INCBIN_U8("graphics/pokemon/back_pics/trapinch_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Trapinch[] = INCBIN_U8("graphics/pokemon/palettes/trapinch_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Trapinch[] = INCBIN_U8("graphics/pokemon/icons/trapinch_icon.4bpp"); +const u8 gMonFootprint_Trapinch[] = INCBIN_U8("graphics/pokemon/footprints/trapinch_footprint.1bpp"); + +const u8 gMonStillFrontPic_Vibrava[] = INCBIN_U8("graphics/pokemon/front_pics/vibrava_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Vibrava[] = INCBIN_U8("graphics/pokemon/palettes/vibrava_palette.gbapal.lz"); +const u8 gMonBackPic_Vibrava[] = INCBIN_U8("graphics/pokemon/back_pics/vibrava_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Vibrava[] = INCBIN_U8("graphics/pokemon/palettes/vibrava_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Vibrava[] = INCBIN_U8("graphics/pokemon/icons/vibrava_icon.4bpp"); +const u8 gMonFootprint_Vibrava[] = INCBIN_U8("graphics/pokemon/footprints/vibrava_footprint.1bpp"); + +const u8 gMonStillFrontPic_Flygon[] = INCBIN_U8("graphics/pokemon/front_pics/flygon_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Flygon[] = INCBIN_U8("graphics/pokemon/palettes/flygon_palette.gbapal.lz"); +const u8 gMonBackPic_Flygon[] = INCBIN_U8("graphics/pokemon/back_pics/flygon_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Flygon[] = INCBIN_U8("graphics/pokemon/palettes/flygon_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Flygon[] = INCBIN_U8("graphics/pokemon/icons/flygon_icon.4bpp"); +const u8 gMonFootprint_Flygon[] = INCBIN_U8("graphics/pokemon/footprints/flygon_footprint.1bpp"); + +const u8 gMonStillFrontPic_Makuhita[] = INCBIN_U8("graphics/pokemon/front_pics/makuhita_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Makuhita[] = INCBIN_U8("graphics/pokemon/palettes/makuhita_palette.gbapal.lz"); +const u8 gMonBackPic_Makuhita[] = INCBIN_U8("graphics/pokemon/back_pics/makuhita_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Makuhita[] = INCBIN_U8("graphics/pokemon/palettes/makuhita_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Makuhita[] = INCBIN_U8("graphics/pokemon/icons/makuhita_icon.4bpp"); +const u8 gMonFootprint_Makuhita[] = INCBIN_U8("graphics/pokemon/footprints/makuhita_footprint.1bpp"); + +const u8 gMonStillFrontPic_Hariyama[] = INCBIN_U8("graphics/pokemon/front_pics/hariyama_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Hariyama[] = INCBIN_U8("graphics/pokemon/palettes/hariyama_palette.gbapal.lz"); +const u8 gMonBackPic_Hariyama[] = INCBIN_U8("graphics/pokemon/back_pics/hariyama_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Hariyama[] = INCBIN_U8("graphics/pokemon/palettes/hariyama_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Hariyama[] = INCBIN_U8("graphics/pokemon/icons/hariyama_icon.4bpp"); +const u8 gMonFootprint_Hariyama[] = INCBIN_U8("graphics/pokemon/footprints/hariyama_footprint.1bpp"); + +const u8 gMonStillFrontPic_Electrike[] = INCBIN_U8("graphics/pokemon/front_pics/electrike_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Electrike[] = INCBIN_U8("graphics/pokemon/palettes/electrike_palette.gbapal.lz"); +const u8 gMonBackPic_Electrike[] = INCBIN_U8("graphics/pokemon/back_pics/electrike_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Electrike[] = INCBIN_U8("graphics/pokemon/palettes/electrike_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Electrike[] = INCBIN_U8("graphics/pokemon/icons/electrike_icon.4bpp"); +const u8 gMonFootprint_Electrike[] = INCBIN_U8("graphics/pokemon/footprints/electrike_footprint.1bpp"); + +const u8 gMonStillFrontPic_Manectric[] = INCBIN_U8("graphics/pokemon/front_pics/manectric_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Manectric[] = INCBIN_U8("graphics/pokemon/palettes/manectric_palette.gbapal.lz"); +const u8 gMonBackPic_Manectric[] = INCBIN_U8("graphics/pokemon/back_pics/manectric_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Manectric[] = INCBIN_U8("graphics/pokemon/palettes/manectric_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Manectric[] = INCBIN_U8("graphics/pokemon/icons/manectric_icon.4bpp"); +const u8 gMonFootprint_Manectric[] = INCBIN_U8("graphics/pokemon/footprints/manectric_footprint.1bpp"); + +const u8 gMonStillFrontPic_Numel[] = INCBIN_U8("graphics/pokemon/front_pics/numel_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Numel[] = INCBIN_U8("graphics/pokemon/palettes/numel_palette.gbapal.lz"); +const u8 gMonBackPic_Numel[] = INCBIN_U8("graphics/pokemon/back_pics/numel_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Numel[] = INCBIN_U8("graphics/pokemon/palettes/numel_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Numel[] = INCBIN_U8("graphics/pokemon/icons/numel_icon.4bpp"); +const u8 gMonFootprint_Numel[] = INCBIN_U8("graphics/pokemon/footprints/numel_footprint.1bpp"); + +const u8 gMonStillFrontPic_Camerupt[] = INCBIN_U8("graphics/pokemon/front_pics/camerupt_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Camerupt[] = INCBIN_U8("graphics/pokemon/palettes/camerupt_palette.gbapal.lz"); +const u8 gMonBackPic_Camerupt[] = INCBIN_U8("graphics/pokemon/back_pics/camerupt_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Camerupt[] = INCBIN_U8("graphics/pokemon/palettes/camerupt_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Camerupt[] = INCBIN_U8("graphics/pokemon/icons/camerupt_icon.4bpp"); +const u8 gMonFootprint_Camerupt[] = INCBIN_U8("graphics/pokemon/footprints/camerupt_footprint.1bpp"); + +const u8 gMonStillFrontPic_Spheal[] = INCBIN_U8("graphics/pokemon/front_pics/spheal_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Spheal[] = INCBIN_U8("graphics/pokemon/palettes/spheal_palette.gbapal.lz"); +const u8 gMonBackPic_Spheal[] = INCBIN_U8("graphics/pokemon/back_pics/spheal_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Spheal[] = INCBIN_U8("graphics/pokemon/palettes/spheal_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Spheal[] = INCBIN_U8("graphics/pokemon/icons/spheal_icon.4bpp"); +const u8 gMonFootprint_Spheal[] = INCBIN_U8("graphics/pokemon/footprints/spheal_footprint.1bpp"); + +const u8 gMonStillFrontPic_Sealeo[] = INCBIN_U8("graphics/pokemon/front_pics/sealeo_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Sealeo[] = INCBIN_U8("graphics/pokemon/palettes/sealeo_palette.gbapal.lz"); +const u8 gMonBackPic_Sealeo[] = INCBIN_U8("graphics/pokemon/back_pics/sealeo_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Sealeo[] = INCBIN_U8("graphics/pokemon/palettes/sealeo_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Sealeo[] = INCBIN_U8("graphics/pokemon/icons/sealeo_icon.4bpp"); +const u8 gMonFootprint_Sealeo[] = INCBIN_U8("graphics/pokemon/footprints/sealeo_footprint.1bpp"); + +const u8 gMonStillFrontPic_Walrein[] = INCBIN_U8("graphics/pokemon/front_pics/walrein_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Walrein[] = INCBIN_U8("graphics/pokemon/palettes/walrein_palette.gbapal.lz"); +const u8 gMonBackPic_Walrein[] = INCBIN_U8("graphics/pokemon/back_pics/walrein_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Walrein[] = INCBIN_U8("graphics/pokemon/palettes/walrein_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Walrein[] = INCBIN_U8("graphics/pokemon/icons/walrein_icon.4bpp"); +const u8 gMonFootprint_Walrein[] = INCBIN_U8("graphics/pokemon/footprints/walrein_footprint.1bpp"); + +const u8 gMonStillFrontPic_Cacnea[] = INCBIN_U8("graphics/pokemon/front_pics/cacnea_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Cacnea[] = INCBIN_U8("graphics/pokemon/palettes/cacnea_palette.gbapal.lz"); +const u8 gMonBackPic_Cacnea[] = INCBIN_U8("graphics/pokemon/back_pics/cacnea_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Cacnea[] = INCBIN_U8("graphics/pokemon/palettes/cacnea_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Cacnea[] = INCBIN_U8("graphics/pokemon/icons/cacnea_icon.4bpp"); +const u8 gMonFootprint_Cacnea[] = INCBIN_U8("graphics/pokemon/footprints/cacnea_footprint.1bpp"); + +const u8 gMonStillFrontPic_Cacturne[] = INCBIN_U8("graphics/pokemon/front_pics/cacturne_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Cacturne[] = INCBIN_U8("graphics/pokemon/palettes/cacturne_palette.gbapal.lz"); +const u8 gMonBackPic_Cacturne[] = INCBIN_U8("graphics/pokemon/back_pics/cacturne_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Cacturne[] = INCBIN_U8("graphics/pokemon/palettes/cacturne_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Cacturne[] = INCBIN_U8("graphics/pokemon/icons/cacturne_icon.4bpp"); +const u8 gMonFootprint_Cacturne[] = INCBIN_U8("graphics/pokemon/footprints/cacturne_footprint.1bpp"); + +const u8 gMonStillFrontPic_Snorunt[] = INCBIN_U8("graphics/pokemon/front_pics/snorunt_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Snorunt[] = INCBIN_U8("graphics/pokemon/palettes/snorunt_palette.gbapal.lz"); +const u8 gMonBackPic_Snorunt[] = INCBIN_U8("graphics/pokemon/back_pics/snorunt_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Snorunt[] = INCBIN_U8("graphics/pokemon/palettes/snorunt_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Snorunt[] = INCBIN_U8("graphics/pokemon/icons/snorunt_icon.4bpp"); +const u8 gMonFootprint_Snorunt[] = INCBIN_U8("graphics/pokemon/footprints/snorunt_footprint.1bpp"); + +const u8 gMonStillFrontPic_Glalie[] = INCBIN_U8("graphics/pokemon/front_pics/glalie_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Glalie[] = INCBIN_U8("graphics/pokemon/palettes/glalie_palette.gbapal.lz"); +const u8 gMonBackPic_Glalie[] = INCBIN_U8("graphics/pokemon/back_pics/glalie_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Glalie[] = INCBIN_U8("graphics/pokemon/palettes/glalie_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Glalie[] = INCBIN_U8("graphics/pokemon/icons/glalie_icon.4bpp"); +const u8 gMonFootprint_Glalie[] = INCBIN_U8("graphics/pokemon/footprints/glalie_footprint.1bpp"); + +const u8 gMonStillFrontPic_Lunatone[] = INCBIN_U8("graphics/pokemon/front_pics/lunatone_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Lunatone[] = INCBIN_U8("graphics/pokemon/palettes/lunatone_palette.gbapal.lz"); +const u8 gMonBackPic_Lunatone[] = INCBIN_U8("graphics/pokemon/back_pics/lunatone_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Lunatone[] = INCBIN_U8("graphics/pokemon/palettes/lunatone_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Lunatone[] = INCBIN_U8("graphics/pokemon/icons/lunatone_icon.4bpp"); +const u8 gMonFootprint_Lunatone[] = INCBIN_U8("graphics/pokemon/footprints/lunatone_footprint.1bpp"); + +const u8 gMonStillFrontPic_Solrock[] = INCBIN_U8("graphics/pokemon/front_pics/solrock_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Solrock[] = INCBIN_U8("graphics/pokemon/palettes/solrock_palette.gbapal.lz"); +const u8 gMonBackPic_Solrock[] = INCBIN_U8("graphics/pokemon/back_pics/solrock_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Solrock[] = INCBIN_U8("graphics/pokemon/palettes/solrock_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Solrock[] = INCBIN_U8("graphics/pokemon/icons/solrock_icon.4bpp"); +const u8 gMonFootprint_Solrock[] = INCBIN_U8("graphics/pokemon/footprints/solrock_footprint.1bpp"); + +const u8 gMonStillFrontPic_Azurill[] = INCBIN_U8("graphics/pokemon/front_pics/azurill_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Azurill[] = INCBIN_U8("graphics/pokemon/palettes/azurill_palette.gbapal.lz"); +const u8 gMonBackPic_Azurill[] = INCBIN_U8("graphics/pokemon/back_pics/azurill_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Azurill[] = INCBIN_U8("graphics/pokemon/palettes/azurill_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Azurill[] = INCBIN_U8("graphics/pokemon/icons/azurill_icon.4bpp"); +const u8 gMonFootprint_Azurill[] = INCBIN_U8("graphics/pokemon/footprints/azurill_footprint.1bpp"); + +const u8 gMonStillFrontPic_Spoink[] = INCBIN_U8("graphics/pokemon/front_pics/spoink_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Spoink[] = INCBIN_U8("graphics/pokemon/palettes/spoink_palette.gbapal.lz"); +const u8 gMonBackPic_Spoink[] = INCBIN_U8("graphics/pokemon/back_pics/spoink_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Spoink[] = INCBIN_U8("graphics/pokemon/palettes/spoink_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Spoink[] = INCBIN_U8("graphics/pokemon/icons/spoink_icon.4bpp"); +const u8 gMonFootprint_Spoink[] = INCBIN_U8("graphics/pokemon/footprints/spoink_footprint.1bpp"); + +const u8 gMonStillFrontPic_Grumpig[] = INCBIN_U8("graphics/pokemon/front_pics/grumpig_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Grumpig[] = INCBIN_U8("graphics/pokemon/palettes/grumpig_palette.gbapal.lz"); +const u8 gMonBackPic_Grumpig[] = INCBIN_U8("graphics/pokemon/back_pics/grumpig_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Grumpig[] = INCBIN_U8("graphics/pokemon/palettes/grumpig_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Grumpig[] = INCBIN_U8("graphics/pokemon/icons/grumpig_icon.4bpp"); +const u8 gMonFootprint_Grumpig[] = INCBIN_U8("graphics/pokemon/footprints/grumpig_footprint.1bpp"); + +const u8 gMonStillFrontPic_Plusle[] = INCBIN_U8("graphics/pokemon/front_pics/plusle_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Plusle[] = INCBIN_U8("graphics/pokemon/palettes/plusle_palette.gbapal.lz"); +const u8 gMonBackPic_Plusle[] = INCBIN_U8("graphics/pokemon/back_pics/plusle_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Plusle[] = INCBIN_U8("graphics/pokemon/palettes/plusle_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Plusle[] = INCBIN_U8("graphics/pokemon/icons/plusle_icon.4bpp"); +const u8 gMonFootprint_Plusle[] = INCBIN_U8("graphics/pokemon/footprints/plusle_footprint.1bpp"); + +const u8 gMonStillFrontPic_Minun[] = INCBIN_U8("graphics/pokemon/front_pics/minun_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Minun[] = INCBIN_U8("graphics/pokemon/palettes/minun_palette.gbapal.lz"); +const u8 gMonBackPic_Minun[] = INCBIN_U8("graphics/pokemon/back_pics/minun_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Minun[] = INCBIN_U8("graphics/pokemon/palettes/minun_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Minun[] = INCBIN_U8("graphics/pokemon/icons/minun_icon.4bpp"); +const u8 gMonFootprint_Minun[] = INCBIN_U8("graphics/pokemon/footprints/minun_footprint.1bpp"); + +const u8 gMonStillFrontPic_Mawile[] = INCBIN_U8("graphics/pokemon/front_pics/mawile_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Mawile[] = INCBIN_U8("graphics/pokemon/palettes/mawile_palette.gbapal.lz"); +const u8 gMonBackPic_Mawile[] = INCBIN_U8("graphics/pokemon/back_pics/mawile_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Mawile[] = INCBIN_U8("graphics/pokemon/palettes/mawile_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Mawile[] = INCBIN_U8("graphics/pokemon/icons/mawile_icon.4bpp"); +const u8 gMonFootprint_Mawile[] = INCBIN_U8("graphics/pokemon/footprints/mawile_footprint.1bpp"); + +const u8 gMonStillFrontPic_Meditite[] = INCBIN_U8("graphics/pokemon/front_pics/meditite_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Meditite[] = INCBIN_U8("graphics/pokemon/palettes/meditite_palette.gbapal.lz"); +const u8 gMonBackPic_Meditite[] = INCBIN_U8("graphics/pokemon/back_pics/meditite_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Meditite[] = INCBIN_U8("graphics/pokemon/palettes/meditite_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Meditite[] = INCBIN_U8("graphics/pokemon/icons/meditite_icon.4bpp"); +const u8 gMonFootprint_Meditite[] = INCBIN_U8("graphics/pokemon/footprints/meditite_footprint.1bpp"); + +const u8 gMonStillFrontPic_Medicham[] = INCBIN_U8("graphics/pokemon/front_pics/medicham_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Medicham[] = INCBIN_U8("graphics/pokemon/palettes/medicham_palette.gbapal.lz"); +const u8 gMonBackPic_Medicham[] = INCBIN_U8("graphics/pokemon/back_pics/medicham_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Medicham[] = INCBIN_U8("graphics/pokemon/palettes/medicham_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Medicham[] = INCBIN_U8("graphics/pokemon/icons/medicham_icon.4bpp"); +const u8 gMonFootprint_Medicham[] = INCBIN_U8("graphics/pokemon/footprints/medicham_footprint.1bpp"); + +const u8 gMonStillFrontPic_Swablu[] = INCBIN_U8("graphics/pokemon/front_pics/swablu_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Swablu[] = INCBIN_U8("graphics/pokemon/palettes/swablu_palette.gbapal.lz"); +const u8 gMonBackPic_Swablu[] = INCBIN_U8("graphics/pokemon/back_pics/swablu_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Swablu[] = INCBIN_U8("graphics/pokemon/palettes/swablu_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Swablu[] = INCBIN_U8("graphics/pokemon/icons/swablu_icon.4bpp"); +const u8 gMonFootprint_Swablu[] = INCBIN_U8("graphics/pokemon/footprints/swablu_footprint.1bpp"); + +const u8 gMonStillFrontPic_Altaria[] = INCBIN_U8("graphics/pokemon/front_pics/altaria_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Altaria[] = INCBIN_U8("graphics/pokemon/palettes/altaria_palette.gbapal.lz"); +const u8 gMonBackPic_Altaria[] = INCBIN_U8("graphics/pokemon/back_pics/altaria_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Altaria[] = INCBIN_U8("graphics/pokemon/palettes/altaria_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Altaria[] = INCBIN_U8("graphics/pokemon/icons/altaria_icon.4bpp"); +const u8 gMonFootprint_Altaria[] = INCBIN_U8("graphics/pokemon/footprints/altaria_footprint.1bpp"); + +const u8 gMonStillFrontPic_Wynaut[] = INCBIN_U8("graphics/pokemon/front_pics/wynaut_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Wynaut[] = INCBIN_U8("graphics/pokemon/palettes/wynaut_palette.gbapal.lz"); +const u8 gMonBackPic_Wynaut[] = INCBIN_U8("graphics/pokemon/back_pics/wynaut_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Wynaut[] = INCBIN_U8("graphics/pokemon/palettes/wynaut_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Wynaut[] = INCBIN_U8("graphics/pokemon/icons/wynaut_icon.4bpp"); +const u8 gMonFootprint_Wynaut[] = INCBIN_U8("graphics/pokemon/footprints/wynaut_footprint.1bpp"); + +const u8 gMonStillFrontPic_Duskull[] = INCBIN_U8("graphics/pokemon/front_pics/duskull_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Duskull[] = INCBIN_U8("graphics/pokemon/palettes/duskull_palette.gbapal.lz"); +const u8 gMonBackPic_Duskull[] = INCBIN_U8("graphics/pokemon/back_pics/duskull_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Duskull[] = INCBIN_U8("graphics/pokemon/palettes/duskull_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Duskull[] = INCBIN_U8("graphics/pokemon/icons/duskull_icon.4bpp"); +const u8 gMonFootprint_Duskull[] = INCBIN_U8("graphics/pokemon/footprints/duskull_footprint.1bpp"); + +const u8 gMonStillFrontPic_Dusclops[] = INCBIN_U8("graphics/pokemon/front_pics/dusclops_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Dusclops[] = INCBIN_U8("graphics/pokemon/palettes/dusclops_palette.gbapal.lz"); +const u8 gMonBackPic_Dusclops[] = INCBIN_U8("graphics/pokemon/back_pics/dusclops_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Dusclops[] = INCBIN_U8("graphics/pokemon/palettes/dusclops_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Dusclops[] = INCBIN_U8("graphics/pokemon/icons/dusclops_icon.4bpp"); +const u8 gMonFootprint_Dusclops[] = INCBIN_U8("graphics/pokemon/footprints/dusclops_footprint.1bpp"); + +const u8 gMonStillFrontPic_Roselia[] = INCBIN_U8("graphics/pokemon/front_pics/roselia_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Roselia[] = INCBIN_U8("graphics/pokemon/palettes/roselia_palette.gbapal.lz"); +const u8 gMonBackPic_Roselia[] = INCBIN_U8("graphics/pokemon/back_pics/roselia_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Roselia[] = INCBIN_U8("graphics/pokemon/palettes/roselia_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Roselia[] = INCBIN_U8("graphics/pokemon/icons/roselia_icon.4bpp"); +const u8 gMonFootprint_Roselia[] = INCBIN_U8("graphics/pokemon/footprints/roselia_footprint.1bpp"); + +const u8 gMonStillFrontPic_Slakoth[] = INCBIN_U8("graphics/pokemon/front_pics/slakoth_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Slakoth[] = INCBIN_U8("graphics/pokemon/palettes/slakoth_palette.gbapal.lz"); +const u8 gMonBackPic_Slakoth[] = INCBIN_U8("graphics/pokemon/back_pics/slakoth_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Slakoth[] = INCBIN_U8("graphics/pokemon/palettes/slakoth_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Slakoth[] = INCBIN_U8("graphics/pokemon/icons/slakoth_icon.4bpp"); +const u8 gMonFootprint_Slakoth[] = INCBIN_U8("graphics/pokemon/footprints/slakoth_footprint.1bpp"); + +const u8 gMonStillFrontPic_Vigoroth[] = INCBIN_U8("graphics/pokemon/front_pics/vigoroth_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Vigoroth[] = INCBIN_U8("graphics/pokemon/palettes/vigoroth_palette.gbapal.lz"); +const u8 gMonBackPic_Vigoroth[] = INCBIN_U8("graphics/pokemon/back_pics/vigoroth_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Vigoroth[] = INCBIN_U8("graphics/pokemon/palettes/vigoroth_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Vigoroth[] = INCBIN_U8("graphics/pokemon/icons/vigoroth_icon.4bpp"); +const u8 gMonFootprint_Vigoroth[] = INCBIN_U8("graphics/pokemon/footprints/vigoroth_footprint.1bpp"); + +const u8 gMonStillFrontPic_Slaking[] = INCBIN_U8("graphics/pokemon/front_pics/slaking_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Slaking[] = INCBIN_U8("graphics/pokemon/palettes/slaking_palette.gbapal.lz"); +const u8 gMonBackPic_Slaking[] = INCBIN_U8("graphics/pokemon/back_pics/slaking_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Slaking[] = INCBIN_U8("graphics/pokemon/palettes/slaking_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Slaking[] = INCBIN_U8("graphics/pokemon/icons/slaking_icon.4bpp"); +const u8 gMonFootprint_Slaking[] = INCBIN_U8("graphics/pokemon/footprints/slaking_footprint.1bpp"); + +const u8 gMonStillFrontPic_Gulpin[] = INCBIN_U8("graphics/pokemon/front_pics/gulpin_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Gulpin[] = INCBIN_U8("graphics/pokemon/palettes/gulpin_palette.gbapal.lz"); +const u8 gMonBackPic_Gulpin[] = INCBIN_U8("graphics/pokemon/back_pics/gulpin_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Gulpin[] = INCBIN_U8("graphics/pokemon/palettes/gulpin_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Gulpin[] = INCBIN_U8("graphics/pokemon/icons/gulpin_icon.4bpp"); +const u8 gMonFootprint_Gulpin[] = INCBIN_U8("graphics/pokemon/footprints/gulpin_footprint.1bpp"); + +const u8 gMonStillFrontPic_Swalot[] = INCBIN_U8("graphics/pokemon/front_pics/swalot_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Swalot[] = INCBIN_U8("graphics/pokemon/palettes/swalot_palette.gbapal.lz"); +const u8 gMonBackPic_Swalot[] = INCBIN_U8("graphics/pokemon/back_pics/swalot_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Swalot[] = INCBIN_U8("graphics/pokemon/palettes/swalot_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Swalot[] = INCBIN_U8("graphics/pokemon/icons/swalot_icon.4bpp"); +const u8 gMonFootprint_Swalot[] = INCBIN_U8("graphics/pokemon/footprints/swalot_footprint.1bpp"); + +const u8 gMonStillFrontPic_Tropius[] = INCBIN_U8("graphics/pokemon/front_pics/tropius_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Tropius[] = INCBIN_U8("graphics/pokemon/palettes/tropius_palette.gbapal.lz"); +const u8 gMonBackPic_Tropius[] = INCBIN_U8("graphics/pokemon/back_pics/tropius_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Tropius[] = INCBIN_U8("graphics/pokemon/palettes/tropius_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Tropius[] = INCBIN_U8("graphics/pokemon/icons/tropius_icon.4bpp"); +const u8 gMonFootprint_Tropius[] = INCBIN_U8("graphics/pokemon/footprints/tropius_footprint.1bpp"); + +const u8 gMonStillFrontPic_Whismur[] = INCBIN_U8("graphics/pokemon/front_pics/whismur_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Whismur[] = INCBIN_U8("graphics/pokemon/palettes/whismur_palette.gbapal.lz"); +const u8 gMonBackPic_Whismur[] = INCBIN_U8("graphics/pokemon/back_pics/whismur_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Whismur[] = INCBIN_U8("graphics/pokemon/palettes/whismur_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Whismur[] = INCBIN_U8("graphics/pokemon/icons/whismur_icon.4bpp"); +const u8 gMonFootprint_Whismur[] = INCBIN_U8("graphics/pokemon/footprints/whismur_footprint.1bpp"); + +const u8 gMonStillFrontPic_Loudred[] = INCBIN_U8("graphics/pokemon/front_pics/loudred_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Loudred[] = INCBIN_U8("graphics/pokemon/palettes/loudred_palette.gbapal.lz"); +const u8 gMonBackPic_Loudred[] = INCBIN_U8("graphics/pokemon/back_pics/loudred_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Loudred[] = INCBIN_U8("graphics/pokemon/palettes/loudred_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Loudred[] = INCBIN_U8("graphics/pokemon/icons/loudred_icon.4bpp"); +const u8 gMonFootprint_Loudred[] = INCBIN_U8("graphics/pokemon/footprints/loudred_footprint.1bpp"); + +const u8 gMonStillFrontPic_Exploud[] = INCBIN_U8("graphics/pokemon/front_pics/exploud_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Exploud[] = INCBIN_U8("graphics/pokemon/palettes/exploud_palette.gbapal.lz"); +const u8 gMonBackPic_Exploud[] = INCBIN_U8("graphics/pokemon/back_pics/exploud_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Exploud[] = INCBIN_U8("graphics/pokemon/palettes/exploud_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Exploud[] = INCBIN_U8("graphics/pokemon/icons/exploud_icon.4bpp"); +const u8 gMonFootprint_Exploud[] = INCBIN_U8("graphics/pokemon/footprints/exploud_footprint.1bpp"); + +const u8 gMonStillFrontPic_Clamperl[] = INCBIN_U8("graphics/pokemon/front_pics/clamperl_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Clamperl[] = INCBIN_U8("graphics/pokemon/palettes/clamperl_palette.gbapal.lz"); +const u8 gMonBackPic_Clamperl[] = INCBIN_U8("graphics/pokemon/back_pics/clamperl_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Clamperl[] = INCBIN_U8("graphics/pokemon/palettes/clamperl_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Clamperl[] = INCBIN_U8("graphics/pokemon/icons/clamperl_icon.4bpp"); +const u8 gMonFootprint_Clamperl[] = INCBIN_U8("graphics/pokemon/footprints/clamperl_footprint.1bpp"); + +const u8 gMonStillFrontPic_Huntail[] = INCBIN_U8("graphics/pokemon/front_pics/huntail_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Huntail[] = INCBIN_U8("graphics/pokemon/palettes/huntail_palette.gbapal.lz"); +const u8 gMonBackPic_Huntail[] = INCBIN_U8("graphics/pokemon/back_pics/huntail_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Huntail[] = INCBIN_U8("graphics/pokemon/palettes/huntail_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Huntail[] = INCBIN_U8("graphics/pokemon/icons/huntail_icon.4bpp"); +const u8 gMonFootprint_Huntail[] = INCBIN_U8("graphics/pokemon/footprints/huntail_footprint.1bpp"); + +const u8 gMonStillFrontPic_Gorebyss[] = INCBIN_U8("graphics/pokemon/front_pics/gorebyss_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Gorebyss[] = INCBIN_U8("graphics/pokemon/palettes/gorebyss_palette.gbapal.lz"); +const u8 gMonBackPic_Gorebyss[] = INCBIN_U8("graphics/pokemon/back_pics/gorebyss_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Gorebyss[] = INCBIN_U8("graphics/pokemon/palettes/gorebyss_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Gorebyss[] = INCBIN_U8("graphics/pokemon/icons/gorebyss_icon.4bpp"); +const u8 gMonFootprint_Gorebyss[] = INCBIN_U8("graphics/pokemon/footprints/gorebyss_footprint.1bpp"); + +const u8 gMonStillFrontPic_Absol[] = INCBIN_U8("graphics/pokemon/front_pics/absol_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Absol[] = INCBIN_U8("graphics/pokemon/palettes/absol_palette.gbapal.lz"); +const u8 gMonBackPic_Absol[] = INCBIN_U8("graphics/pokemon/back_pics/absol_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Absol[] = INCBIN_U8("graphics/pokemon/palettes/absol_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Absol[] = INCBIN_U8("graphics/pokemon/icons/absol_icon.4bpp"); +const u8 gMonFootprint_Absol[] = INCBIN_U8("graphics/pokemon/footprints/absol_footprint.1bpp"); + +const u8 gMonStillFrontPic_Shuppet[] = INCBIN_U8("graphics/pokemon/front_pics/shuppet_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Shuppet[] = INCBIN_U8("graphics/pokemon/palettes/shuppet_palette.gbapal.lz"); +const u8 gMonBackPic_Shuppet[] = INCBIN_U8("graphics/pokemon/back_pics/shuppet_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Shuppet[] = INCBIN_U8("graphics/pokemon/palettes/shuppet_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Shuppet[] = INCBIN_U8("graphics/pokemon/icons/shuppet_icon.4bpp"); +const u8 gMonFootprint_Shuppet[] = INCBIN_U8("graphics/pokemon/footprints/shuppet_footprint.1bpp"); + +const u8 gMonStillFrontPic_Banette[] = INCBIN_U8("graphics/pokemon/front_pics/banette_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Banette[] = INCBIN_U8("graphics/pokemon/palettes/banette_palette.gbapal.lz"); +const u8 gMonBackPic_Banette[] = INCBIN_U8("graphics/pokemon/back_pics/banette_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Banette[] = INCBIN_U8("graphics/pokemon/palettes/banette_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Banette[] = INCBIN_U8("graphics/pokemon/icons/banette_icon.4bpp"); +const u8 gMonFootprint_Banette[] = INCBIN_U8("graphics/pokemon/footprints/banette_footprint.1bpp"); + +const u8 gMonStillFrontPic_Seviper[] = INCBIN_U8("graphics/pokemon/front_pics/seviper_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Seviper[] = INCBIN_U8("graphics/pokemon/palettes/seviper_palette.gbapal.lz"); +const u8 gMonBackPic_Seviper[] = INCBIN_U8("graphics/pokemon/back_pics/seviper_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Seviper[] = INCBIN_U8("graphics/pokemon/palettes/seviper_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Seviper[] = INCBIN_U8("graphics/pokemon/icons/seviper_icon.4bpp"); +const u8 gMonFootprint_Seviper[] = INCBIN_U8("graphics/pokemon/footprints/seviper_footprint.1bpp"); + +const u8 gMonStillFrontPic_Zangoose[] = INCBIN_U8("graphics/pokemon/front_pics/zangoose_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Zangoose[] = INCBIN_U8("graphics/pokemon/palettes/zangoose_palette.gbapal.lz"); +const u8 gMonBackPic_Zangoose[] = INCBIN_U8("graphics/pokemon/back_pics/zangoose_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Zangoose[] = INCBIN_U8("graphics/pokemon/palettes/zangoose_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Zangoose[] = INCBIN_U8("graphics/pokemon/icons/zangoose_icon.4bpp"); +const u8 gMonFootprint_Zangoose[] = INCBIN_U8("graphics/pokemon/footprints/zangoose_footprint.1bpp"); + +const u8 gMonStillFrontPic_Relicanth[] = INCBIN_U8("graphics/pokemon/front_pics/relicanth_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Relicanth[] = INCBIN_U8("graphics/pokemon/palettes/relicanth_palette.gbapal.lz"); +const u8 gMonBackPic_Relicanth[] = INCBIN_U8("graphics/pokemon/back_pics/relicanth_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Relicanth[] = INCBIN_U8("graphics/pokemon/palettes/relicanth_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Relicanth[] = INCBIN_U8("graphics/pokemon/icons/relicanth_icon.4bpp"); +const u8 gMonFootprint_Relicanth[] = INCBIN_U8("graphics/pokemon/footprints/relicanth_footprint.1bpp"); + +const u8 gMonStillFrontPic_Aron[] = INCBIN_U8("graphics/pokemon/front_pics/aron_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Aron[] = INCBIN_U8("graphics/pokemon/palettes/aron_palette.gbapal.lz"); +const u8 gMonBackPic_Aron[] = INCBIN_U8("graphics/pokemon/back_pics/aron_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Aron[] = INCBIN_U8("graphics/pokemon/palettes/aron_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Aron[] = INCBIN_U8("graphics/pokemon/icons/aron_icon.4bpp"); +const u8 gMonFootprint_Aron[] = INCBIN_U8("graphics/pokemon/footprints/aron_footprint.1bpp"); + +const u8 gMonStillFrontPic_Lairon[] = INCBIN_U8("graphics/pokemon/front_pics/lairon_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Lairon[] = INCBIN_U8("graphics/pokemon/palettes/lairon_palette.gbapal.lz"); +const u8 gMonBackPic_Lairon[] = INCBIN_U8("graphics/pokemon/back_pics/lairon_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Lairon[] = INCBIN_U8("graphics/pokemon/palettes/lairon_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Lairon[] = INCBIN_U8("graphics/pokemon/icons/lairon_icon.4bpp"); +const u8 gMonFootprint_Lairon[] = INCBIN_U8("graphics/pokemon/footprints/lairon_footprint.1bpp"); + +const u8 gMonStillFrontPic_Aggron[] = INCBIN_U8("graphics/pokemon/front_pics/aggron_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Aggron[] = INCBIN_U8("graphics/pokemon/palettes/aggron_palette.gbapal.lz"); +const u8 gMonBackPic_Aggron[] = INCBIN_U8("graphics/pokemon/back_pics/aggron_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Aggron[] = INCBIN_U8("graphics/pokemon/palettes/aggron_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Aggron[] = INCBIN_U8("graphics/pokemon/icons/aggron_icon.4bpp"); +const u8 gMonFootprint_Aggron[] = INCBIN_U8("graphics/pokemon/footprints/aggron_footprint.1bpp"); + +const u8 gMonStillFrontPic_Castform[] = INCBIN_U8("graphics/pokemon/front_pics/castform_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Castform[] = INCBIN_U8("graphics/pokemon/palettes/castform_palette.gbapal.lz"); +const u8 gMonBackPic_Castform[] = INCBIN_U8("graphics/pokemon/back_pics/castform_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Castform[] = INCBIN_U8("graphics/pokemon/palettes/castform_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Castform[] = INCBIN_U8("graphics/pokemon/icons/castform_icon.4bpp"); +const u8 gMonFootprint_Castform[] = INCBIN_U8("graphics/pokemon/footprints/castform_footprint.1bpp"); + +const u8 gMonStillFrontPic_Volbeat[] = INCBIN_U8("graphics/pokemon/front_pics/volbeat_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Volbeat[] = INCBIN_U8("graphics/pokemon/palettes/volbeat_palette.gbapal.lz"); +const u8 gMonBackPic_Volbeat[] = INCBIN_U8("graphics/pokemon/back_pics/volbeat_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Volbeat[] = INCBIN_U8("graphics/pokemon/palettes/volbeat_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Volbeat[] = INCBIN_U8("graphics/pokemon/icons/volbeat_icon.4bpp"); +const u8 gMonFootprint_Volbeat[] = INCBIN_U8("graphics/pokemon/footprints/volbeat_footprint.1bpp"); + +const u8 gMonStillFrontPic_Illumise[] = INCBIN_U8("graphics/pokemon/front_pics/illumise_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Illumise[] = INCBIN_U8("graphics/pokemon/palettes/illumise_palette.gbapal.lz"); +const u8 gMonBackPic_Illumise[] = INCBIN_U8("graphics/pokemon/back_pics/illumise_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Illumise[] = INCBIN_U8("graphics/pokemon/palettes/illumise_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Illumise[] = INCBIN_U8("graphics/pokemon/icons/illumise_icon.4bpp"); +const u8 gMonFootprint_Illumise[] = INCBIN_U8("graphics/pokemon/footprints/illumise_footprint.1bpp"); + +const u8 gMonStillFrontPic_Lileep[] = INCBIN_U8("graphics/pokemon/front_pics/lileep_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Lileep[] = INCBIN_U8("graphics/pokemon/palettes/lileep_palette.gbapal.lz"); +const u8 gMonBackPic_Lileep[] = INCBIN_U8("graphics/pokemon/back_pics/lileep_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Lileep[] = INCBIN_U8("graphics/pokemon/palettes/lileep_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Lileep[] = INCBIN_U8("graphics/pokemon/icons/lileep_icon.4bpp"); +const u8 gMonFootprint_Lileep[] = INCBIN_U8("graphics/pokemon/footprints/lileep_footprint.1bpp"); + +const u8 gMonStillFrontPic_Cradily[] = INCBIN_U8("graphics/pokemon/front_pics/cradily_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Cradily[] = INCBIN_U8("graphics/pokemon/palettes/cradily_palette.gbapal.lz"); +const u8 gMonBackPic_Cradily[] = INCBIN_U8("graphics/pokemon/back_pics/cradily_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Cradily[] = INCBIN_U8("graphics/pokemon/palettes/cradily_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Cradily[] = INCBIN_U8("graphics/pokemon/icons/cradily_icon.4bpp"); +const u8 gMonFootprint_Cradily[] = INCBIN_U8("graphics/pokemon/footprints/cradily_footprint.1bpp"); + +const u8 gMonStillFrontPic_Anorith[] = INCBIN_U8("graphics/pokemon/front_pics/anorith_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Anorith[] = INCBIN_U8("graphics/pokemon/palettes/anorith_palette.gbapal.lz"); +const u8 gMonBackPic_Anorith[] = INCBIN_U8("graphics/pokemon/back_pics/anorith_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Anorith[] = INCBIN_U8("graphics/pokemon/palettes/anorith_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Anorith[] = INCBIN_U8("graphics/pokemon/icons/anorith_icon.4bpp"); +const u8 gMonFootprint_Anorith[] = INCBIN_U8("graphics/pokemon/footprints/anorith_footprint.1bpp"); + +const u8 gMonStillFrontPic_Armaldo[] = INCBIN_U8("graphics/pokemon/front_pics/armaldo_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Armaldo[] = INCBIN_U8("graphics/pokemon/palettes/armaldo_palette.gbapal.lz"); +const u8 gMonBackPic_Armaldo[] = INCBIN_U8("graphics/pokemon/back_pics/armaldo_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Armaldo[] = INCBIN_U8("graphics/pokemon/palettes/armaldo_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Armaldo[] = INCBIN_U8("graphics/pokemon/icons/armaldo_icon.4bpp"); +const u8 gMonFootprint_Armaldo[] = INCBIN_U8("graphics/pokemon/footprints/armaldo_footprint.1bpp"); + +const u8 gMonStillFrontPic_Ralts[] = INCBIN_U8("graphics/pokemon/front_pics/ralts_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Ralts[] = INCBIN_U8("graphics/pokemon/palettes/ralts_palette.gbapal.lz"); +const u8 gMonBackPic_Ralts[] = INCBIN_U8("graphics/pokemon/back_pics/ralts_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Ralts[] = INCBIN_U8("graphics/pokemon/palettes/ralts_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Ralts[] = INCBIN_U8("graphics/pokemon/icons/ralts_icon.4bpp"); +const u8 gMonFootprint_Ralts[] = INCBIN_U8("graphics/pokemon/footprints/ralts_footprint.1bpp"); + +const u8 gMonStillFrontPic_Kirlia[] = INCBIN_U8("graphics/pokemon/front_pics/kirlia_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Kirlia[] = INCBIN_U8("graphics/pokemon/palettes/kirlia_palette.gbapal.lz"); +const u8 gMonBackPic_Kirlia[] = INCBIN_U8("graphics/pokemon/back_pics/kirlia_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Kirlia[] = INCBIN_U8("graphics/pokemon/palettes/kirlia_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Kirlia[] = INCBIN_U8("graphics/pokemon/icons/kirlia_icon.4bpp"); +const u8 gMonFootprint_Kirlia[] = INCBIN_U8("graphics/pokemon/footprints/kirlia_footprint.1bpp"); + +const u8 gMonStillFrontPic_Gardevoir[] = INCBIN_U8("graphics/pokemon/front_pics/gardevoir_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Gardevoir[] = INCBIN_U8("graphics/pokemon/palettes/gardevoir_palette.gbapal.lz"); +const u8 gMonBackPic_Gardevoir[] = INCBIN_U8("graphics/pokemon/back_pics/gardevoir_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Gardevoir[] = INCBIN_U8("graphics/pokemon/palettes/gardevoir_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Gardevoir[] = INCBIN_U8("graphics/pokemon/icons/gardevoir_icon.4bpp"); +const u8 gMonFootprint_Gardevoir[] = INCBIN_U8("graphics/pokemon/footprints/gardevoir_footprint.1bpp"); + +const u8 gMonStillFrontPic_Bagon[] = INCBIN_U8("graphics/pokemon/front_pics/bagon_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Bagon[] = INCBIN_U8("graphics/pokemon/palettes/bagon_palette.gbapal.lz"); +const u8 gMonBackPic_Bagon[] = INCBIN_U8("graphics/pokemon/back_pics/bagon_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Bagon[] = INCBIN_U8("graphics/pokemon/palettes/bagon_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Bagon[] = INCBIN_U8("graphics/pokemon/icons/bagon_icon.4bpp"); +const u8 gMonFootprint_Bagon[] = INCBIN_U8("graphics/pokemon/footprints/bagon_footprint.1bpp"); + +const u8 gMonStillFrontPic_Shelgon[] = INCBIN_U8("graphics/pokemon/front_pics/shelgon_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Shelgon[] = INCBIN_U8("graphics/pokemon/palettes/shelgon_palette.gbapal.lz"); +const u8 gMonBackPic_Shelgon[] = INCBIN_U8("graphics/pokemon/back_pics/shelgon_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Shelgon[] = INCBIN_U8("graphics/pokemon/palettes/shelgon_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Shelgon[] = INCBIN_U8("graphics/pokemon/icons/shelgon_icon.4bpp"); +const u8 gMonFootprint_Shelgon[] = INCBIN_U8("graphics/pokemon/footprints/shelgon_footprint.1bpp"); + +const u8 gMonStillFrontPic_Salamence[] = INCBIN_U8("graphics/pokemon/front_pics/salamence_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Salamence[] = INCBIN_U8("graphics/pokemon/palettes/salamence_palette.gbapal.lz"); +const u8 gMonBackPic_Salamence[] = INCBIN_U8("graphics/pokemon/back_pics/salamence_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Salamence[] = INCBIN_U8("graphics/pokemon/palettes/salamence_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Salamence[] = INCBIN_U8("graphics/pokemon/icons/salamence_icon.4bpp"); +const u8 gMonFootprint_Salamence[] = INCBIN_U8("graphics/pokemon/footprints/salamence_footprint.1bpp"); + +const u8 gMonStillFrontPic_Beldum[] = INCBIN_U8("graphics/pokemon/front_pics/beldum_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Beldum[] = INCBIN_U8("graphics/pokemon/palettes/beldum_palette.gbapal.lz"); +const u8 gMonBackPic_Beldum[] = INCBIN_U8("graphics/pokemon/back_pics/beldum_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Beldum[] = INCBIN_U8("graphics/pokemon/palettes/beldum_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Beldum[] = INCBIN_U8("graphics/pokemon/icons/beldum_icon.4bpp"); +const u8 gMonFootprint_Beldum[] = INCBIN_U8("graphics/pokemon/footprints/beldum_footprint.1bpp"); + +const u8 gMonStillFrontPic_Metang[] = INCBIN_U8("graphics/pokemon/front_pics/metang_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Metang[] = INCBIN_U8("graphics/pokemon/palettes/metang_palette.gbapal.lz"); +const u8 gMonBackPic_Metang[] = INCBIN_U8("graphics/pokemon/back_pics/metang_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Metang[] = INCBIN_U8("graphics/pokemon/palettes/metang_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Metang[] = INCBIN_U8("graphics/pokemon/icons/metang_icon.4bpp"); +const u8 gMonFootprint_Metang[] = INCBIN_U8("graphics/pokemon/footprints/metang_footprint.1bpp"); + +const u8 gMonStillFrontPic_Metagross[] = INCBIN_U8("graphics/pokemon/front_pics/metagross_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Metagross[] = INCBIN_U8("graphics/pokemon/palettes/metagross_palette.gbapal.lz"); +const u8 gMonBackPic_Metagross[] = INCBIN_U8("graphics/pokemon/back_pics/metagross_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Metagross[] = INCBIN_U8("graphics/pokemon/palettes/metagross_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Metagross[] = INCBIN_U8("graphics/pokemon/icons/metagross_icon.4bpp"); +const u8 gMonFootprint_Metagross[] = INCBIN_U8("graphics/pokemon/footprints/metagross_footprint.1bpp"); + +const u8 gMonStillFrontPic_Regirock[] = INCBIN_U8("graphics/pokemon/front_pics/regirock_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Regirock[] = INCBIN_U8("graphics/pokemon/palettes/regirock_palette.gbapal.lz"); +const u8 gMonBackPic_Regirock[] = INCBIN_U8("graphics/pokemon/back_pics/regirock_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Regirock[] = INCBIN_U8("graphics/pokemon/palettes/regirock_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Regirock[] = INCBIN_U8("graphics/pokemon/icons/regirock_icon.4bpp"); +const u8 gMonFootprint_Regirock[] = INCBIN_U8("graphics/pokemon/footprints/regirock_footprint.1bpp"); + +const u8 gMonStillFrontPic_Regice[] = INCBIN_U8("graphics/pokemon/front_pics/regice_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Regice[] = INCBIN_U8("graphics/pokemon/palettes/regice_palette.gbapal.lz"); +const u8 gMonBackPic_Regice[] = INCBIN_U8("graphics/pokemon/back_pics/regice_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Regice[] = INCBIN_U8("graphics/pokemon/palettes/regice_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Regice[] = INCBIN_U8("graphics/pokemon/icons/regice_icon.4bpp"); +const u8 gMonFootprint_Regice[] = INCBIN_U8("graphics/pokemon/footprints/regice_footprint.1bpp"); + +const u8 gMonStillFrontPic_Registeel[] = INCBIN_U8("graphics/pokemon/front_pics/registeel_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Registeel[] = INCBIN_U8("graphics/pokemon/palettes/registeel_palette.gbapal.lz"); +const u8 gMonBackPic_Registeel[] = INCBIN_U8("graphics/pokemon/back_pics/registeel_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Registeel[] = INCBIN_U8("graphics/pokemon/palettes/registeel_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Registeel[] = INCBIN_U8("graphics/pokemon/icons/registeel_icon.4bpp"); +const u8 gMonFootprint_Registeel[] = INCBIN_U8("graphics/pokemon/footprints/registeel_footprint.1bpp"); + +const u8 gMonStillFrontPic_Kyogre[] = INCBIN_U8("graphics/pokemon/front_pics/kyogre_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Kyogre[] = INCBIN_U8("graphics/pokemon/palettes/kyogre_palette.gbapal.lz"); +const u8 gMonBackPic_Kyogre[] = INCBIN_U8("graphics/pokemon/back_pics/kyogre_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Kyogre[] = INCBIN_U8("graphics/pokemon/palettes/kyogre_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Kyogre[] = INCBIN_U8("graphics/pokemon/icons/kyogre_icon.4bpp"); +const u8 gMonFootprint_Kyogre[] = INCBIN_U8("graphics/pokemon/footprints/kyogre_footprint.1bpp"); + +const u8 gMonStillFrontPic_Groudon[] = INCBIN_U8("graphics/pokemon/front_pics/groudon_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Groudon[] = INCBIN_U8("graphics/pokemon/palettes/groudon_palette.gbapal.lz"); +const u8 gMonBackPic_Groudon[] = INCBIN_U8("graphics/pokemon/back_pics/groudon_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Groudon[] = INCBIN_U8("graphics/pokemon/palettes/groudon_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Groudon[] = INCBIN_U8("graphics/pokemon/icons/groudon_icon.4bpp"); +const u8 gMonFootprint_Groudon[] = INCBIN_U8("graphics/pokemon/footprints/groudon_footprint.1bpp"); + +const u8 gMonStillFrontPic_Rayquaza[] = INCBIN_U8("graphics/pokemon/front_pics/rayquaza_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Rayquaza[] = INCBIN_U8("graphics/pokemon/palettes/rayquaza_palette.gbapal.lz"); +const u8 gMonBackPic_Rayquaza[] = INCBIN_U8("graphics/pokemon/back_pics/rayquaza_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Rayquaza[] = INCBIN_U8("graphics/pokemon/palettes/rayquaza_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Rayquaza[] = INCBIN_U8("graphics/pokemon/icons/rayquaza_icon.4bpp"); +const u8 gMonFootprint_Rayquaza[] = INCBIN_U8("graphics/pokemon/footprints/rayquaza_footprint.1bpp"); + +const u8 gMonStillFrontPic_Latias[] = INCBIN_U8("graphics/pokemon/front_pics/latias_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Latias[] = INCBIN_U8("graphics/pokemon/palettes/latias_palette.gbapal.lz"); +const u8 gMonBackPic_Latias[] = INCBIN_U8("graphics/pokemon/back_pics/latias_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Latias[] = INCBIN_U8("graphics/pokemon/palettes/latias_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Latias[] = INCBIN_U8("graphics/pokemon/icons/latias_icon.4bpp"); +const u8 gMonFootprint_Latias[] = INCBIN_U8("graphics/pokemon/footprints/latias_footprint.1bpp"); + +const u8 gMonStillFrontPic_Latios[] = INCBIN_U8("graphics/pokemon/front_pics/latios_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Latios[] = INCBIN_U8("graphics/pokemon/palettes/latios_palette.gbapal.lz"); +const u8 gMonBackPic_Latios[] = INCBIN_U8("graphics/pokemon/back_pics/latios_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Latios[] = INCBIN_U8("graphics/pokemon/palettes/latios_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Latios[] = INCBIN_U8("graphics/pokemon/icons/latios_icon.4bpp"); +const u8 gMonFootprint_Latios[] = INCBIN_U8("graphics/pokemon/footprints/latios_footprint.1bpp"); + +const u8 gMonStillFrontPic_Jirachi[] = INCBIN_U8("graphics/pokemon/front_pics/jirachi_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Jirachi[] = INCBIN_U8("graphics/pokemon/palettes/jirachi_palette.gbapal.lz"); +const u8 gMonBackPic_Jirachi[] = INCBIN_U8("graphics/pokemon/back_pics/jirachi_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Jirachi[] = INCBIN_U8("graphics/pokemon/palettes/jirachi_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Jirachi[] = INCBIN_U8("graphics/pokemon/icons/jirachi_icon.4bpp"); +const u8 gMonFootprint_Jirachi[] = INCBIN_U8("graphics/pokemon/footprints/jirachi_footprint.1bpp"); + +const u8 gMonStillFrontPic_Deoxys[] = INCBIN_U8("graphics/pokemon/front_pics/deoxys_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Deoxys[] = INCBIN_U8("graphics/pokemon/palettes/deoxys_palette.gbapal.lz"); +const u8 gMonBackPic_Deoxys[] = INCBIN_U8("graphics/pokemon/back_pics/deoxys_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Deoxys[] = INCBIN_U8("graphics/pokemon/palettes/deoxys_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Deoxys[] = INCBIN_U8("graphics/pokemon/icons/deoxys_icon.4bpp"); +const u8 gMonIcon_DeoxysSpeed[] = INCBIN_U8("graphics/pokemon/icons/deoxys_speed_icon.4bpp"); +const u8 gMonIcon_DeoxysSpeedWide[] = INCBIN_U8("graphics/unused/deoxys_speed_icon_wide.4bpp"); + +asm(".space 0x6800"); + +const u16 gUnknown_D437F8[] = INCBIN_U16("graphics/unknown/unknown_D437F8.bin"); + +const u8 gMonFootprint_Deoxys[] = INCBIN_U8("graphics/pokemon/footprints/deoxys_footprint.1bpp"); + +const u8 gMonStillFrontPic_Chimecho[] = INCBIN_U8("graphics/pokemon/front_pics/chimecho_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Chimecho[] = INCBIN_U8("graphics/pokemon/palettes/chimecho_palette.gbapal.lz"); +const u8 gMonBackPic_Chimecho[] = INCBIN_U8("graphics/pokemon/back_pics/chimecho_back_pic.4bpp.lz"); +const u8 gMonShinyPalette_Chimecho[] = INCBIN_U8("graphics/pokemon/palettes/chimecho_shiny_palette.gbapal.lz"); +const u8 gMonIcon_Chimecho[] = INCBIN_U8("graphics/pokemon/icons/chimecho_icon.4bpp"); +const u8 gMonFootprint_Chimecho[] = INCBIN_U8("graphics/pokemon/footprints/chimecho_footprint.1bpp"); + +const u8 gMonStillFrontPic_Egg[] = INCBIN_U8("graphics/pokemon/front_pics/egg_still_front_pic.4bpp.lz"); +const u8 gMonPalette_Egg[] = INCBIN_U8("graphics/pokemon/palettes/egg_palette.gbapal.lz"); + +const u8 gMonStillFrontPic_UnownB[] = INCBIN_U8("graphics/pokemon/front_pics/unown_b_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_UnownB[] = INCBIN_U8("graphics/pokemon/back_pics/unown_b_back_pic.4bpp.lz"); +const u8 gMonIcon_UnownB[] = INCBIN_U8("graphics/pokemon/icons/unown_B_icon.4bpp"); + +const u8 gMonStillFrontPic_UnownC[] = INCBIN_U8("graphics/pokemon/front_pics/unown_c_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_UnownC[] = INCBIN_U8("graphics/pokemon/back_pics/unown_c_back_pic.4bpp.lz"); +const u8 gMonIcon_UnownC[] = INCBIN_U8("graphics/pokemon/icons/unown_C_icon.4bpp"); + +const u8 gMonStillFrontPic_UnownD[] = INCBIN_U8("graphics/pokemon/front_pics/unown_d_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_UnownD[] = INCBIN_U8("graphics/pokemon/back_pics/unown_d_back_pic.4bpp.lz"); +const u8 gMonIcon_UnownD[] = INCBIN_U8("graphics/pokemon/icons/unown_D_icon.4bpp"); + +const u8 gMonStillFrontPic_UnownE[] = INCBIN_U8("graphics/pokemon/front_pics/unown_e_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_UnownE[] = INCBIN_U8("graphics/pokemon/back_pics/unown_e_back_pic.4bpp.lz"); +const u8 gMonIcon_UnownE[] = INCBIN_U8("graphics/pokemon/icons/unown_E_icon.4bpp"); + +const u8 gMonStillFrontPic_UnownF[] = INCBIN_U8("graphics/pokemon/front_pics/unown_f_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_UnownF[] = INCBIN_U8("graphics/pokemon/back_pics/unown_f_back_pic.4bpp.lz"); +const u8 gMonIcon_UnownF[] = INCBIN_U8("graphics/pokemon/icons/unown_F_icon.4bpp"); + +const u8 gMonStillFrontPic_UnownG[] = INCBIN_U8("graphics/pokemon/front_pics/unown_g_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_UnownG[] = INCBIN_U8("graphics/pokemon/back_pics/unown_g_back_pic.4bpp.lz"); +const u8 gMonIcon_UnownG[] = INCBIN_U8("graphics/pokemon/icons/unown_G_icon.4bpp"); + +const u8 gMonStillFrontPic_UnownH[] = INCBIN_U8("graphics/pokemon/front_pics/unown_h_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_UnownH[] = INCBIN_U8("graphics/pokemon/back_pics/unown_h_back_pic.4bpp.lz"); +const u8 gMonIcon_UnownH[] = INCBIN_U8("graphics/pokemon/icons/unown_H_icon.4bpp"); + +const u8 gMonStillFrontPic_UnownI[] = INCBIN_U8("graphics/pokemon/front_pics/unown_i_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_UnownI[] = INCBIN_U8("graphics/pokemon/back_pics/unown_i_back_pic.4bpp.lz"); +const u8 gMonIcon_UnownI[] = INCBIN_U8("graphics/pokemon/icons/unown_I_icon.4bpp"); + +const u8 gMonStillFrontPic_UnownJ[] = INCBIN_U8("graphics/pokemon/front_pics/unown_j_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_UnownJ[] = INCBIN_U8("graphics/pokemon/back_pics/unown_j_back_pic.4bpp.lz"); +const u8 gMonIcon_UnownJ[] = INCBIN_U8("graphics/pokemon/icons/unown_J_icon.4bpp"); + +const u8 gMonStillFrontPic_UnownK[] = INCBIN_U8("graphics/pokemon/front_pics/unown_k_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_UnownK[] = INCBIN_U8("graphics/pokemon/back_pics/unown_k_back_pic.4bpp.lz"); +const u8 gMonIcon_UnownK[] = INCBIN_U8("graphics/pokemon/icons/unown_K_icon.4bpp"); + +const u8 gMonStillFrontPic_UnownL[] = INCBIN_U8("graphics/pokemon/front_pics/unown_l_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_UnownL[] = INCBIN_U8("graphics/pokemon/back_pics/unown_l_back_pic.4bpp.lz"); +const u8 gMonIcon_UnownL[] = INCBIN_U8("graphics/pokemon/icons/unown_L_icon.4bpp"); + +const u8 gMonStillFrontPic_UnownM[] = INCBIN_U8("graphics/pokemon/front_pics/unown_m_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_UnownM[] = INCBIN_U8("graphics/pokemon/back_pics/unown_m_back_pic.4bpp.lz"); +const u8 gMonIcon_UnownM[] = INCBIN_U8("graphics/pokemon/icons/unown_M_icon.4bpp"); + +const u8 gMonStillFrontPic_UnownN[] = INCBIN_U8("graphics/pokemon/front_pics/unown_n_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_UnownN[] = INCBIN_U8("graphics/pokemon/back_pics/unown_n_back_pic.4bpp.lz"); +const u8 gMonIcon_UnownN[] = INCBIN_U8("graphics/pokemon/icons/unown_N_icon.4bpp"); + +const u8 gMonStillFrontPic_UnownO[] = INCBIN_U8("graphics/pokemon/front_pics/unown_o_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_UnownO[] = INCBIN_U8("graphics/pokemon/back_pics/unown_o_back_pic.4bpp.lz"); +const u8 gMonIcon_UnownO[] = INCBIN_U8("graphics/pokemon/icons/unown_O_icon.4bpp"); + +const u8 gMonStillFrontPic_UnownP[] = INCBIN_U8("graphics/pokemon/front_pics/unown_p_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_UnownP[] = INCBIN_U8("graphics/pokemon/back_pics/unown_p_back_pic.4bpp.lz"); +const u8 gMonIcon_UnownP[] = INCBIN_U8("graphics/pokemon/icons/unown_P_icon.4bpp"); + +const u8 gMonStillFrontPic_UnownQ[] = INCBIN_U8("graphics/pokemon/front_pics/unown_q_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_UnownQ[] = INCBIN_U8("graphics/pokemon/back_pics/unown_q_back_pic.4bpp.lz"); +const u8 gMonIcon_UnownQ[] = INCBIN_U8("graphics/pokemon/icons/unown_Q_icon.4bpp"); + +const u8 gMonStillFrontPic_UnownR[] = INCBIN_U8("graphics/pokemon/front_pics/unown_r_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_UnownR[] = INCBIN_U8("graphics/pokemon/back_pics/unown_r_back_pic.4bpp.lz"); +const u8 gMonIcon_UnownR[] = INCBIN_U8("graphics/pokemon/icons/unown_R_icon.4bpp"); + +const u8 gMonStillFrontPic_UnownS[] = INCBIN_U8("graphics/pokemon/front_pics/unown_s_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_UnownS[] = INCBIN_U8("graphics/pokemon/back_pics/unown_s_back_pic.4bpp.lz"); +const u8 gMonIcon_UnownS[] = INCBIN_U8("graphics/pokemon/icons/unown_S_icon.4bpp"); + +const u8 gMonStillFrontPic_UnownT[] = INCBIN_U8("graphics/pokemon/front_pics/unown_t_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_UnownT[] = INCBIN_U8("graphics/pokemon/back_pics/unown_t_back_pic.4bpp.lz"); +const u8 gMonIcon_UnownT[] = INCBIN_U8("graphics/pokemon/icons/unown_T_icon.4bpp"); + +const u8 gMonStillFrontPic_UnownU[] = INCBIN_U8("graphics/pokemon/front_pics/unown_u_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_UnownU[] = INCBIN_U8("graphics/pokemon/back_pics/unown_u_back_pic.4bpp.lz"); +const u8 gMonIcon_UnownU[] = INCBIN_U8("graphics/pokemon/icons/unown_U_icon.4bpp"); + +const u8 gMonStillFrontPic_UnownV[] = INCBIN_U8("graphics/pokemon/front_pics/unown_v_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_UnownV[] = INCBIN_U8("graphics/pokemon/back_pics/unown_v_back_pic.4bpp.lz"); +const u8 gMonIcon_UnownV[] = INCBIN_U8("graphics/pokemon/icons/unown_V_icon.4bpp"); + +const u8 gMonStillFrontPic_UnownW[] = INCBIN_U8("graphics/pokemon/front_pics/unown_w_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_UnownW[] = INCBIN_U8("graphics/pokemon/back_pics/unown_w_back_pic.4bpp.lz"); +const u8 gMonIcon_UnownW[] = INCBIN_U8("graphics/pokemon/icons/unown_W_icon.4bpp"); + +const u8 gMonStillFrontPic_UnownX[] = INCBIN_U8("graphics/pokemon/front_pics/unown_x_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_UnownX[] = INCBIN_U8("graphics/pokemon/back_pics/unown_x_back_pic.4bpp.lz"); +const u8 gMonIcon_UnownX[] = INCBIN_U8("graphics/pokemon/icons/unown_X_icon.4bpp"); + +const u8 gMonStillFrontPic_UnownY[] = INCBIN_U8("graphics/pokemon/front_pics/unown_y_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_UnownY[] = INCBIN_U8("graphics/pokemon/back_pics/unown_y_back_pic.4bpp.lz"); +const u8 gMonIcon_UnownY[] = INCBIN_U8("graphics/pokemon/icons/unown_Y_icon.4bpp"); + +const u8 gMonStillFrontPic_UnownZ[] = INCBIN_U8("graphics/pokemon/front_pics/unown_z_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_UnownZ[] = INCBIN_U8("graphics/pokemon/back_pics/unown_z_back_pic.4bpp.lz"); +const u8 gMonIcon_UnownZ[] = INCBIN_U8("graphics/pokemon/icons/unown_Z_icon.4bpp"); + +const u8 gMonStillFrontPic_UnownExclamationMark[] = INCBIN_U8("graphics/pokemon/front_pics/unown_exclamation_mark_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_UnownExclamationMark[] = INCBIN_U8("graphics/pokemon/back_pics/unown_exclamation_mark_back_pic.4bpp.lz"); +const u8 gMonIcon_UnownExclamationMark[] = INCBIN_U8("graphics/pokemon/icons/unown_exclamation_mark_icon.4bpp"); + +const u8 gMonStillFrontPic_UnownQuestionMark[] = INCBIN_U8("graphics/pokemon/front_pics/unown_question_mark_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_UnownQuestionMark[] = INCBIN_U8("graphics/pokemon/back_pics/unown_question_mark_back_pic.4bpp.lz"); +const u8 gMonIcon_UnownQuestionMark[] = INCBIN_U8("graphics/pokemon/icons/unown_question_mark_icon.4bpp"); diff --git a/src/data/graphics/rayquaza_scene.h b/src/data/graphics/rayquaza_scene.h new file mode 100644 index 000000000..928a4f6f0 --- /dev/null +++ b/src/data/graphics/rayquaza_scene.h @@ -0,0 +1,73 @@ +const u8 gRaySceneGroudon_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/groudon.4bpp.lz"); +const u8 gRaySceneGroudon2_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/groudon_shoulder.4bpp.lz"); +const u8 gRaySceneGroudon3_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/groudon_claw.4bpp.lz"); + +const u8 gRaySceneKyogre_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/kyogre.4bpp.lz"); +const u8 gRaySceneKyogre2_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/kyogre_shoulder.4bpp.lz"); +const u8 gRaySceneKyogre3_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/kyogre_fin.4bpp.lz"); + +const u8 gRaySceneGroudon_Pal[] = INCBIN_U8("graphics/rayquaza_scene/groudon.gbapal.lz"); +const u8 gRaySceneKyogre_Pal[] = INCBIN_U8("graphics/rayquaza_scene/kyogre.gbapal.lz"); + +const u8 gRaySceneClouds_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/clouds.4bpp.lz"); +const u8 gRaySceneClouds_Pal[] = INCBIN_U8("graphics/rayquaza_scene/clouds.gbapal.lz"); // pal 1 clouds, pal 2 rain +const u16 gRaySceneClouds1_Tilemap[] = INCBIN_U16("graphics/rayquaza_scene/clouds1.bin.lz"); +const u16 gRaySceneClouds2_Tilemap[] = INCBIN_U16("graphics/rayquaza_scene/clouds2.bin.lz"); +const u16 gRaySceneClouds3_Tilemap[] = INCBIN_U16("graphics/rayquaza_scene/clouds3.bin.lz"); + +const u8 gRaySceneSmoke_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/smoke.4bpp.lz"); +const u8 gRaySceneSmoke_Pal[] = INCBIN_U8("graphics/rayquaza_scene/smoke.gbapal.lz"); + +const u16 gRaySceneRayquaza_Gfx[] = INCBIN_U16("graphics/rayquaza_scene/rayquaza.8bpp.lz"); +const u8 gRaySceneRayquaza_Pal[] = INCBIN_U8("graphics/rayquaza_scene/rayquaza.gbapal.lz"); +const u16 gRaySceneRayquaza_Tilemap[] = INCBIN_U16("graphics/rayquaza_scene/rayquaza.bin.lz"); + +const u8 gRaySceneOvercast_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/overcast.4bpp.lz"); // uses pal 2 of gRaySceneRayquaza_Pal +const u16 gRaySceneOvercast_Tilemap[] = INCBIN_U16("graphics/rayquaza_scene/overcast.bin.lz"); + +const u8 gRaySceneRayquazaFly1_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/rayquaza_fly1.4bpp.lz"); +const u8 gRaySceneRayquazaTail_Gfx[] = INCBIN_U8( "graphics/rayquaza_scene/rayquaza_tail_fix.4bpp.lz"); // for some reason there are an extra 0xC bytes at the end of the original 4bpp, so in order to produce the correct lz, we have to cat the bytes at the end with a make rule. not sure why those bytes are there, it may have been a bug in Game Freak's software. + +const u8 gRaySceneOvercast2_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/overcast2.4bpp.lz"); + +const u8 gRaySceneRayquazaLight_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/rayquaza_light.4bpp.lz"); // uses pal 2 of gRaySceneOvercast2_Pal + +const u8 gRaySceneOvercast2_Pal[] = INCBIN_U8("graphics/rayquaza_scene/overcast2.gbapal.lz"); +const u16 gRaySceneOvercast2_Tilemap[] = INCBIN_U16("graphics/rayquaza_scene/overcast2.bin.lz"); + +const u8 gRaySceneRayquazaLight_Tilemap[] = INCBIN_U8("graphics/rayquaza_scene/rayquaza_light.bin.lz"); + +const u8 gRaySceneChaseBg_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/chase_bg.4bpp.lz"); +const u16 gRaySceneChaseBg_Tilemap[] = INCBIN_U16("graphics/rayquaza_scene/chase_bg.bin.lz"); + +const u8 gRaySceneChaseStreaks_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/chase_streaks.4bpp.lz"); +const u16 gRaySceneChaseStreaks_Tilemap[] = INCBIN_U16("graphics/rayquaza_scene/chase_streaks.bin.lz"); + +const u8 gRaySceneRayquazaChase_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/rayquaza_chase.4bpp.lz"); +const u16 gRayChaseRayquazaChase_Tilemap[] = INCBIN_U16("graphics/rayquaza_scene/rayquaza_chase.bin.lz"); +const u16 gRayChaseRayquazaChase2_Tilemap[] = INCBIN_U16("graphics/rayquaza_scene/rayquaza_chase2.bin.lz"); + +const u8 gRaySceneChase_Pal[] = INCBIN_U8("graphics/rayquaza_scene/chase.gbapal.lz"); + +const u8 gRaySceneGroudonLeft_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/groudon_left.4bpp.lz"); +const u8 gRaySceneGroudonTail_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/groudon_tail.4bpp.lz"); + +const u8 gRaySceneKyogreRight_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/kyogre_right.4bpp.lz"); + +const u8 gRaySceneRayquazaHover_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/rayquaza_hover.4bpp.lz"); +const u8 gRaySceneRayquazaFlyIn_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/rayquaza_flyin.4bpp.lz"); + +const u8 gRaySceneSplash_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/splash.4bpp.lz"); + +const u8 gRaySceneGroudonLeft_Pal[] = INCBIN_U8("graphics/rayquaza_scene/groudon_left.gbapal.lz"); +const u8 gRaySceneKyogreRight_Pal[] = INCBIN_U8("graphics/rayquaza_scene/kyogre_right.gbapal.lz"); +const u8 gRaySceneRayquazaHover_Pal[] = INCBIN_U8("graphics/rayquaza_scene/rayquaza_hover.gbapal.lz"); + +const u8 gRaySceneSplash_Pal[] = INCBIN_U8("graphics/rayquaza_scene/splash.gbapal.lz"); + +const u8 gRaySceneHushBg_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/hush_bg.4bpp.lz"); +const u16 gRaySceneHushRing_Gfx[] = INCBIN_U16("graphics/rayquaza_scene/hush_ring.8bpp.lz"); +const u16 gRaySceneHushBg_Tilemap[] = INCBIN_U16("graphics/rayquaza_scene/hush_bg.bin.lz"); +const u16 gRaySceneHushRing_Tilemap[] = INCBIN_U16("graphics/rayquaza_scene/hush_ring.bin.lz"); +const u16 gRaySceneHushRing_Map[] = INCBIN_U16("graphics/rayquaza_scene/hush_ring_map.bin.lz"); +const u8 gRaySceneHushBg_Pal[] = INCBIN_U8("graphics/rayquaza_scene/hush_bg.gbapal.lz"); diff --git a/src/data/graphics/slot_machine.h b/src/data/graphics/slot_machine.h new file mode 100644 index 000000000..f673874e3 --- /dev/null +++ b/src/data/graphics/slot_machine.h @@ -0,0 +1,60 @@ +const u16 gSlotMachineMenu_Pal[] = INCBIN_U16("graphics/slot_machine/menu.gbapal"); +const u8 gSlotMachineMenu_Gfx[] = INCBIN_U8("graphics/slot_machine/menu.4bpp.lz"); +const u16 gSlotMachineMenu_Tilemap[] = INCBIN_U16("graphics/slot_machine/menu.bin"); + +const u16 gUnknown_08DCEC70[] = INCBIN_U16("graphics/slot_machine/slots_layout.bin"); + +const u16 gUnknown_08DCF170[] = INCBIN_U16("graphics/slot_machine/reel_symbols/1.gbapal"); + +const u16 gUnknown_08DCF190[] = INCBIN_U16("graphics/slot_machine/reel_pikachu.gbapal"); + +const u16 gUnknown_08DCF1B0[] = INCBIN_U16("graphics/slot_machine/shadow.gbapal"); + +const u16 gSlotMachineReelTime_Pal[] = INCBIN_U16("graphics/slot_machine/reel_time.gbapal"); + +const u16 gUnknown_08DCF1F0[] = INCBIN_U16("graphics/slot_machine/smoke.gbapal"); // also duck and pika aura + +const u16 gUnknown_08DCF210[] = INCBIN_U16("graphics/slot_machine/reel_time_explosion/0.gbapal"); + +const u16 gUnknown_08DCF230[] = INCBIN_U16("graphics/slot_machine/spr6.gbapal"); + +const u8 gSlotMachineReelSymbol1Tiles[] = INCBIN_U8("graphics/slot_machine/reel_symbols/1.4bpp"); +const u8 gSlotMachineReelSymbol2Tiles[] = INCBIN_U8("graphics/slot_machine/reel_symbols/2.4bpp"); +const u8 gSlotMachineReelSymbol3Tiles[] = INCBIN_U8("graphics/slot_machine/reel_symbols/3.4bpp"); +const u8 gSlotMachineReelSymbol4Tiles[] = INCBIN_U8("graphics/slot_machine/reel_symbols/4.4bpp"); +const u8 gSlotMachineReelSymbol5Tiles[] = INCBIN_U8("graphics/slot_machine/reel_symbols/5.4bpp"); +const u8 gSlotMachineReelSymbol6Tiles[] = INCBIN_U8("graphics/slot_machine/reel_symbols/6.4bpp"); +const u8 gSlotMachineReelSymbol7Tiles[] = INCBIN_U8("graphics/slot_machine/reel_symbols/7.4bpp"); + +const u8 gSlotMachineReelTime_Gfx[] = INCBIN_U8("graphics/slot_machine/reel_time.4bpp.lz"); + +const u8 gSlotMachineNumber0Tiles[] = INCBIN_U8("graphics/slot_machine/numbers/0.4bpp"); +const u8 gSlotMachineNumber1Tiles[] = INCBIN_U8("graphics/slot_machine/numbers/1.4bpp"); +const u8 gSlotMachineNumber2Tiles[] = INCBIN_U8("graphics/slot_machine/numbers/2.4bpp"); +const u8 gSlotMachineNumber3Tiles[] = INCBIN_U8("graphics/slot_machine/numbers/3.4bpp"); +const u8 gSlotMachineNumber4Tiles[] = INCBIN_U8("graphics/slot_machine/numbers/4.4bpp"); +const u8 gSlotMachineNumber5Tiles[] = INCBIN_U8("graphics/slot_machine/numbers/5.4bpp"); +const u8 gSlotMachineNumber6Tiles[] = INCBIN_U8("graphics/slot_machine/numbers/6.4bpp"); +const u8 gSlotMachineNumber7Tiles[] = INCBIN_U8("graphics/slot_machine/numbers/7.4bpp"); +const u8 gSlotMachineNumber8Tiles[] = INCBIN_U8("graphics/slot_machine/numbers/8.4bpp"); +const u8 gSlotMachineNumber9Tiles[] = INCBIN_U8("graphics/slot_machine/numbers/9.4bpp"); + +const u8 gSlotMachineReelTimeBolt[] = INCBIN_U8("graphics/slot_machine/bolt.4bpp"); +const u8 gSlotMachineReelTimeDuck[] = INCBIN_U8("graphics/slot_machine/duck.4bpp"); +const u8 gSlotMachineReelTimeSmoke[] = INCBIN_U8("graphics/slot_machine/smoke.4bpp"); + +const u8 gSlotMachineReelTimeNumber0[] = INCBIN_U8("graphics/slot_machine/reel_time_numbers/0.4bpp"); +const u8 gSlotMachineReelTimeNumber1[] = INCBIN_U8("graphics/slot_machine/reel_time_numbers/1.4bpp"); +const u8 gSlotMachineReelTimeNumber2[] = INCBIN_U8("graphics/slot_machine/reel_time_numbers/2.4bpp"); +const u8 gSlotMachineReelTimeNumber3[] = INCBIN_U8("graphics/slot_machine/reel_time_numbers/3.4bpp"); +const u8 gSlotMachineReelTimeNumber4[] = INCBIN_U8("graphics/slot_machine/reel_time_numbers/4.4bpp"); +const u8 gSlotMachineReelTimeNumber5[] = INCBIN_U8("graphics/slot_machine/reel_time_numbers/5.4bpp"); + +const u8 gSlotMachineReelTimeLargeBolt0[] = INCBIN_U8("graphics/slot_machine/large_bolt/0.4bpp"); +const u8 gSlotMachineReelTimeLargeBolt1[] = INCBIN_U8("graphics/slot_machine/large_bolt/1.4bpp"); + +const u8 gSlotMachineReelTimeExplosion0[] = INCBIN_U8("graphics/slot_machine/reel_time_explosion/0.4bpp"); +const u8 gSlotMachineReelTimeExplosion1[] = INCBIN_U8("graphics/slot_machine/reel_time_explosion/1.4bpp"); + +const u8 gSlotMachineReelTimeShadow[] = INCBIN_U8("graphics/slot_machine/shadow.4bpp"); +const u8 gSlotMachineReelTimePikaAura[] = INCBIN_U8("graphics/slot_machine/pika_aura.4bpp"); diff --git a/src/data/graphics/trainers.h b/src/data/graphics/trainers.h new file mode 100644 index 000000000..98a5471ef --- /dev/null +++ b/src/data/graphics/trainers.h @@ -0,0 +1,290 @@ +const u8 gTrainerFrontPic_Hiker[] = INCBIN_U8("graphics/trainers/front_pics/hiker_front_pic.4bpp.lz"); +const u8 gTrainerPalette_Hiker[] = INCBIN_U8("graphics/trainers/palettes/hiker.gbapal.lz"); + +const u8 gTrainerFrontPic_AquaGruntM[] = INCBIN_U8("graphics/trainers/front_pics/aqua_grunt_m_front_pic.4bpp.lz"); +const u8 gTrainerPalette_AquaGruntM[] = INCBIN_U8("graphics/trainers/palettes/aqua_grunt_m.gbapal.lz"); + +const u8 gTrainerFrontPic_PokemonBreederF[] = INCBIN_U8("graphics/trainers/front_pics/pokemon_breeder_f_front_pic.4bpp.lz"); +const u8 gTrainerPalette_PokemonBreederF[] = INCBIN_U8("graphics/trainers/palettes/pokemon_breeder_f.gbapal.lz"); + +const u8 gTrainerFrontPic_CoolTrainerM[] = INCBIN_U8("graphics/trainers/front_pics/cool_trainer_m_front_pic.4bpp.lz"); +const u8 gTrainerPalette_CoolTrainerM[] = INCBIN_U8("graphics/trainers/palettes/cool_trainer_m.gbapal.lz"); + +const u8 gTrainerFrontPic_BirdKeeper[] = INCBIN_U8("graphics/trainers/front_pics/bird_keeper_front_pic.4bpp.lz"); +const u8 gTrainerPalette_BirdKeeper[] = INCBIN_U8("graphics/trainers/palettes/bird_keeper.gbapal.lz"); + +const u8 gTrainerFrontPic_Collector[] = INCBIN_U8("graphics/trainers/front_pics/collector_front_pic.4bpp.lz"); +const u8 gTrainerPalette_Collector[] = INCBIN_U8("graphics/trainers/palettes/collector.gbapal.lz"); + +const u8 gTrainerFrontPic_AquaGruntF[] = INCBIN_U8("graphics/trainers/front_pics/aqua_grunt_f_front_pic.4bpp.lz"); +const u8 gTrainerPalette_AquaGruntF[] = INCBIN_U8("graphics/trainers/palettes/aqua_grunt_f.gbapal.lz"); + +const u8 gTrainerFrontPic_SwimmerM[] = INCBIN_U8("graphics/trainers/front_pics/swimmer_m_front_pic.4bpp.lz"); +const u8 gTrainerPalette_SwimmerM[] = INCBIN_U8("graphics/trainers/palettes/swimmer_m.gbapal.lz"); + +const u8 gTrainerFrontPic_MagmaGruntM[] = INCBIN_U8("graphics/trainers/front_pics/magma_grunt_m_front_pic.4bpp.lz"); +const u8 gTrainerPalette_MagmaGruntM[] = INCBIN_U8("graphics/trainers/palettes/magma_grunt_m.gbapal.lz"); + +const u8 gTrainerFrontPic_ExpertM[] = INCBIN_U8("graphics/trainers/front_pics/expert_m_front_pic.4bpp.lz"); +const u8 gTrainerPalette_ExpertM[] = INCBIN_U8("graphics/trainers/palettes/expert_m.gbapal.lz"); + +const u8 gTrainerFrontPic_AquaAdminM[] = INCBIN_U8("graphics/trainers/front_pics/aqua_admin_m_front_pic.4bpp.lz"); +const u8 gTrainerPalette_AquaAdminM[] = INCBIN_U8("graphics/trainers/palettes/aqua_admin_m.gbapal.lz"); + +const u8 gTrainerFrontPic_BlackBelt[] = INCBIN_U8("graphics/trainers/front_pics/black_belt_front_pic.4bpp.lz"); +const u8 gTrainerPalette_BlackBelt[] = INCBIN_U8("graphics/trainers/palettes/black_belt.gbapal.lz"); + +const u8 gTrainerFrontPic_AquaAdminF[] = INCBIN_U8("graphics/trainers/front_pics/aqua_admin_f_front_pic.4bpp.lz"); +const u8 gTrainerPalette_AquaAdminF[] = INCBIN_U8("graphics/trainers/palettes/aqua_admin_f.gbapal.lz"); + +const u8 gTrainerFrontPic_AquaLeaderArchie[] = INCBIN_U8("graphics/trainers/front_pics/aqua_leader_archie_front_pic.4bpp.lz"); +const u8 gTrainerPalette_AquaLeaderArchie[] = INCBIN_U8("graphics/trainers/palettes/aqua_leader_archie.gbapal.lz"); + +const u8 gTrainerFrontPic_HexManiac[] = INCBIN_U8("graphics/trainers/front_pics/hex_maniac_front_pic.4bpp.lz"); +const u8 gTrainerPalette_HexManiac[] = INCBIN_U8("graphics/trainers/palettes/hex_maniac.gbapal.lz"); + +const u8 gTrainerFrontPic_AromaLady[] = INCBIN_U8("graphics/trainers/front_pics/aroma_lady_front_pic.4bpp.lz"); +const u8 gTrainerPalette_AromaLady[] = INCBIN_U8("graphics/trainers/palettes/aroma_lady.gbapal.lz"); + +const u8 gTrainerFrontPic_RuinManiac[] = INCBIN_U8("graphics/trainers/front_pics/ruin_maniac_front_pic.4bpp.lz"); +const u8 gTrainerPalette_RuinManiac[] = INCBIN_U8("graphics/trainers/palettes/ruin_maniac.gbapal.lz"); + +const u8 gTrainerFrontPic_Interviewer[] = INCBIN_U8("graphics/trainers/front_pics/interviewer_front_pic.4bpp.lz"); +const u8 gTrainerPalette_Interviewer[] = INCBIN_U8("graphics/trainers/palettes/interviewer.gbapal.lz"); + +const u8 gTrainerFrontPic_TuberF[] = INCBIN_U8("graphics/trainers/front_pics/tuber_f_front_pic.4bpp.lz"); +const u8 gTrainerPalette_TuberF[] = INCBIN_U8("graphics/trainers/palettes/tuber_f.gbapal.lz"); + +const u8 gTrainerFrontPic_TuberM[] = INCBIN_U8("graphics/trainers/front_pics/tuber_m_front_pic.4bpp.lz"); +const u8 gTrainerPalette_TuberM[] = INCBIN_U8("graphics/trainers/palettes/tuber_m.gbapal.lz"); + +const u8 gTrainerFrontPic_CoolTrainerF[] = INCBIN_U8("graphics/trainers/front_pics/cool_trainer_f_front_pic.4bpp.lz"); +const u8 gTrainerPalette_CoolTrainerF[] = INCBIN_U8("graphics/trainers/palettes/cool_trainer_f.gbapal.lz"); + +const u8 gTrainerFrontPic_Lady[] = INCBIN_U8("graphics/trainers/front_pics/lady_front_pic.4bpp.lz"); +const u8 gTrainerPalette_Lady[] = INCBIN_U8("graphics/trainers/palettes/lady.gbapal.lz"); + +const u8 gTrainerFrontPic_Beauty[] = INCBIN_U8("graphics/trainers/front_pics/beauty_front_pic.4bpp.lz"); +const u8 gTrainerPalette_Beauty[] = INCBIN_U8("graphics/trainers/palettes/beauty.gbapal.lz"); + +const u8 gTrainerFrontPic_RichBoy[] = INCBIN_U8("graphics/trainers/front_pics/rich_boy_front_pic.4bpp.lz"); +const u8 gTrainerPalette_RichBoy[] = INCBIN_U8("graphics/trainers/palettes/rich_boy.gbapal.lz"); + +const u8 gTrainerFrontPic_ExpertF[] = INCBIN_U8("graphics/trainers/front_pics/expert_f_front_pic.4bpp.lz"); +const u8 gTrainerPalette_ExpertF[] = INCBIN_U8("graphics/trainers/palettes/expert_f.gbapal.lz"); + +const u8 gTrainerFrontPic_Pokemaniac[] = INCBIN_U8("graphics/trainers/front_pics/pokemaniac_front_pic.4bpp.lz"); +const u8 gTrainerPalette_Pokemaniac[] = INCBIN_U8("graphics/trainers/palettes/pokemaniac.gbapal.lz"); + +const u8 gTrainerFrontPic_MagmaGruntF[] = INCBIN_U8("graphics/trainers/front_pics/magma_grunt_f_front_pic.4bpp.lz"); +const u8 gTrainerPalette_MagmaGruntF[] = INCBIN_U8("graphics/trainers/palettes/magma_grunt_f.gbapal.lz"); + +const u8 gTrainerFrontPic_Guitarist[] = INCBIN_U8("graphics/trainers/front_pics/guitarist_front_pic.4bpp.lz"); +const u8 gTrainerPalette_Guitarist[] = INCBIN_U8("graphics/trainers/palettes/guitarist.gbapal.lz"); + +const u8 gTrainerFrontPic_Kindler[] = INCBIN_U8("graphics/trainers/front_pics/kindler_front_pic.4bpp.lz"); +const u8 gTrainerPalette_Kindler[] = INCBIN_U8("graphics/trainers/palettes/kindler.gbapal.lz"); + +const u8 gTrainerFrontPic_Camper[] = INCBIN_U8("graphics/trainers/front_pics/camper_front_pic.4bpp.lz"); +const u8 gTrainerPalette_Camper[] = INCBIN_U8("graphics/trainers/palettes/camper.gbapal.lz"); + +const u8 gTrainerFrontPic_Picnicker[] = INCBIN_U8("graphics/trainers/front_pics/picnicker_front_pic.4bpp.lz"); +const u8 gTrainerPalette_Picnicker[] = INCBIN_U8("graphics/trainers/palettes/picnicker.gbapal.lz"); + +const u8 gTrainerFrontPic_BugManiac[] = INCBIN_U8("graphics/trainers/front_pics/bug_maniac_front_pic.4bpp.lz"); +const u8 gTrainerPalette_BugManiac[] = INCBIN_U8("graphics/trainers/palettes/bug_maniac.gbapal.lz"); + +const u8 gTrainerFrontPic_PokemonBreederM[] = INCBIN_U8("graphics/trainers/front_pics/pokemon_breeder_m_front_pic.4bpp.lz"); +const u8 gTrainerPalette_PokemonBreederM[] = INCBIN_U8("graphics/trainers/palettes/pokemon_breeder_m.gbapal.lz"); + +const u8 gTrainerFrontPic_PsychicM[] = INCBIN_U8("graphics/trainers/front_pics/psychic_m_front_pic.4bpp.lz"); +const u8 gTrainerPalette_PsychicM[] = INCBIN_U8("graphics/trainers/palettes/psychic_m.gbapal.lz"); + +const u8 gTrainerFrontPic_PsychicF[] = INCBIN_U8("graphics/trainers/front_pics/psychic_f_front_pic.4bpp.lz"); +const u8 gTrainerPalette_PsychicF[] = INCBIN_U8("graphics/trainers/palettes/psychic_f.gbapal.lz"); + +const u8 gTrainerFrontPic_Gentleman[] = INCBIN_U8("graphics/trainers/front_pics/gentleman_front_pic.4bpp.lz"); +const u8 gTrainerPalette_Gentleman[] = INCBIN_U8("graphics/trainers/palettes/gentleman.gbapal.lz"); + +const u8 gTrainerFrontPic_EliteFourSidney[] = INCBIN_U8("graphics/trainers/front_pics/elite_four_sidney_front_pic.4bpp.lz"); +const u8 gTrainerPalette_EliteFourSidney[] = INCBIN_U8("graphics/trainers/palettes/elite_four_sidney.gbapal.lz"); + +const u8 gTrainerFrontPic_EliteFourPhoebe[] = INCBIN_U8("graphics/trainers/front_pics/elite_four_phoebe_front_pic.4bpp.lz"); +const u8 gTrainerPalette_EliteFourPhoebe[] = INCBIN_U8("graphics/trainers/palettes/elite_four_phoebe.gbapal.lz"); + +const u8 gTrainerFrontPic_EliteFourGlacia[] = INCBIN_U8("graphics/trainers/front_pics/elite_four_glacia_front_pic.4bpp.lz"); +const u8 gTrainerPalette_EliteFourGlacia[] = INCBIN_U8("graphics/trainers/palettes/elite_four_glacia.gbapal.lz"); + +const u8 gTrainerFrontPic_EliteFourDrake[] = INCBIN_U8("graphics/trainers/front_pics/elite_four_drake_front_pic.4bpp.lz"); +const u8 gTrainerPalette_EliteFourDrake[] = INCBIN_U8("graphics/trainers/palettes/elite_four_drake.gbapal.lz"); + +const u8 gTrainerFrontPic_LeaderRoxanne[] = INCBIN_U8("graphics/trainers/front_pics/leader_roxanne_front_pic.4bpp.lz"); +const u8 gTrainerPalette_LeaderRoxanne[] = INCBIN_U8("graphics/trainers/palettes/leader_roxanne.gbapal.lz"); + +const u8 gTrainerFrontPic_LeaderBrawly[] = INCBIN_U8("graphics/trainers/front_pics/leader_brawly_front_pic.4bpp.lz"); +const u8 gTrainerPalette_LeaderBrawly[] = INCBIN_U8("graphics/trainers/palettes/leader_brawly.gbapal.lz"); + +const u8 gTrainerFrontPic_LeaderWattson[] = INCBIN_U8("graphics/trainers/front_pics/leader_wattson_front_pic.4bpp.lz"); +const u8 gTrainerPalette_LeaderWattson[] = INCBIN_U8("graphics/trainers/palettes/leader_wattson.gbapal.lz"); + +const u8 gTrainerFrontPic_LeaderFlannery[] = INCBIN_U8("graphics/trainers/front_pics/leader_flannery_front_pic.4bpp.lz"); +const u8 gTrainerPalette_LeaderFlannery[] = INCBIN_U8("graphics/trainers/palettes/leader_flannery.gbapal.lz"); + +const u8 gTrainerFrontPic_LeaderNorman[] = INCBIN_U8("graphics/trainers/front_pics/leader_norman_front_pic.4bpp.lz"); +const u8 gTrainerPalette_LeaderNorman[] = INCBIN_U8("graphics/trainers/palettes/leader_norman.gbapal.lz"); + +const u8 gTrainerFrontPic_LeaderWinona[] = INCBIN_U8("graphics/trainers/front_pics/leader_winona_front_pic.4bpp.lz"); +const u8 gTrainerPalette_LeaderWinona[] = INCBIN_U8("graphics/trainers/palettes/leader_winona.gbapal.lz"); + +const u8 gTrainerFrontPic_LeaderTateAndLiza[] = INCBIN_U8("graphics/trainers/front_pics/leader_tate_and_liza_front_pic.4bpp.lz"); +const u8 gTrainerPalette_LeaderTateAndLiza[] = INCBIN_U8("graphics/trainers/palettes/leader_tate_and_liza.gbapal.lz"); + +const u8 gTrainerFrontPic_LeaderJuan[] = INCBIN_U8("graphics/trainers/front_pics/leader_juan_front_pic.4bpp.lz"); +const u8 gTrainerPalette_LeaderJuan[] = INCBIN_U8("graphics/trainers/palettes/leader_juan.gbapal.lz"); + +const u8 gTrainerFrontPic_SchoolKidM[] = INCBIN_U8("graphics/trainers/front_pics/school_kid_m_front_pic.4bpp.lz"); +const u8 gTrainerPalette_SchoolKidM[] = INCBIN_U8("graphics/trainers/palettes/school_kid_m.gbapal.lz"); + +const u8 gTrainerFrontPic_SchoolKidF[] = INCBIN_U8("graphics/trainers/front_pics/school_kid_f_front_pic.4bpp.lz"); +const u8 gTrainerPalette_SchoolKidF[] = INCBIN_U8("graphics/trainers/palettes/school_kid_f.gbapal.lz"); + +const u8 gTrainerFrontPic_SrAndJr[] = INCBIN_U8("graphics/trainers/front_pics/sr_and_jr_front_pic.4bpp.lz"); +const u8 gTrainerPalette_SrAndJr[] = INCBIN_U8("graphics/trainers/palettes/sr_and_jr.gbapal.lz"); + +const u8 gTrainerFrontPic_WinstrateM[] = INCBIN_U8("graphics/trainers/front_pics/winstrate_m_front_pic.4bpp.lz"); +const u8 gTrainerPalette_WinstrateM[] = INCBIN_U8("graphics/trainers/palettes/winstrate_m.gbapal.lz"); + +const u8 gTrainerFrontPic_WinstrateF[] = INCBIN_U8("graphics/trainers/front_pics/winstrate_f_front_pic.4bpp.lz"); +const u8 gTrainerPalette_WinstrateF[] = INCBIN_U8("graphics/trainers/palettes/winstrate_f.gbapal.lz"); + +const u8 gTrainerFrontPic_Youngster[] = INCBIN_U8("graphics/trainers/front_pics/youngster_front_pic.4bpp.lz"); +const u8 gTrainerPalette_Youngster[] = INCBIN_U8("graphics/trainers/palettes/youngster.gbapal.lz"); + +const u8 gTrainerFrontPic_ChampionWallace[] = INCBIN_U8("graphics/trainers/front_pics/champion_wallace_front_pic.4bpp.lz"); +const u8 gTrainerPalette_ChampionWallace[] = INCBIN_U8("graphics/trainers/palettes/champion_wallace.gbapal.lz"); + +const u8 gTrainerFrontPic_Fisherman[] = INCBIN_U8("graphics/trainers/front_pics/fisherman_front_pic.4bpp.lz"); +const u8 gTrainerPalette_Fisherman[] = INCBIN_U8("graphics/trainers/palettes/fisherman.gbapal.lz"); + +const u8 gTrainerFrontPic_CyclingTriathleteM[] = INCBIN_U8("graphics/trainers/front_pics/cycling_triathlete_m_front_pic.4bpp.lz"); +const u8 gTrainerPalette_CyclingTriathleteM[] = INCBIN_U8("graphics/trainers/palettes/cycling_triathlete_m.gbapal.lz"); + +const u8 gTrainerFrontPic_CyclingTriathleteF[] = INCBIN_U8("graphics/trainers/front_pics/cycling_triathlete_f_front_pic.4bpp.lz"); +const u8 gTrainerPalette_CyclingTriathleteF[] = INCBIN_U8("graphics/trainers/palettes/cycling_triathlete_f.gbapal.lz"); + +const u8 gTrainerFrontPic_RunningTriathleteM[] = INCBIN_U8("graphics/trainers/front_pics/running_triathlete_m_front_pic.4bpp.lz"); +const u8 gTrainerPalette_RunningTriathleteM[] = INCBIN_U8("graphics/trainers/palettes/running_triathlete_m.gbapal.lz"); + +const u8 gTrainerFrontPic_RunningTriathleteF[] = INCBIN_U8("graphics/trainers/front_pics/running_triathlete_f_front_pic.4bpp.lz"); +const u8 gTrainerPalette_RunningTriathleteF[] = INCBIN_U8("graphics/trainers/palettes/running_triathlete_f.gbapal.lz"); + +const u8 gTrainerFrontPic_SwimmingTriathleteM[] = INCBIN_U8("graphics/trainers/front_pics/swimming_triathlete_m_front_pic.4bpp.lz"); +const u8 gTrainerPalette_SwimmingTriathleteM[] = INCBIN_U8("graphics/trainers/palettes/swimming_triathlete_m.gbapal.lz"); + +const u8 gTrainerFrontPic_SwimmingTriathleteF[] = INCBIN_U8("graphics/trainers/front_pics/swimming_triathlete_f_front_pic.4bpp.lz"); +const u8 gTrainerPalette_SwimmingTriathleteF[] = INCBIN_U8("graphics/trainers/palettes/swimming_triathlete_f.gbapal.lz"); + +const u8 gTrainerFrontPic_DragonTamer[] = INCBIN_U8("graphics/trainers/front_pics/dragon_tamer_front_pic.4bpp.lz"); +const u8 gTrainerPalette_DragonTamer[] = INCBIN_U8("graphics/trainers/palettes/dragon_tamer.gbapal.lz"); + +const u8 gTrainerFrontPic_NinjaBoy[] = INCBIN_U8("graphics/trainers/front_pics/ninja_boy_front_pic.4bpp.lz"); +const u8 gTrainerPalette_NinjaBoy[] = INCBIN_U8("graphics/trainers/palettes/ninja_boy.gbapal.lz"); + +const u8 gTrainerFrontPic_BattleGirl[] = INCBIN_U8("graphics/trainers/front_pics/battle_girl_front_pic.4bpp.lz"); +const u8 gTrainerPalette_BattleGirl[] = INCBIN_U8("graphics/trainers/palettes/battle_girl.gbapal.lz"); + +const u8 gTrainerFrontPic_ParasolLady[] = INCBIN_U8("graphics/trainers/front_pics/parasol_lady_front_pic.4bpp.lz"); +const u8 gTrainerPalette_ParasolLady[] = INCBIN_U8("graphics/trainers/palettes/parasol_lady.gbapal.lz"); + +const u8 gTrainerFrontPic_SwimmerF[] = INCBIN_U8("graphics/trainers/front_pics/swimmer_f_front_pic.4bpp.lz"); +const u8 gTrainerPalette_SwimmerF[] = INCBIN_U8("graphics/trainers/palettes/swimmer_f.gbapal.lz"); + +const u8 gTrainerFrontPic_Twins[] = INCBIN_U8("graphics/trainers/front_pics/twins_front_pic.4bpp.lz"); +const u8 gTrainerPalette_Twins[] = INCBIN_U8("graphics/trainers/palettes/twins.gbapal.lz"); + +const u8 gTrainerFrontPic_Sailor[] = INCBIN_U8("graphics/trainers/front_pics/sailor_front_pic.4bpp.lz"); +const u8 gTrainerPalette_Sailor[] = INCBIN_U8("graphics/trainers/palettes/sailor.gbapal.lz"); + +const u8 gTrainerFrontPic_MagmaAdmin[] = INCBIN_U8("graphics/trainers/front_pics/magma_admin_front_pic.4bpp.lz"); +const u8 gTrainerPalette_MagmaAdmin[] = INCBIN_U8("graphics/trainers/palettes/magma_admin.gbapal.lz"); + +const u8 gTrainerFrontPic_Wally[] = INCBIN_U8("graphics/trainers/front_pics/wally_front_pic.4bpp.lz"); +const u8 gTrainerPalette_Wally[] = INCBIN_U8("graphics/trainers/palettes/wally.gbapal.lz"); + +const u8 gTrainerFrontPic_Brendan[] = INCBIN_U8("graphics/trainers/front_pics/brendan_front_pic.4bpp.lz"); +const u8 gTrainerPalette_Brendan[] = INCBIN_U8("graphics/trainers/palettes/brendan.gbapal.lz"); + +const u8 gTrainerFrontPic_May[] = INCBIN_U8("graphics/trainers/front_pics/may_front_pic.4bpp.lz"); +const u8 gTrainerPalette_May[] = INCBIN_U8("graphics/trainers/palettes/may.gbapal.lz"); + +const u8 gTrainerFrontPic_BugCatcher[] = INCBIN_U8("graphics/trainers/front_pics/bug_catcher_front_pic.4bpp.lz"); +const u8 gTrainerPalette_BugCatcher[] = INCBIN_U8("graphics/trainers/palettes/bug_catcher.gbapal.lz"); + +const u8 gTrainerFrontPic_PokemonRangerM[] = INCBIN_U8("graphics/trainers/front_pics/pokemon_ranger_m_front_pic.4bpp.lz"); +const u8 gTrainerPalette_PokemonRangerM[] = INCBIN_U8("graphics/trainers/palettes/pokemon_ranger_m.gbapal.lz"); + +const u8 gTrainerFrontPic_PokemonRangerF[] = INCBIN_U8("graphics/trainers/front_pics/pokemon_ranger_f_front_pic.4bpp.lz"); +const u8 gTrainerPalette_PokemonRangerF[] = INCBIN_U8("graphics/trainers/palettes/pokemon_ranger_f.gbapal.lz"); + +const u8 gTrainerFrontPic_MagmaLeaderMaxie[] = INCBIN_U8("graphics/trainers/front_pics/magma_leader_maxie_front_pic.4bpp.lz"); +const u8 gTrainerPalette_MagmaLeaderMaxie[] = INCBIN_U8("graphics/trainers/palettes/magma_leader_maxie.gbapal.lz"); + +const u8 gTrainerFrontPic_Lass[] = INCBIN_U8("graphics/trainers/front_pics/lass_front_pic.4bpp.lz"); +const u8 gTrainerPalette_Lass[] = INCBIN_U8("graphics/trainers/palettes/lass.gbapal.lz"); + +const u8 gTrainerFrontPic_YoungCouple[] = INCBIN_U8("graphics/trainers/front_pics/young_couple_front_pic.4bpp.lz"); +const u8 gTrainerPalette_YoungCouple[] = INCBIN_U8("graphics/trainers/palettes/young_couple.gbapal.lz"); + +const u8 gTrainerFrontPic_OldCouple[] = INCBIN_U8("graphics/trainers/front_pics/old_couple_front_pic.4bpp.lz"); +const u8 gTrainerPalette_OldCouple[] = INCBIN_U8("graphics/trainers/palettes/old_couple.gbapal.lz"); + +const u8 gTrainerFrontPic_SisAndBro[] = INCBIN_U8("graphics/trainers/front_pics/sis_and_bro_front_pic.4bpp.lz"); +const u8 gTrainerPalette_SisAndBro[] = INCBIN_U8("graphics/trainers/palettes/sis_and_bro.gbapal.lz"); + +const u8 gTrainerFrontPic_Steven[] = INCBIN_U8("graphics/trainers/front_pics/steven_front_pic.4bpp.lz"); +const u8 gTrainerPalette_Steven[] = INCBIN_U8("graphics/trainers/palettes/steven.gbapal.lz"); + +const u8 gTrainerFrontPic_SalonMaidenAnabel[] = INCBIN_U8("graphics/trainers/front_pics/salon_maiden_anabel_front_pic.4bpp.lz"); +const u8 gTrainerPalette_SalonMaidenAnabel[] = INCBIN_U8("graphics/trainers/palettes/salon_maiden_anabel.gbapal.lz"); + +const u8 gTrainerFrontPic_DomeAceTucker[] = INCBIN_U8("graphics/trainers/front_pics/dome_ace_tucker_front_pic.4bpp.lz"); +const u8 gTrainerPalette_DomeAceTucker[] = INCBIN_U8("graphics/trainers/palettes/dome_ace_tucker.gbapal.lz"); + +const u8 gTrainerFrontPic_PalaceMavenSpenser[] = INCBIN_U8("graphics/trainers/front_pics/palace_maven_spenser_front_pic.4bpp.lz"); +const u8 gTrainerPalette_PalaceMavenSpenser[] = INCBIN_U8("graphics/trainers/palettes/palace_maven_spenser.gbapal.lz"); + +const u8 gTrainerFrontPic_ArenaTycoonGreta[] = INCBIN_U8("graphics/trainers/front_pics/arena_tycoon_greta_front_pic.4bpp.lz"); +const u8 gTrainerPalette_ArenaTycoonGreta[] = INCBIN_U8("graphics/trainers/palettes/arena_tycoon_greta.gbapal.lz"); + +const u8 gTrainerFrontPic_FactoryHeadNoland[] = INCBIN_U8("graphics/trainers/front_pics/factory_head_noland_front_pic.4bpp.lz"); +const u8 gTrainerPalette_FactoryHeadNoland[] = INCBIN_U8("graphics/trainers/palettes/factory_head_noland.gbapal.lz"); + +const u8 gTrainerFrontPic_PikeQueenLucy[] = INCBIN_U8("graphics/trainers/front_pics/pike_queen_lucy_front_pic.4bpp.lz"); +const u8 gTrainerPalette_PikeQueenLucy[] = INCBIN_U8("graphics/trainers/palettes/pike_queen_lucy.gbapal.lz"); + +const u8 gTrainerFrontPic_PyramidKingBrandon[] = INCBIN_U8("graphics/trainers/front_pics/pyramid_king_brandon_front_pic.4bpp.lz"); +const u8 gTrainerPalette_PyramidKingBrandon[] = INCBIN_U8("graphics/trainers/palettes/pyramid_king_brandon.gbapal.lz"); + +const u8 gTrainerFrontPic_Red[] = INCBIN_U8("graphics/trainers/front_pics/red_front_pic.4bpp.lz"); +const u8 gTrainerPalette_Red[] = INCBIN_U8("graphics/trainers/palettes/red.gbapal.lz"); + +const u8 gTrainerFrontPic_Leaf[] = INCBIN_U8("graphics/trainers/front_pics/leaf_front_pic.4bpp.lz"); +const u8 gTrainerPalette_Leaf[] = INCBIN_U8("graphics/trainers/palettes/leaf.gbapal.lz"); + +const u8 gTrainerFrontPic_RubySapphireBrendan[] = INCBIN_U8("graphics/trainers/front_pics/ruby_sapphire_brendan_front_pic.4bpp.lz"); +const u8 gTrainerPalette_RubySapphireBrendan[] = INCBIN_U8("graphics/trainers/palettes/ruby_sapphire_brendan.gbapal.lz"); + +const u8 gTrainerFrontPic_RubySapphireMay[] = INCBIN_U8("graphics/trainers/front_pics/ruby_sapphire_may_front_pic.4bpp.lz"); +const u8 gTrainerPalette_RubySapphireMay[] = INCBIN_U8("graphics/trainers/palettes/ruby_sapphire_may.gbapal.lz"); + +const u8 gTrainerBackPic_Brendan[] = INCBIN_U8("graphics/trainers/back_pics/brendan_back_pic.4bpp"); +const u8 gTrainerBackPic_May[] = INCBIN_U8("graphics/trainers/back_pics/may_back_pic.4bpp"); +const u8 gTrainerBackPic_Red[] = INCBIN_U8("graphics/trainers/back_pics/red_back_pic.4bpp"); +const u8 gTrainerBackPic_Leaf[] = INCBIN_U8("graphics/trainers/back_pics/leaf_back_pic.4bpp"); +const u8 gTrainerBackPic_RubySapphireBrendan[] = INCBIN_U8("graphics/trainers/back_pics/ruby_sapphire_brendan_back_pic.4bpp"); +const u8 gTrainerBackPic_RubySapphireMay[] = INCBIN_U8("graphics/trainers/back_pics/ruby_sapphire_may_back_pic.4bpp"); +const u8 gTrainerBackPic_Wally[] = INCBIN_U8("graphics/trainers/back_pics/wally_back_pic.4bpp"); +const u8 gTrainerBackPic_Steven[] = INCBIN_U8("graphics/trainers/back_pics/steven_back_pic.4bpp"); + +const u8 gTrainerBackPicPalette_Red[] = INCBIN_U8("graphics/trainers/palettes/red_back_pic.gbapal.lz"); +const u8 gTrainerBackPicPalette_Leaf[] = INCBIN_U8("graphics/trainers/palettes/leaf_back_pic.gbapal.lz"); diff --git a/src/data/heal_locations.h b/src/data/heal_locations.h new file mode 100644 index 000000000..613bcebe8 --- /dev/null +++ b/src/data/heal_locations.h @@ -0,0 +1,25 @@ +static const struct HealLocation sHealLocations[] = +{ + {MAP_GROUP(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F), MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F), 4, 2}, + {MAP_GROUP(LITTLEROOT_TOWN_MAYS_HOUSE_2F), MAP_NUM(LITTLEROOT_TOWN_MAYS_HOUSE_2F), 4, 2}, + {MAP_GROUP(PETALBURG_CITY), MAP_NUM(PETALBURG_CITY), 20, 17}, + {MAP_GROUP(SLATEPORT_CITY), MAP_NUM(SLATEPORT_CITY), 19, 20}, + {MAP_GROUP(MAUVILLE_CITY), MAP_NUM(MAUVILLE_CITY), 22, 6}, + {MAP_GROUP(RUSTBORO_CITY), MAP_NUM(RUSTBORO_CITY), 16, 39}, + {MAP_GROUP(FORTREE_CITY), MAP_NUM(FORTREE_CITY), 5, 7}, + {MAP_GROUP(LILYCOVE_CITY), MAP_NUM(LILYCOVE_CITY), 24, 15}, + {MAP_GROUP(MOSSDEEP_CITY), MAP_NUM(MOSSDEEP_CITY), 28, 17}, + {MAP_GROUP(SOOTOPOLIS_CITY), MAP_NUM(SOOTOPOLIS_CITY), 43, 32}, + {MAP_GROUP(EVER_GRANDE_CITY), MAP_NUM(EVER_GRANDE_CITY), 27, 49}, + {MAP_GROUP(LITTLEROOT_TOWN), MAP_NUM(LITTLEROOT_TOWN), 5, 9}, + {MAP_GROUP(LITTLEROOT_TOWN), MAP_NUM(LITTLEROOT_TOWN), 14, 9}, + {MAP_GROUP(OLDALE_TOWN), MAP_NUM(OLDALE_TOWN), 6, 17}, + {MAP_GROUP(DEWFORD_TOWN), MAP_NUM(DEWFORD_TOWN), 2, 11}, + {MAP_GROUP(LAVARIDGE_TOWN), MAP_NUM(LAVARIDGE_TOWN), 9, 7}, + {MAP_GROUP(FALLARBOR_TOWN), MAP_NUM(FALLARBOR_TOWN), 14, 8}, + {MAP_GROUP(VERDANTURF_TOWN), MAP_NUM(VERDANTURF_TOWN), 16, 4}, + {MAP_GROUP(PACIFIDLOG_TOWN), MAP_NUM(PACIFIDLOG_TOWN), 8, 16}, + {MAP_GROUP(EVER_GRANDE_CITY), MAP_NUM(EVER_GRANDE_CITY), 18, 6}, + {MAP_GROUP(SOUTHERN_ISLAND_EXTERIOR), MAP_NUM(SOUTHERN_ISLAND_EXTERIOR), 15, 20}, + {MAP_GROUP(BATTLE_FRONTIER_OUTSIDE_EAST), MAP_NUM(BATTLE_FRONTIER_OUTSIDE_EAST), 3, 52}, +}; diff --git a/src/data/item_icon_table.h b/src/data/item_icon_table.h new file mode 100644 index 000000000..0a24c0572 --- /dev/null +++ b/src/data/item_icon_table.h @@ -0,0 +1,414 @@ +#ifndef GUARD_DATA_ITEM_ICON_TABLE_H +#define GUARD_DATA_ITEM_ICON_TABLE_H + +#include "global.h" +#include "graphics.h" + +const u8 * const gItemIconTable[][2] = +{ + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, +// Pokeballs + gItemIcon_MasterBall, gItemIconPalette_MasterBall, + gItemIcon_UltraBall, gItemIconPalette_UltraBall, + gItemIcon_GreatBall, gItemIconPalette_GreatBall, + gItemIcon_PokeBall, gItemIconPalette_PokeBall, + gItemIcon_SafariBall, gItemIconPalette_SafariBall, + gItemIcon_NetBall, gItemIconPalette_NetBall, + gItemIcon_DiveBall, gItemIconPalette_DiveBall, + gItemIcon_NestBall, gItemIconPalette_NestBall, + gItemIcon_RepeatBall, gItemIconPalette_RepeatBall, + gItemIcon_TimerBall, gItemIconPalette_RepeatBall, + gItemIcon_LuxuryBall, gItemIconPalette_LuxuryBall, + gItemIcon_PremierBall, gItemIconPalette_LuxuryBall, +// Medicine + gItemIcon_Potion, gItemIconPalette_Potion, + gItemIcon_Antidote, gItemIconPalette_Antidote, + gItemIcon_StatusHeal, gItemIconPalette_BurnHeal, + gItemIcon_StatusHeal, gItemIconPalette_IceHeal, + gItemIcon_StatusHeal, gItemIconPalette_Awakening, + gItemIcon_StatusHeal, gItemIconPalette_ParalyzeHeal, + gItemIcon_LargePotion, gItemIconPalette_FullRestore, + gItemIcon_LargePotion, gItemIconPalette_MaxPotion, + gItemIcon_Potion, gItemIconPalette_HyperPotion, + gItemIcon_Potion, gItemIconPalette_SuperPotion, + gItemIcon_FullHeal, gItemIconPalette_FullHeal, + gItemIcon_Revive, gItemIconPalette_Revive, + gItemIcon_MaxRevive, gItemIconPalette_Revive, + gItemIcon_FreshWater, gItemIconPalette_FreshWater, + gItemIcon_SodaPop, gItemIconPalette_SodaPop, + gItemIcon_Lemonade, gItemIconPalette_Lemonade, + gItemIcon_MoomooMilk, gItemIconPalette_MoomooMilk, + gItemIcon_Powder, gItemIconPalette_EnergyPowder, + gItemIcon_EnergyRoot, gItemIconPalette_EnergyRoot, + gItemIcon_Powder, gItemIconPalette_HealPowder, + gItemIcon_RevivalHerb, gItemIconPalette_RevivalHerb, + gItemIcon_Ether, gItemIconPalette_Ether, + gItemIcon_Ether, gItemIconPalette_MaxEther, + gItemIcon_Ether, gItemIconPalette_Elixir, + gItemIcon_Ether, gItemIconPalette_MaxElixir, + gItemIcon_LavaCookie, gItemIconPalette_LavaCookieAndLetter, + gItemIcon_Flute, gItemIconPalette_BlueFlute, + gItemIcon_Flute, gItemIconPalette_YellowFlute, + gItemIcon_Flute, gItemIconPalette_RedFlute, + gItemIcon_Flute, gItemIconPalette_BlackFlute, + gItemIcon_Flute, gItemIconPalette_WhiteFlute, + gItemIcon_BerryJuice, gItemIconPalette_BerryJuice, + gItemIcon_SacredAsh, gItemIconPalette_SacredAsh, +// Collectibles + gItemIcon_Powder, gItemIconPalette_ShoalSalt, + gItemIcon_ShoalShell, gItemIconPalette_Shell, + gItemIcon_Shard, gItemIconPalette_RedShard, + gItemIcon_Shard, gItemIconPalette_BlueShard, + gItemIcon_Shard, gItemIconPalette_YellowShard, + gItemIcon_Shard, gItemIconPalette_GreenShard, +// ???????? + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, +// Vitamins + gItemIcon_HPUp, gItemIconPalette_HPUp, + gItemIcon_Vitamin, gItemIconPalette_Protein, + gItemIcon_Vitamin, gItemIconPalette_Iron, + gItemIcon_Vitamin, gItemIconPalette_Carbos, + gItemIcon_Vitamin, gItemIconPalette_Calcium, + gItemIcon_RareCandy, gItemIconPalette_RareCandy, + gItemIcon_PPUp, gItemIconPalette_PPUp, + gItemIcon_Vitamin, gItemIconPalette_Zinc, + gItemIcon_PPMax, gItemIconPalette_PPMax, +// ???????? + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, +// Battle items + gItemIcon_BattleStatItem, gItemIconPalette_GuardSpec, + gItemIcon_BattleStatItem, gItemIconPalette_DireHit, + gItemIcon_BattleStatItem, gItemIconPalette_XAttack, + gItemIcon_BattleStatItem, gItemIconPalette_XDefend, + gItemIcon_BattleStatItem, gItemIconPalette_XSpeed, + gItemIcon_BattleStatItem, gItemIconPalette_XAccuracy, + gItemIcon_BattleStatItem, gItemIconPalette_XSpecial, + gItemIcon_PokeDoll, gItemIconPalette_PokeDoll, + gItemIcon_FluffyTail, gItemIconPalette_FluffyTail, +// ???????? + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, +// Field items + gItemIcon_Repel, gItemIconPalette_SuperRepel, + gItemIcon_Repel, gItemIconPalette_MaxRepel, + gItemIcon_EscapeRope, gItemIconPalette_EscapeRope, + gItemIcon_Repel, gItemIconPalette_Repel, +// ???????? + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, +// Evolution stones + gItemIcon_SunStone, gItemIconPalette_SunStone, + gItemIcon_MoonStone, gItemIconPalette_MoonStone, + gItemIcon_FireStone, gItemIconPalette_FireStone, + gItemIcon_ThunderStone, gItemIconPalette_ThunderStone, + gItemIcon_WaterStone, gItemIconPalette_WaterStone, + gItemIcon_LeafStone, gItemIconPalette_LeafStone, +// ???????? + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, +// Valuables + gItemIcon_TinyMushroom, gItemIconPalette_Mushroom, + gItemIcon_BigMushroom, gItemIconPalette_Mushroom, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_Pearl, gItemIconPalette_Pearl, + gItemIcon_BigPearl, gItemIconPalette_Pearl, + gItemIcon_Stardust, gItemIconPalette_Star, + gItemIcon_StarPiece, gItemIconPalette_Star, + gItemIcon_Nugget, gItemIconPalette_Nugget, + gItemIcon_HeartScale, gItemIconPalette_HeartScale, +// ???????? + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, +// Mail + gItemIcon_OrangeMail, gItemIconPalette_OrangeMail, + gItemIcon_HarborMail, gItemIconPalette_HarborMail, + gItemIcon_GlitterMail, gItemIconPalette_GlitterMail, + gItemIcon_MechMail, gItemIconPalette_MechMail, + gItemIcon_WoodMail, gItemIconPalette_WoodMail, + gItemIcon_WaveMail, gItemIconPalette_WaveMail, + gItemIcon_BeadMail, gItemIconPalette_BeadMail, + gItemIcon_ShadowMail, gItemIconPalette_ShadowMail, + gItemIcon_TropicMail, gItemIconPalette_TropicMail, + gItemIcon_DreamMail, gItemIconPalette_DreamMail, + gItemIcon_FabMail, gItemIconPalette_FabMail, + gItemIcon_RetroMail, gItemIconPalette_RetroMail, +// Berries + gItemIcon_CheriBerry, gItemIconPalette_CheriBerry, + gItemIcon_ChestoBerry, gItemIconPalette_ChestoBerry, + gItemIcon_PechaBerry, gItemIconPalette_PechaBerry, + gItemIcon_RawstBerry, gItemIconPalette_RawstBerry, + gItemIcon_AspearBerry, gItemIconPalette_AspearBerry, + gItemIcon_LeppaBerry, gItemIconPalette_LeppaBerry, + gItemIcon_OranBerry, gItemIconPalette_OranBerry, + gItemIcon_PersimBerry, gItemIconPalette_PersimBerry, + gItemIcon_LumBerry, gItemIconPalette_LumBerry, + gItemIcon_SitrusBerry, gItemIconPalette_SitrusBerry, + gItemIcon_FigyBerry, gItemIconPalette_FigyBerry, + gItemIcon_WikiBerry, gItemIconPalette_WikiBerry, + gItemIcon_MagoBerry, gItemIconPalette_MagoBerry, + gItemIcon_AguavBerry, gItemIconPalette_AguavBerry, + gItemIcon_IapapaBerry, gItemIconPalette_IapapaBerry, + gItemIcon_RazzBerry, gItemIconPalette_RazzBerry, + gItemIcon_BlukBerry, gItemIconPalette_BlukBerry, + gItemIcon_NanabBerry, gItemIconPalette_NanabBerry, + gItemIcon_WepearBerry, gItemIconPalette_WepearBerry, + gItemIcon_PinapBerry, gItemIconPalette_PinapBerry, + gItemIcon_PomegBerry, gItemIconPalette_PomegBerry, + gItemIcon_KelpsyBerry, gItemIconPalette_KelpsyBerry, + gItemIcon_QualotBerry, gItemIconPalette_QualotBerry, + gItemIcon_HondewBerry, gItemIconPalette_HondewBerry, + gItemIcon_GrepaBerry, gItemIconPalette_GrepaBerry, + gItemIcon_TamatoBerry, gItemIconPalette_TamatoBerry, + gItemIcon_CornnBerry, gItemIconPalette_CornnBerry, + gItemIcon_MagostBerry, gItemIconPalette_MagostBerry, + gItemIcon_RabutaBerry, gItemIconPalette_RabutaBerry, + gItemIcon_NomelBerry, gItemIconPalette_NomelBerry, + gItemIcon_SpelonBerry, gItemIconPalette_SpelonBerry, + gItemIcon_PamtreBerry, gItemIconPalette_PamtreBerry, + gItemIcon_WatmelBerry, gItemIconPalette_WatmelBerry, + gItemIcon_DurinBerry, gItemIconPalette_DurinBerry, + gItemIcon_BelueBerry, gItemIconPalette_BelueBerry, + gItemIcon_LiechiBerry, gItemIconPalette_LiechiBerry, + gItemIcon_GanlonBerry, gItemIconPalette_GanlonBerry, + gItemIcon_SalacBerry, gItemIconPalette_SalacBerry, + gItemIcon_PetayaBerry, gItemIconPalette_PetayaBerry, + gItemIcon_ApicotBerry, gItemIconPalette_ApicotBerry, + gItemIcon_LansatBerry, gItemIconPalette_LansatBerry, + gItemIcon_StarfBerry, gItemIconPalette_StarfBerry, + gItemIcon_EnigmaBerry, gItemIconPalette_EnigmaBerry, +// ???????? + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, +// Hold items + gItemIcon_BrightPowder, gItemIconPalette_BrightPowder, + gItemIcon_InBattleHerb, gItemIconPalette_WhiteHerb, + gItemIcon_MachoBrace, gItemIconPalette_MachoBrace, + gItemIcon_ExpShare, gItemIconPalette_ExpShare, + gItemIcon_QuickClaw, gItemIconPalette_QuickClaw, + gItemIcon_SootheBell, gItemIconPalette_SootheBell, + gItemIcon_InBattleHerb, gItemIconPalette_MentalHerb, + gItemIcon_ChoiceBand, gItemIconPalette_ChoiceBand, + gItemIcon_KingsRock, gItemIconPalette_KingsRock, + gItemIcon_SilverPowder, gItemIconPalette_SilverPowder, + gItemIcon_AmuletCoin, gItemIconPalette_AmuletCoin, + gItemIcon_CleanseTag, gItemIconPalette_CleanseTag, + gItemIcon_SoulDew, gItemIconPalette_SoulDew, + gItemIcon_DeepSeaTooth, gItemIconPalette_DeepSeaTooth, + gItemIcon_DeepSeaScale, gItemIconPalette_DeepSeaScale, + gItemIcon_SmokeBall, gItemIconPalette_SmokeBall, + gItemIcon_Everstone, gItemIconPalette_Everstone, + gItemIcon_FocusBand, gItemIconPalette_FocusBand, + gItemIcon_LuckyEgg, gItemIconPalette_LuckyEgg, + gItemIcon_ScopeLens, gItemIconPalette_ScopeLens, + gItemIcon_MetalCoat, gItemIconPalette_MetalCoat, + gItemIcon_Leftovers, gItemIconPalette_Leftovers, + gItemIcon_DragonScale, gItemIconPalette_DragonScale, + gItemIcon_LightBall, gItemIconPalette_LightBall, + gItemIcon_SoftSand, gItemIconPalette_SoftSand, + gItemIcon_HardStone, gItemIconPalette_HardStone, + gItemIcon_MiracleSeed, gItemIconPalette_MiracleSeed, + gItemIcon_BlackGlasses, gItemIconPalette_BlackTypeEnhancingItem, + gItemIcon_BlackBelt, gItemIconPalette_BlackTypeEnhancingItem, + gItemIcon_Magnet, gItemIconPalette_Magnet, + gItemIcon_MysticWater, gItemIconPalette_MysticWater, + gItemIcon_SharpBeak, gItemIconPalette_SharpBeak, + gItemIcon_PoisonBarb, gItemIconPalette_PoisonBarb, + gItemIcon_NeverMeltIce, gItemIconPalette_NeverMeltIce, + gItemIcon_SpellTag, gItemIconPalette_SpellTag, + gItemIcon_TwistedSpoon, gItemIconPalette_TwistedSpoon, + gItemIcon_Charcoal, gItemIconPalette_Charcoal, + gItemIcon_DragonFang, gItemIconPalette_DragonFang, + gItemIcon_SilkScarf, gItemIconPalette_SilkScarf, + gItemIcon_UpGrade, gItemIconPalette_UpGrade, + gItemIcon_ShellBell, gItemIconPalette_Shell, + gItemIcon_SeaIncense, gItemIconPalette_SeaIncense, + gItemIcon_LaxIncense, gItemIconPalette_LaxIncense, + gItemIcon_LuckyPunch, gItemIconPalette_LuckyPunch, + gItemIcon_MetalPowder, gItemIconPalette_MetalPowder, + gItemIcon_ThickClub, gItemIconPalette_ThickClub, + gItemIcon_Stick, gItemIconPalette_Stick, +// ???????? + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, +// Contest hold items + gItemIcon_Scarf, gItemIconPalette_RedScarf, + gItemIcon_Scarf, gItemIconPalette_BlueScarf, + gItemIcon_Scarf, gItemIconPalette_PinkScarf, + gItemIcon_Scarf, gItemIconPalette_GreenScarf, + gItemIcon_Scarf, gItemIconPalette_YellowScarf, +// Key items + gItemIcon_MachBike, gItemIconPalette_MachBike, + gItemIcon_CoinCase, gItemIconPalette_CoinCase, + gItemIcon_Itemfinder, gItemIconPalette_Itemfinder, + gItemIcon_OldRod, gItemIconPalette_OldRod, + gItemIcon_GoodRod, gItemIconPalette_GoodRod, + gItemIcon_SuperRod, gItemIconPalette_SuperRod, + gItemIcon_SSTicket, gItemIconPalette_SSTicket, + gItemIcon_ContestPass, gItemIconPalette_ContestPass, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_WailmerPail, gItemIconPalette_WailmerPail, + gItemIcon_DevonGoods, gItemIconPalette_DevonGoods, + gItemIcon_SootSack, gItemIconPalette_SootSack, + gItemIcon_BasementKey, gItemIconPalette_OldKey, + gItemIcon_AcroBike, gItemIconPalette_AcroBike, + gItemIcon_PokeblockCase, gItemIconPalette_PokeblockCase, + gItemIcon_Letter, gItemIconPalette_LavaCookieAndLetter, + gItemIcon_EonTicket, gItemIconPalette_EonTicket, + gItemIcon_Orb, gItemIconPalette_RedOrb, + gItemIcon_Orb, gItemIconPalette_BlueOrb, + gItemIcon_Scanner, gItemIconPalette_Scanner, + gItemIcon_GoGoggles, gItemIconPalette_GoGoggles, + gItemIcon_Meteorite, gItemIconPalette_Meteorite, + gItemIcon_Room1Key, gItemIconPalette_Key, + gItemIcon_Room2Key, gItemIconPalette_Key, + gItemIcon_Room4Key, gItemIconPalette_Key, + gItemIcon_Room6Key, gItemIconPalette_Key, + gItemIcon_StorageKey, gItemIconPalette_OldKey, + gItemIcon_RootFossil, gItemIconPalette_HoennFossil, + gItemIcon_ClawFossil, gItemIconPalette_HoennFossil, + gItemIcon_DevonScope, gItemIconPalette_DevonScope, +// TMs/HMs + gItemIcon_TM, gItemIconPalette_FightingTMHM, // TM01 + gItemIcon_TM, gItemIconPalette_DragonTMHM, // TM02 + gItemIcon_TM, gItemIconPalette_WaterTMHM, // TM03 + gItemIcon_TM, gItemIconPalette_PsychicTMHM, // TM04 + gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM05 + gItemIcon_TM, gItemIconPalette_PoisonTMHM, // TM06 + gItemIcon_TM, gItemIconPalette_IceTMHM, // TM07 + gItemIcon_TM, gItemIconPalette_FightingTMHM, // TM08 + gItemIcon_TM, gItemIconPalette_GrassTMHM, // TM09 + gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM10 + gItemIcon_TM, gItemIconPalette_FireTMHM, // TM11 + gItemIcon_TM, gItemIconPalette_DarkTMHM, // TM12 + gItemIcon_TM, gItemIconPalette_IceTMHM, // TM13 + gItemIcon_TM, gItemIconPalette_IceTMHM, // TM14 + gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM15 + gItemIcon_TM, gItemIconPalette_PsychicTMHM, // TM16 + gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM17 + gItemIcon_TM, gItemIconPalette_WaterTMHM, // TM18 + gItemIcon_TM, gItemIconPalette_GrassTMHM, // TM19 + gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM20 + gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM21 + gItemIcon_TM, gItemIconPalette_GrassTMHM, // TM22 + gItemIcon_TM, gItemIconPalette_SteelTMHM, // TM23 + gItemIcon_TM, gItemIconPalette_ElectricTMHM, // TM24 + gItemIcon_TM, gItemIconPalette_ElectricTMHM, // TM25 + gItemIcon_TM, gItemIconPalette_GroundTMHM, // TM26 + gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM27 + gItemIcon_TM, gItemIconPalette_GroundTMHM, // TM28 + gItemIcon_TM, gItemIconPalette_PsychicTMHM, // TM29 + gItemIcon_TM, gItemIconPalette_GhostTMHM, // TM30 + gItemIcon_TM, gItemIconPalette_FightingTMHM, // TM31 + gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM32 + gItemIcon_TM, gItemIconPalette_PsychicTMHM, // TM33 + gItemIcon_TM, gItemIconPalette_ElectricTMHM, // TM34 + gItemIcon_TM, gItemIconPalette_FireTMHM, // TM35 + gItemIcon_TM, gItemIconPalette_PoisonTMHM, // TM36 + gItemIcon_TM, gItemIconPalette_RockTMHM, // TM37 + gItemIcon_TM, gItemIconPalette_FireTMHM, // TM38 + gItemIcon_TM, gItemIconPalette_RockTMHM, // TM39 + gItemIcon_TM, gItemIconPalette_FlyingTMHM, // TM40 + gItemIcon_TM, gItemIconPalette_DarkTMHM, // TM41 + gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM42 + gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM43 + gItemIcon_TM, gItemIconPalette_PsychicTMHM, // TM44 + gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM45 + gItemIcon_TM, gItemIconPalette_DarkTMHM, // TM46 + gItemIcon_TM, gItemIconPalette_SteelTMHM, // TM47 + gItemIcon_TM, gItemIconPalette_PsychicTMHM, // TM48 + gItemIcon_TM, gItemIconPalette_DarkTMHM, // TM49 + gItemIcon_TM, gItemIconPalette_FireTMHM, // TM50 + gItemIcon_HM, gItemIconPalette_NormalTMHM, // HM01 + gItemIcon_HM, gItemIconPalette_FlyingTMHM, // HM02 + gItemIcon_HM, gItemIconPalette_WaterTMHM, // HM03 + gItemIcon_HM, gItemIconPalette_NormalTMHM, // HM04 + gItemIcon_HM, gItemIconPalette_NormalTMHM, // HM05 + gItemIcon_HM, gItemIconPalette_FightingTMHM, // HM06 + gItemIcon_HM, gItemIconPalette_WaterTMHM, // HM07 + gItemIcon_HM, gItemIconPalette_WaterTMHM, // HM08 +// ???????? + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, + gItemIcon_QuestionMark, gItemIconPalette_QuestionMark, +// FireRed/LeafGreen key items + gItemIcon_OaksParcel, gItemIconPalette_OaksParcel, + gItemIcon_PokeFlute, gItemIconPalette_PokeFlute, + gItemIcon_SecretKey, gItemIconPalette_SecretKey, + gItemIcon_BikeVoucher, gItemIconPalette_BikeVoucher, + gItemIcon_GoldTeeth, gItemIconPalette_GoldTeeth, + gItemIcon_OldAmber, gItemIconPalette_OldAmber, + gItemIcon_CardKey, gItemIconPalette_CardKey, + gItemIcon_LiftKey, gItemIconPalette_Key, + gItemIcon_HelixFossil, gItemIconPalette_KantoFossil, + gItemIcon_DomeFossil, gItemIconPalette_KantoFossil, + gItemIcon_SilphScope, gItemIconPalette_SilphScope, + gItemIcon_Bicycle, gItemIconPalette_Bicycle, + gItemIcon_TownMap, gItemIconPalette_TownMap, + gItemIcon_VSSeeker, gItemIconPalette_VSSeeker, + gItemIcon_FameChecker, gItemIconPalette_FameChecker, + gItemIcon_TMCase, gItemIconPalette_TMCase, + gItemIcon_BerryPouch, gItemIconPalette_BerryPouch, + gItemIcon_TeachyTV, gItemIconPalette_TeachyTV, + gItemIcon_TriPass, gItemIconPalette_TriPass, + gItemIcon_RainbowPass, gItemIconPalette_RainbowPass, + gItemIcon_Tea, gItemIconPalette_Tea, + gItemIcon_MysticTicket, gItemIconPalette_MysticTicket, + gItemIcon_AuroraTicket, gItemIconPalette_AuroraTicket, + gItemIcon_PowderJar, gItemIconPalette_PowderJar, + gItemIcon_Gem, gItemIconPalette_Ruby, + gItemIcon_Gem, gItemIconPalette_Sapphire, +// Emerald-only key items + gItemIcon_MagmaEmblem, gItemIconPalette_MagmaEmblem, + gItemIcon_OldSeaMap, gItemIconPalette_OldSeaMap, +// Return to field arrow + gItemIcon_ReturnToFieldArrow, gItemIconPalette_ReturnToFieldArrow, +}; +#endif // GUARD_DATA_ITEM_ICON_TABLE_H diff --git a/src/data/items.h b/src/data/items.h new file mode 100644 index 000000000..49f981faf --- /dev/null +++ b/src/data/items.h @@ -0,0 +1,6079 @@ +const struct Item gItems[] = +{ + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + +//Pokeballs + + { + .name = _("MASTER BALL"), + .itemId = ITEM_MASTER_BALL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gMasterBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 0, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 0, + }, + { + .name = _("ULTRA BALL"), + .itemId = ITEM_ULTRA_BALL, + .price = 1200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gUltraBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 1, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 1, + }, + { + .name = _("GREAT BALL"), + .itemId = ITEM_GREAT_BALL, + .price = 600, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gGreatBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 2, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 2, + }, + { + .name = _("POKé BALL"), + .itemId = ITEM_POKE_BALL, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gPokeBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 3, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 3, + }, + { + .name = _("SAFARI BALL"), + .itemId = ITEM_SAFARI_BALL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gSafariBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 4, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 4, + }, + { + .name = _("NET BALL"), + .itemId = ITEM_NET_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gNetBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 5, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 5, + }, + { + .name = _("DIVE BALL"), + .itemId = ITEM_DIVE_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDiveBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 6, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 6, + }, + { + .name = _("NEST BALL"), + .itemId = ITEM_NEST_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gNestBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 7, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 7, + }, + { + .name = _("REPEAT BALL"), + .itemId = ITEM_REPEAT_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRepeatBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 8, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 8, + }, + { + .name = _("TIMER BALL"), + .itemId = ITEM_TIMER_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTimerBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 9, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 9, + }, + { + .name = _("LUXURY BALL"), + .itemId = ITEM_LUXURY_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gLuxuryBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 10, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 10, + }, + { + .name = _("PREMIER BALL"), + .itemId = ITEM_PREMIER_BALL, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gPremierBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 11, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 11, + }, + +//Medicine + + { + .name = _("POTION"), + .itemId = ITEM_POTION, + .price = 300, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 20, + .description = gPotionItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ANTIDOTE"), + .itemId = ITEM_ANTIDOTE, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gAntidoteItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("BURN HEAL"), + .itemId = ITEM_BURN_HEAL, + .price = 250, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBurnHealItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ICE HEAL"), + .itemId = ITEM_ICE_HEAL, + .price = 250, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gIceHealItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("AWAKENING"), + .itemId = ITEM_AWAKENING, + .price = 250, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gAwakeningItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("PARLYZ HEAL"), + .itemId = ITEM_PARALYZE_HEAL, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gParalyzeHealItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("FULL RESTORE"), + .itemId = ITEM_FULL_RESTORE, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 255, + .description = gFullRestoreItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("MAX POTION"), + .itemId = ITEM_MAX_POTION, + .price = 2500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 255, + .description = gMaxPotionItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("HYPER POTION"), + .itemId = ITEM_HYPER_POTION, + .price = 1200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 200, + .description = gHyperPotionItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("SUPER POTION"), + .itemId = ITEM_SUPER_POTION, + .price = 700, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 50, + .description = gSuperPotionItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("FULL HEAL"), + .itemId = ITEM_FULL_HEAL, + .price = 600, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gFullHealItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("REVIVE"), + .itemId = ITEM_REVIVE, + .price = 1500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gReviveItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("MAX REVIVE"), + .itemId = ITEM_MAX_REVIVE, + .price = 4000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gMaxReviveItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("FRESH WATER"), + .itemId = ITEM_FRESH_WATER, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 50, + .description = gFreshWaterItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("SODA POP"), + .itemId = ITEM_SODA_POP, + .price = 300, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 60, + .description = gSodaPopItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("LEMONADE"), + .itemId = ITEM_LEMONADE, + .price = 350, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 80, + .description = gLemonadeItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("MOOMOO MILK"), + .itemId = ITEM_MOOMOO_MILK, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 100, + .description = gMoomooMilkItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ENERGYPOWDER"), + .itemId = ITEM_ENERGY_POWDER, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gEnergyPowderItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ENERGY ROOT"), + .itemId = ITEM_ENERGY_ROOT, + .price = 800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gEnergyRootItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("HEAL POWDER"), + .itemId = ITEM_HEAL_POWDER, + .price = 450, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHealPowderItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("REVIVAL HERB"), + .itemId = ITEM_REVIVAL_HERB, + .price = 2800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRevivalHerbItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ETHER"), + .itemId = ITEM_ETHER, + .price = 1200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 10, + .description = gEtherItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("MAX ETHER"), + .itemId = ITEM_MAX_ETHER, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 255, + .description = gMaxEtherItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("ELIXIR"), + .itemId = ITEM_ELIXIR, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 10, + .description = gElixirItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("MAX ELIXIR"), + .itemId = ITEM_MAX_ELIXIR, + .price = 4500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 255, + .description = gMaxElixirItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("LAVA COOKIE"), + .itemId = ITEM_LAVA_COOKIE, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gLavaCookieItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("BLUE FLUTE"), + .itemId = ITEM_BLUE_FLUTE, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBlueFluteItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("YELLOW FLUTE"), + .itemId = ITEM_YELLOW_FLUTE, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gYellowFluteItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("RED FLUTE"), + .itemId = ITEM_RED_FLUTE, + .price = 300, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRedFluteItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("BLACK FLUTE"), + .itemId = ITEM_BLACK_FLUTE, + .price = 400, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 50, + .description = gBlackFluteItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_BlackWhiteFlute, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WHITE FLUTE"), + .itemId = ITEM_WHITE_FLUTE, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 150, + .description = gWhiteFluteItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_BlackWhiteFlute, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BERRY JUICE"), + .itemId = ITEM_BERRY_JUICE, + .price = 100, + .holdEffect = HOLD_EFFECT_RESTORE_HP, + .holdEffectParam = 20, + .description = gBerryJuiceItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("SACRED ASH"), + .itemId = ITEM_SACRED_ASH, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gSacredAshItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_SacredAsh, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + +//Collectibles + + { + .name = _("SHOAL SALT"), + .itemId = ITEM_SHOAL_SALT, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gShoalSaltItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SHOAL SHELL"), + .itemId = ITEM_SHOAL_SHELL, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gShoalShellItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RED SHARD"), + .itemId = ITEM_RED_SHARD, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRedShardItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLUE SHARD"), + .itemId = ITEM_BLUE_SHARD, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBlueShardItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("YELLOW SHARD"), + .itemId = ITEM_YELLOW_SHARD, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gYellowShardItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GREEN SHARD"), + .itemId = ITEM_GREEN_SHARD, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gGreenShardItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + +//Vitamins + + { + .name = _("HP UP"), + .itemId = ITEM_HP_UP, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHPUpItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PROTEIN"), + .itemId = ITEM_PROTEIN, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gProteinItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("IRON"), + .itemId = ITEM_IRON, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gIronItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CARBOS"), + .itemId = ITEM_CARBOS, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gCarbosItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CALCIUM"), + .itemId = ITEM_CALCIUM, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gCalciumItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RARE CANDY"), + .itemId = ITEM_RARE_CANDY, + .price = 4800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRareCandyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_RareCandy, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PP UP"), + .itemId = ITEM_PP_UP, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gPPUpItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPUp, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ZINC"), + .itemId = ITEM_ZINC, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gZincItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PP MAX"), + .itemId = ITEM_PP_MAX, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gPPMaxItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPUp, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + +//Battle items + + { + .name = _("GUARD SPEC."), + .itemId = ITEM_GUARD_SPEC, + .price = 700, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gGuardSpecItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("DIRE HIT"), + .itemId = ITEM_DIRE_HIT, + .price = 650, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDireHitItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X ATTACK"), + .itemId = ITEM_X_ATTACK, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gXAttackItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X DEFEND"), + .itemId = ITEM_X_DEFEND, + .price = 550, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gXDefendItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X SPEED"), + .itemId = ITEM_X_SPEED, + .price = 350, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gXSpeedItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X ACCURACY"), + .itemId = ITEM_X_ACCURACY, + .price = 950, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gXAccuracyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X SPECIAL"), + .itemId = ITEM_X_SPECIAL, + .price = 350, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gXSpecialItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("POKé DOLL"), + .itemId = ITEM_POKE_DOLL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gPokeDollItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_Escape, + .secondaryId = 0, + }, + { + .name = _("FLUFFY TAIL"), + .itemId = ITEM_FLUFFY_TAIL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gFluffyTailItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_Escape, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + +//Field items + + { + .name = _("SUPER REPEL"), + .itemId = ITEM_SUPER_REPEL, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 200, + .description = gSuperRepelItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_Repel, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MAX REPEL"), + .itemId = ITEM_MAX_REPEL, + .price = 700, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 250, + .description = gMaxRepelItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_Repel, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ESCAPE ROPE"), + .itemId = ITEM_ESCAPE_ROPE, + .price = 550, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gEscapeRopeItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_EscapeRope, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("REPEL"), + .itemId = ITEM_REPEL, + .price = 350, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 100, + .description = gRepelItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_Repel, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + +//Evolution stones + + { + .name = _("SUN STONE"), + .itemId = ITEM_SUN_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gSunStoneItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MOON STONE"), + .itemId = ITEM_MOON_STONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gMoonStoneItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("FIRE STONE"), + .itemId = ITEM_FIRE_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gFireStoneItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("THUNDERSTONE"), + .itemId = ITEM_THUNDER_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gThunderStoneItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WATER STONE"), + .itemId = ITEM_WATER_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gWaterStoneItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LEAF STONE"), + .itemId = ITEM_LEAF_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gLeafStoneItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + +//Valuable items + + { + .name = _("TINYMUSHROOM"), + .itemId = ITEM_TINY_MUSHROOM, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTinyMushroomItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BIG MUSHROOM"), + .itemId = ITEM_BIG_MUSHROOM, + .price = 5000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBigMushroomItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PEARL"), + .itemId = ITEM_PEARL, + .price = 1400, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gPearlItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BIG PEARL"), + .itemId = ITEM_BIG_PEARL, + .price = 7500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBigPearlItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("STARDUST"), + .itemId = ITEM_STARDUST, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gStardustItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("STAR PIECE"), + .itemId = ITEM_STAR_PIECE, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gStarPieceItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("NUGGET"), + .itemId = ITEM_NUGGET, + .price = 10000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gNuggetItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HEART SCALE"), + .itemId = ITEM_HEART_SCALE, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHeartScaleItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + +//Mail + { + .name = _("ORANGE MAIL"), + .itemId = ITEM_ORANGE_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gOrangeMailItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HARBOR MAIL"), + .itemId = ITEM_HARBOR_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHarborMailItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 1, + }, + { + .name = _("GLITTER MAIL"), + .itemId = ITEM_GLITTER_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gGlitterMailItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 2, + }, + { + .name = _("MECH MAIL"), + .itemId = ITEM_MECH_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gMechMailItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 3, + }, + { + .name = _("WOOD MAIL"), + .itemId = ITEM_WOOD_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gWoodMailItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 4, + }, + { + .name = _("WAVE MAIL"), + .itemId = ITEM_WAVE_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gWaveMailItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 5, + }, + { + .name = _("BEAD MAIL"), + .itemId = ITEM_BEAD_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBeadMailItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 6, + }, + { + .name = _("SHADOW MAIL"), + .itemId = ITEM_SHADOW_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gShadowMailItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 7, + }, + { + .name = _("TROPIC MAIL"), + .itemId = ITEM_TROPIC_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTropicMailItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 8, + }, + { + .name = _("DREAM MAIL"), + .itemId = ITEM_DREAM_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDreamMailItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 9, + }, + { + .name = _("FAB MAIL"), + .itemId = ITEM_FAB_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gFabMailItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 10, + }, + { + .name = _("RETRO MAIL"), + .itemId = ITEM_RETRO_MAIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRetroMailItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 11, + }, + +//Berries + + { + .name = _("CHERI BERRY"), + .itemId = ITEM_CHERI_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_PAR, + .holdEffectParam = 0, + .description = gCheriBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("CHESTO BERRY"), + .itemId = ITEM_CHESTO_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_SLP, + .holdEffectParam = 0, + .description = gChestoBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("PECHA BERRY"), + .itemId = ITEM_PECHA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_PSN, + .holdEffectParam = 0, + .description = gPechaBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("RAWST BERRY"), + .itemId = ITEM_RAWST_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_BRN, + .holdEffectParam = 0, + .description = gRawstBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ASPEAR BERRY"), + .itemId = ITEM_ASPEAR_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_FRZ, + .holdEffectParam = 0, + .description = gAspearBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("LEPPA BERRY"), + .itemId = ITEM_LEPPA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_RESTORE_PP, + .holdEffectParam = 10, + .description = gLeppaBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("ORAN BERRY"), + .itemId = ITEM_ORAN_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_RESTORE_HP, + .holdEffectParam = 10, + .description = gOranBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("PERSIM BERRY"), + .itemId = ITEM_PERSIM_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_CONFUSION, + .holdEffectParam = 0, + .description = gPersimBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("LUM BERRY"), + .itemId = ITEM_LUM_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_STATUS, + .holdEffectParam = 0, + .description = gLumBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("SITRUS BERRY"), + .itemId = ITEM_SITRUS_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_RESTORE_HP, + .holdEffectParam = 30, + .description = gSitrusBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("FIGY BERRY"), + .itemId = ITEM_FIGY_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_SPICY, + .holdEffectParam = 8, + .description = gFigyBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WIKI BERRY"), + .itemId = ITEM_WIKI_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_DRY, + .holdEffectParam = 8, + .description = gWikiBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MAGO BERRY"), + .itemId = ITEM_MAGO_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_SWEET, + .holdEffectParam = 8, + .description = gMagoBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("AGUAV BERRY"), + .itemId = ITEM_AGUAV_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_BITTER, + .holdEffectParam = 8, + .description = gAguavBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("IAPAPA BERRY"), + .itemId = ITEM_IAPAPA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_SOUR, + .holdEffectParam = 8, + .description = gIapapaBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RAZZ BERRY"), + .itemId = ITEM_RAZZ_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRazzBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLUK BERRY"), + .itemId = ITEM_BLUK_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBlukBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("NANAB BERRY"), + .itemId = ITEM_NANAB_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gNanabBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WEPEAR BERRY"), + .itemId = ITEM_WEPEAR_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gWepearBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PINAP BERRY"), + .itemId = ITEM_PINAP_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gPinapBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("POMEG BERRY"), + .itemId = ITEM_POMEG_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gPomegBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_ReduceEV, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KELPSY BERRY"), + .itemId = ITEM_KELPSY_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gKelpsyBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_ReduceEV, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("QUALOT BERRY"), + .itemId = ITEM_QUALOT_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gQualotBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_ReduceEV, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HONDEW BERRY"), + .itemId = ITEM_HONDEW_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHondewBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_ReduceEV, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GREPA BERRY"), + .itemId = ITEM_GREPA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gGrepaBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_ReduceEV, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TAMATO BERRY"), + .itemId = ITEM_TAMATO_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTamatoBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_ReduceEV, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CORNN BERRY"), + .itemId = ITEM_CORNN_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gCornnBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MAGOST BERRY"), + .itemId = ITEM_MAGOST_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gMagostBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RABUTA BERRY"), + .itemId = ITEM_RABUTA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRabutaBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("NOMEL BERRY"), + .itemId = ITEM_NOMEL_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gNomelBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SPELON BERRY"), + .itemId = ITEM_SPELON_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gSpelonBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PAMTRE BERRY"), + .itemId = ITEM_PAMTRE_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gPamtreBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WATMEL BERRY"), + .itemId = ITEM_WATMEL_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gWatmelBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DURIN BERRY"), + .itemId = ITEM_DURIN_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDurinBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BELUE BERRY"), + .itemId = ITEM_BELUE_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBelueBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LIECHI BERRY"), + .itemId = ITEM_LIECHI_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_ATTACK_UP, + .holdEffectParam = 4, + .description = gLiechiBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GANLON BERRY"), + .itemId = ITEM_GANLON_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_DEFENSE_UP, + .holdEffectParam = 4, + .description = gGanlonBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SALAC BERRY"), + .itemId = ITEM_SALAC_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_SPEED_UP, + .holdEffectParam = 4, + .description = gSalacBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PETAYA BERRY"), + .itemId = ITEM_PETAYA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_SP_ATTACK_UP, + .holdEffectParam = 4, + .description = gPetayaBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("APICOT BERRY"), + .itemId = ITEM_APICOT_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_SP_DEFENSE_UP, + .holdEffectParam = 4, + .description = gApicotBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LANSAT BERRY"), + .itemId = ITEM_LANSAT_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CRITICAL_UP, + .holdEffectParam = 4, + .description = gLansatBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("STARF BERRY"), + .itemId = ITEM_STARF_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_RANDOM_STAT_UP, + .holdEffectParam = 4, + .description = gStarfBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ENIGMA BERRY"), + .itemId = ITEM_ENIGMA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gEnigmaBerryItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_EnigmaBerry, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_EnigmaBerry, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + +//Hold items + + { + .name = _("BRIGHTPOWDER"), + .itemId = ITEM_BRIGHT_POWDER, + .price = 10, + .holdEffect = HOLD_EFFECT_EVASION_UP, + .holdEffectParam = 10, + .description = gBrightPowderItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WHITE HERB"), + .itemId = ITEM_WHITE_HERB, + .price = 100, + .holdEffect = HOLD_EFFECT_RESTORE_STATS, + .holdEffectParam = 0, + .description = gWhiteHerbItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MACHO BRACE"), + .itemId = ITEM_MACHO_BRACE, + .price = 3000, + .holdEffect = HOLD_EFFECT_MACHO_BRACE, + .holdEffectParam = 0, + .description = gMachoBraceItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("EXP. SHARE"), + .itemId = ITEM_EXP_SHARE, + .price = 3000, + .holdEffect = HOLD_EFFECT_EXP_SHARE, + .holdEffectParam = 0, + .description = gExpShareItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("QUICK CLAW"), + .itemId = ITEM_QUICK_CLAW, + .price = 100, + .holdEffect = HOLD_EFFECT_QUICK_CLAW, + .holdEffectParam = 20, + .description = gQuickClawItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SOOTHE BELL"), + .itemId = ITEM_SOOTHE_BELL, + .price = 100, + .holdEffect = HOLD_EFFECT_HAPPINESS_UP, + .holdEffectParam = 0, + .description = gSootheBellItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MENTAL HERB"), + .itemId = ITEM_MENTAL_HERB, + .price = 100, + .holdEffect = HOLD_EFFECT_CURE_ATTRACT, + .holdEffectParam = 0, + .description = gMentalHerbItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CHOICE BAND"), + .itemId = ITEM_CHOICE_BAND, + .price = 100, + .holdEffect = HOLD_EFFECT_CHOICE_BAND, + .holdEffectParam = 0, + .description = gChoiceBandItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KING’S ROCK"), + .itemId = ITEM_KINGS_ROCK, + .price = 100, + .holdEffect = HOLD_EFFECT_FLINCH, + .holdEffectParam = 10, + .description = gKingsRockItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SILVERPOWDER"), + .itemId = ITEM_SILVER_POWDER, + .price = 100, + .holdEffect = HOLD_EFFECT_BUG_POWER, + .holdEffectParam = 10, + .description = gSilverPowderItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("AMULET COIN"), + .itemId = ITEM_AMULET_COIN, + .price = 100, + .holdEffect = HOLD_EFFECT_DOUBLE_PRIZE, + .holdEffectParam = 10, + .description = gAmuletCoinItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CLEANSE TAG"), + .itemId = ITEM_CLEANSE_TAG, + .price = 200, + .holdEffect = HOLD_EFFECT_REPEL, + .holdEffectParam = 0, + .description = gCleanseTagItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SOUL DEW"), + .itemId = ITEM_SOUL_DEW, + .price = 200, + .holdEffect = HOLD_EFFECT_SOUL_DEW, + .holdEffectParam = 0, + .description = gSoulDewItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DEEPSEATOOTH"), + .itemId = ITEM_DEEP_SEA_TOOTH, + .price = 200, + .holdEffect = HOLD_EFFECT_DEEP_SEA_TOOTH, + .holdEffectParam = 0, + .description = gDeepSeaToothItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DEEPSEASCALE"), + .itemId = ITEM_DEEP_SEA_SCALE, + .price = 200, + .holdEffect = HOLD_EFFECT_DEEP_SEA_SCALE, + .holdEffectParam = 0, + .description = gDeepSeaScaleItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SMOKE BALL"), + .itemId = ITEM_SMOKE_BALL, + .price = 200, + .holdEffect = HOLD_EFFECT_CAN_ALWAYS_RUN, + .holdEffectParam = 0, + .description = gSmokeBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("EVERSTONE"), + .itemId = ITEM_EVERSTONE, + .price = 200, + .holdEffect = HOLD_EFFECT_PREVENT_EVOLVE, + .holdEffectParam = 0, + .description = gEverstoneItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("FOCUS BAND"), + .itemId = ITEM_FOCUS_BAND, + .price = 200, + .holdEffect = HOLD_EFFECT_FOCUS_BAND, + .holdEffectParam = 10, + .description = gFocusBandItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LUCKY EGG"), + .itemId = ITEM_LUCKY_EGG, + .price = 200, + .holdEffect = HOLD_EFFECT_LUCKY_EGG, + .holdEffectParam = 0, + .description = gLuckyEggItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SCOPE LENS"), + .itemId = ITEM_SCOPE_LENS, + .price = 200, + .holdEffect = HOLD_EFFECT_SCOPE_LENS, + .holdEffectParam = 0, + .description = gScopeLensItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("METAL COAT"), + .itemId = ITEM_METAL_COAT, + .price = 100, + .holdEffect = HOLD_EFFECT_STEEL_POWER, + .holdEffectParam = 10, + .description = gMetalCoatItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LEFTOVERS"), + .itemId = ITEM_LEFTOVERS, + .price = 200, + .holdEffect = HOLD_EFFECT_LEFTOVERS, + .holdEffectParam = 10, + .description = gLeftoversItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DRAGON SCALE"), + .itemId = ITEM_DRAGON_SCALE, + .price = 2100, + .holdEffect = HOLD_EFFECT_DRAGON_SCALE, + .holdEffectParam = 10, + .description = gDragonScaleItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LIGHT BALL"), + .itemId = ITEM_LIGHT_BALL, + .price = 100, + .holdEffect = HOLD_EFFECT_LIGHT_BALL, + .holdEffectParam = 0, + .description = gLightBallItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SOFT SAND"), + .itemId = ITEM_SOFT_SAND, + .price = 100, + .holdEffect = HOLD_EFFECT_GROUND_POWER, + .holdEffectParam = 10, + .description = gSoftSandItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HARD STONE"), + .itemId = ITEM_HARD_STONE, + .price = 100, + .holdEffect = HOLD_EFFECT_ROCK_POWER, + .holdEffectParam = 10, + .description = gHardStoneItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MIRACLE SEED"), + .itemId = ITEM_MIRACLE_SEED, + .price = 100, + .holdEffect = HOLD_EFFECT_GRASS_POWER, + .holdEffectParam = 10, + .description = gMiracleSeedItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLACKGLASSES"), + .itemId = ITEM_BLACK_GLASSES, + .price = 100, + .holdEffect = HOLD_EFFECT_DARK_POWER, + .holdEffectParam = 10, + .description = gBlackGlassesItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLACK BELT"), + .itemId = ITEM_BLACK_BELT, + .price = 100, + .holdEffect = HOLD_EFFECT_FIGHTING_POWER, + .holdEffectParam = 10, + .description = gBlackBeltItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MAGNET"), + .itemId = ITEM_MAGNET, + .price = 100, + .holdEffect = HOLD_EFFECT_ELECTRIC_POWER, + .holdEffectParam = 10, + .description = gMagnetItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MYSTIC WATER"), + .itemId = ITEM_MYSTIC_WATER, + .price = 100, + .holdEffect = HOLD_EFFECT_WATER_POWER, + .holdEffectParam = 10, + .description = gMysticWaterItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SHARP BEAK"), + .itemId = ITEM_SHARP_BEAK, + .price = 100, + .holdEffect = HOLD_EFFECT_FLYING_POWER, + .holdEffectParam = 10, + .description = gSharpBeakItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("POISON BARB"), + .itemId = ITEM_POISON_BARB, + .price = 100, + .holdEffect = HOLD_EFFECT_POISON_POWER, + .holdEffectParam = 10, + .description = gPoisonBarbItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("NEVERMELTICE"), + .itemId = ITEM_NEVER_MELT_ICE, + .price = 100, + .holdEffect = HOLD_EFFECT_ICE_POWER, + .holdEffectParam = 10, + .description = gNeverMeltIceItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SPELL TAG"), + .itemId = ITEM_SPELL_TAG, + .price = 100, + .holdEffect = HOLD_EFFECT_GHOST_POWER, + .holdEffectParam = 10, + .description = gSpellTagItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TWISTEDSPOON"), + .itemId = ITEM_TWISTED_SPOON, + .price = 100, + .holdEffect = HOLD_EFFECT_PSYCHIC_POWER, + .holdEffectParam = 10, + .description = gTwistedSpoonItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CHARCOAL"), + .itemId = ITEM_CHARCOAL, + .price = 9800, + .holdEffect = HOLD_EFFECT_FIRE_POWER, + .holdEffectParam = 10, + .description = gCharcoalItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DRAGON FANG"), + .itemId = ITEM_DRAGON_FANG, + .price = 100, + .holdEffect = HOLD_EFFECT_DRAGON_POWER, + .holdEffectParam = 10, + .description = gDragonFangItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SILK SCARF"), + .itemId = ITEM_SILK_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NORMAL_POWER, + .holdEffectParam = 10, + .description = gSilkScarfItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("UP-GRADE"), + .itemId = ITEM_UP_GRADE, + .price = 2100, + .holdEffect = HOLD_EFFECT_UP_GRADE, + .holdEffectParam = 0, + .description = gUpGradeItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SHELL BELL"), + .itemId = ITEM_SHELL_BELL, + .price = 200, + .holdEffect = HOLD_EFFECT_SHELL_BELL, + .holdEffectParam = 8, + .description = gShellBellItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SEA INCENSE"), + .itemId = ITEM_SEA_INCENSE, + .price = 9600, + .holdEffect = HOLD_EFFECT_WATER_POWER, + .holdEffectParam = 5, + .description = gSeaIncenseItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LAX INCENSE"), + .itemId = ITEM_LAX_INCENSE, + .price = 9600, + .holdEffect = HOLD_EFFECT_EVASION_UP, + .holdEffectParam = 5, + .description = gLaxIncenseItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LUCKY PUNCH"), + .itemId = ITEM_LUCKY_PUNCH, + .price = 10, + .holdEffect = HOLD_EFFECT_LUCKY_PUNCH, + .holdEffectParam = 0, + .description = gLuckyPunchItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("METAL POWDER"), + .itemId = ITEM_METAL_POWDER, + .price = 10, + .holdEffect = HOLD_EFFECT_METAL_POWDER, + .holdEffectParam = 0, + .description = gMetalPowderItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("THICK CLUB"), + .itemId = ITEM_THICK_CLUB, + .price = 500, + .holdEffect = HOLD_EFFECT_THICK_CLUB, + .holdEffectParam = 0, + .description = gThickClubItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("STICK"), + .itemId = ITEM_STICK, + .price = 200, + .holdEffect = HOLD_EFFECT_STICK, + .holdEffectParam = 0, + .description = gStickItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RED SCARF"), + .itemId = ITEM_RED_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRedScarfItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLUE SCARF"), + .itemId = ITEM_BLUE_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBlueScarfItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PINK SCARF"), + .itemId = ITEM_PINK_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gPinkScarfItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GREEN SCARF"), + .itemId = ITEM_GREEN_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gGreenScarfItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("YELLOW SCARF"), + .itemId = ITEM_YELLOW_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gYellowScarfItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + +//Key items + + { + .name = _("MACH BIKE"), + .itemId = ITEM_MACH_BIKE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gMachBikeItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Bike, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("COIN CASE"), + .itemId = ITEM_COIN_CASE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gCoinCaseItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CoinCase, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ITEMFINDER"), + .itemId = ITEM_ITEMFINDER, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemfinderItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Itemfinder, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("OLD ROD"), + .itemId = ITEM_OLD_ROD, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gOldRodItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Rod, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GOOD ROD"), + .itemId = ITEM_GOOD_ROD, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gGoodRodItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Rod, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 1, + }, + { + .name = _("SUPER ROD"), + .itemId = ITEM_SUPER_ROD, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gSuperRodItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Rod, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 2, + }, + { + .name = _("S.S. TICKET"), + .itemId = ITEM_SS_TICKET, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gSSTicketItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CONTEST PASS"), + .itemId = ITEM_CONTEST_PASS, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gContestPassItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WAILMER PAIL"), + .itemId = ITEM_WAILMER_PAIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gWailmerPailItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_WailmerPail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DEVON GOODS"), + .itemId = ITEM_DEVON_GOODS, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDevonGoodsItemDescription, + .importance = 2, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SOOT SACK"), + .itemId = ITEM_SOOT_SACK, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gSootSackItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BASEMENT KEY"), + .itemId = ITEM_BASEMENT_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBasementKeyItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ACRO BIKE"), + .itemId = ITEM_ACRO_BIKE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gAcroBikeItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Bike, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 1, + }, + { + .name = _("{POKEBLOCK} CASE"), + .itemId = ITEM_POKEBLOCK_CASE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gPokeblockCaseItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 3, + .fieldUseFunc = ItemUseOutOfBattle_PokeblockCase, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LETTER"), + .itemId = ITEM_LETTER, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gLetterItemDescription, + .importance = 2, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("EON TICKET"), + .itemId = ITEM_EON_TICKET, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gEonTicketItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 1, + }, + { + .name = _("RED ORB"), + .itemId = ITEM_RED_ORB, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRedOrbItemDescription, + .importance = 2, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLUE ORB"), + .itemId = ITEM_BLUE_ORB, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBlueOrbItemDescription, + .importance = 2, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SCANNER"), + .itemId = ITEM_SCANNER, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gScannerItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GO-GOGGLES"), + .itemId = ITEM_GO_GOGGLES, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gGoGogglesItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("METEORITE"), + .itemId = ITEM_METEORITE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gMeteoriteItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RM. 1 KEY"), + .itemId = ITEM_ROOM_1_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRoom1KeyItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RM. 2 KEY"), + .itemId = ITEM_ROOM_2_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRoom2KeyItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RM. 4 KEY"), + .itemId = ITEM_ROOM_4_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRoom4KeyItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RM. 6 KEY"), + .itemId = ITEM_ROOM_6_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRoom6KeyItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("STORAGE KEY"), + .itemId = ITEM_STORAGE_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gStorageKeyItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ROOT FOSSIL"), + .itemId = ITEM_ROOT_FOSSIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRootFossilItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CLAW FOSSIL"), + .itemId = ITEM_CLAW_FOSSIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gClawFossilItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DEVON SCOPE"), + .itemId = ITEM_DEVON_SCOPE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDevonScopeItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + +//TMs/HMs + + { + .name = _("TM01"), + .itemId = ITEM_TM01_FOCUS_PUNCH, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM01ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM02"), + .itemId = ITEM_TM02_DRAGON_CLAW, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM02ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM03"), + .itemId = ITEM_TM03_WATER_PULSE, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM03ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM04"), + .itemId = ITEM_TM04_CALM_MIND, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM04ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM05"), + .itemId = ITEM_TM05_ROAR, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM05ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM06"), + .itemId = ITEM_TM06_TOXIC, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM06ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM07"), + .itemId = ITEM_TM07_HAIL, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM07ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM08"), + .itemId = ITEM_TM08_BULK_UP, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM08ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM09"), + .itemId = ITEM_TM09_BULLET_SEED, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM09ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM10"), + .itemId = ITEM_TM10_HIDDEN_POWER, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM10ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM11"), + .itemId = ITEM_TM11_SUNNY_DAY, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM11ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM12"), + .itemId = ITEM_TM12_TAUNT, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM12ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM13"), + .itemId = ITEM_TM13_ICE_BEAM, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM13ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM14"), + .itemId = ITEM_TM14_BLIZZARD, + .price = 5500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM14ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM15"), + .itemId = ITEM_TM15_HYPER_BEAM, + .price = 7500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM15ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM16"), + .itemId = ITEM_TM16_LIGHT_SCREEN, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM16ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM17"), + .itemId = ITEM_TM17_PROTECT, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM17ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM18"), + .itemId = ITEM_TM18_RAIN_DANCE, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM18ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM19"), + .itemId = ITEM_TM19_GIGA_DRAIN, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM19ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM20"), + .itemId = ITEM_TM20_SAFEGUARD, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM20ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM21"), + .itemId = ITEM_TM21_FRUSTRATION, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM21ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM22"), + .itemId = ITEM_TM22_SOLARBEAM, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM22ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM23"), + .itemId = ITEM_TM23_IRON_TAIL, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM23ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM24"), + .itemId = ITEM_TM24_THUNDERBOLT, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM24ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM25"), + .itemId = ITEM_TM25_THUNDER, + .price = 5500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM25ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM26"), + .itemId = ITEM_TM26_EARTHQUAKE, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM26ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM27"), + .itemId = ITEM_TM27_RETURN, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM27ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM28"), + .itemId = ITEM_TM28_DIG, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM28ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM29"), + .itemId = ITEM_TM29_PSYCHIC, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM29ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM30"), + .itemId = ITEM_TM30_SHADOW_BALL, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM30ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM31"), + .itemId = ITEM_TM31_BRICK_BREAK, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM31ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM32"), + .itemId = ITEM_TM32_DOUBLE_TEAM, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM32ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM33"), + .itemId = ITEM_TM33_REFLECT, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM33ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM34"), + .itemId = ITEM_TM34_SHOCK_WAVE, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM34ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM35"), + .itemId = ITEM_TM35_FLAMETHROWER, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM35ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM36"), + .itemId = ITEM_TM36_SLUDGE_BOMB, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM36ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM37"), + .itemId = ITEM_TM37_SANDSTORM, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM37ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM38"), + .itemId = ITEM_TM38_FIRE_BLAST, + .price = 5500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM38ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM39"), + .itemId = ITEM_TM39_ROCK_TOMB, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM39ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM40"), + .itemId = ITEM_TM40_AERIAL_ACE, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM40ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM41"), + .itemId = ITEM_TM41_TORMENT, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM41ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM42"), + .itemId = ITEM_TM42_FACADE, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM42ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM43"), + .itemId = ITEM_TM43_SECRET_POWER, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM43ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM44"), + .itemId = ITEM_TM44_REST, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM44ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM45"), + .itemId = ITEM_TM45_ATTRACT, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM45ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM46"), + .itemId = ITEM_TM46_THIEF, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM46ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM47"), + .itemId = ITEM_TM47_STEEL_WING, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM47ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM48"), + .itemId = ITEM_TM48_SKILL_SWAP, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM48ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM49"), + .itemId = ITEM_TM49_SNATCH, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM49ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM50"), + .itemId = ITEM_TM50_OVERHEAT, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTM50ItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM01"), + .itemId = ITEM_HM01_CUT, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHM01ItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM02"), + .itemId = ITEM_HM02_FLY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHM02ItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM03"), + .itemId = ITEM_HM03_SURF, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHM03ItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM04"), + .itemId = ITEM_HM04_STRENGTH, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHM04ItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM05"), + .itemId = ITEM_HM05_FLASH, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHM05ItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM06"), + .itemId = ITEM_HM06_ROCK_SMASH, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHM06ItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM07"), + .itemId = ITEM_HM07_WATERFALL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHM07ItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM08"), + .itemId = ITEM_HM08_DIVE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHM08ItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDummyItemDescription, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + +//FireRed/LeafGreen key items + + { + .name = _("OAK’S PARCEL"), + .itemId = ITEM_OAKS_PARCEL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gOaksParcelItemDescription, + .importance = 2, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("POKé FLUTE"), + .itemId = ITEM_POKE_FLUTE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gPokeFluteItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SECRET KEY"), + .itemId = ITEM_SECRET_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gSecretKeyItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BIKE VOUCHER"), + .itemId = ITEM_BIKE_VOUCHER, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBikeVoucherItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GOLD TEETH"), + .itemId = ITEM_GOLD_TEETH, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gGoldTeethItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("OLD AMBER"), + .itemId = ITEM_OLD_AMBER, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gOldAmberItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CARD KEY"), + .itemId = ITEM_CARD_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gCardKeyItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LIFT KEY"), + .itemId = ITEM_LIFT_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gLiftKeyItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HELIX FOSSIL"), + .itemId = ITEM_HELIX_FOSSIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gHelixFossilItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DOME FOSSIL"), + .itemId = ITEM_DOME_FOSSIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gDomeFossilItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SILPH SCOPE"), + .itemId = ITEM_SILPH_SCOPE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gSilphScopeItemDescription, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BICYCLE"), + .itemId = ITEM_BICYCLE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBicycleItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TOWN MAP"), + .itemId = ITEM_TOWN_MAP, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTownMapItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("VS SEEKER"), + .itemId = ITEM_VS_SEEKER, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gVSSeekerItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("FAME CHECKER"), + .itemId = ITEM_FAME_CHECKER, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gFameCheckerItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM CASE"), + .itemId = ITEM_TM_CASE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTMCaseItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BERRY POUCH"), + .itemId = ITEM_BERRY_POUCH, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gBerryPouchItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TEACHY TV"), + .itemId = ITEM_TEACHY_TV, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTeachyTVItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TRI-PASS"), + .itemId = ITEM_TRI_PASS, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTriPassItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RAINBOW PASS"), + .itemId = ITEM_RAINBOW_PASS, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRainbowPassItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TEA"), + .itemId = ITEM_TEA, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gTeaItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MYSTICTICKET"), + .itemId = ITEM_MYSTIC_TICKET, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gMysticTicketItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("AURORATICKET"), + .itemId = ITEM_AURORA_TICKET, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gAuroraTicketItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("POWDER JAR"), + .itemId = ITEM_POWDER_JAR, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gPowderJarItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_PowderJar, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RUBY"), + .itemId = ITEM_RUBY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gRubyItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SAPPHIRE"), + .itemId = ITEM_SAPPHIRE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gSapphireItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + +//Emerald-specific key items + + { + .name = _("MAGMA EMBLEM"), + .itemId = ITEM_MAGMA_EMBLEM, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gMagmaEmblemItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("OLD SEA MAP"), + .itemId = ITEM_OLD_SEA_MAP, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gOldSeaMapItemDescription, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, +}; diff --git a/src/data/pokedex_orders.h b/src/data/pokedex_orders.h new file mode 100644 index 000000000..61fbd289c --- /dev/null +++ b/src/data/pokedex_orders.h @@ -0,0 +1,1199 @@ +#ifndef GUARD_DATA_POKEDEX_ORDERS +#define GUARD_DATA_POKEDEX_ORDERS + +const u16 gPokedexOrder_Alphabetical[] = +{ + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 63, // Abra + 359, // Absol + 142, // Aerodactyl + 306, // Aggron + 190, // Aipom + 65, // Alakazam + 334, // Altaria + 181, // Ampharos + 347, // Anorith + 24, // Arbok + 59, // Arcanine + 168, // Ariados + 348, // Armaldo + 304, // Aron + 144, // Articuno + 184, // Azumarill + 298, // Azurill + 371, // Bagon + 343, // Baltoy + 354, // Banette + 339, // Barboach + 153, // Bayleef + 267, // Beautifly + 15, // Beedrill + 374, // Beldum + 182, // Bellossom + 69, // Bellsprout + 9, // Blastoise + 257, // Blaziken + 242, // Blissey + 286, // Breloom + 1, // Bulbasaur + 12, // Butterfree + 331, // Cacnea + 332, // Cacturne + 323, // Camerupt + 318, // Carvanha + 268, // Cascoon + 351, // Castform + 10, // Caterpie + 251, // Celebi + 113, // Chansey + 6, // Charizard + 4, // Charmander + 5, // Charmeleon + 152, // Chikorita + 358, // Chimecho + 170, // Chinchou + 366, // Clamperl + 344, // Claydol + 36, // Clefable + 35, // Clefairy + 173, // Cleffa + 91, // Cloyster + 256, // Combusken + 341, // Corphish + 222, // Corsola + 346, // Cradily + 342, // Crawdaunt + 169, // Crobat + 159, // Croconaw + 104, // Cubone + 155, // Cyndaquil + 301, // Delcatty + 225, // Delibird + 386, // Deoxys + 87, // Dewgong + 50, // Diglett + 132, // Ditto + 85, // Dodrio + 84, // Doduo + 232, // Donphan + 148, // Dragonair + 149, // Dragonite + 147, // Dratini + 96, // Drowzee + 51, // Dugtrio + 206, // Dunsparce + 356, // Dusclops + 355, // Duskull + 269, // Dustox + 133, // Eevee + 23, // Ekans + 125, // Electabuzz + 309, // Electrike + 101, // Electrode + 239, // Elekid + 244, // Entei + 196, // Espeon + 102, // Exeggcute + 103, // Exeggutor + 295, // Exploud + 83, // Farfetch'd + 22, // Fearow + 349, // Feebas + 160, // Feraligatr + 180, // Flaaffy + 136, // Flareon + 330, // Flygon + 205, // Forretress + 162, // Furret + 282, // Gardevoir + 92, // Gastly + 94, // Gengar + 74, // Geodude + 203, // Girafarig + 362, // Glalie + 207, // Gligar + 44, // Gloom + 42, // Golbat + 118, // Goldeen + 55, // Golduck + 76, // Golem + 368, // Gorebyss + 210, // Granbull + 75, // Graveler + 88, // Grimer + 383, // Groudon + 253, // Grovyle + 58, // Growlithe + 326, // Grumpig + 316, // Gulpin + 130, // Gyarados + 297, // Hariyama + 93, // Haunter + 214, // Heracross + 107, // Hitmonchan + 106, // Hitmonlee + 237, // Hitmontop + 250, // Ho-Oh + 163, // Hoothoot + 187, // Hoppip + 116, // Horsea + 229, // Houndoom + 228, // Houndour + 367, // Huntail + 97, // Hypno + 174, // Igglybuff + 314, // Illumise + 2, // Ivysaur + 39, // Jigglypuff + 385, // Jirachi + 135, // Jolteon + 189, // Jumpluff + 124, // Jynx + 140, // Kabuto + 141, // Kabutops + 64, // Kadabra + 14, // Kakuna + 115, // Kangaskhan + 352, // Kecleon + 230, // Kingdra + 99, // Kingler + 281, // Kirlia + 109, // Koffing + 98, // Krabby + 382, // Kyogre + 305, // Lairon + 171, // Lanturn + 131, // Lapras + 246, // Larvitar + 380, // Latias + 381, // Latios + 166, // Ledian + 165, // Ledyba + 108, // Lickitung + 345, // Lileep + 264, // Linoone + 271, // Lombre + 270, // Lotad + 294, // Loudred + 272, // Ludicolo + 249, // Lugia + 337, // Lunatone + 370, // Luvdisc + 68, // Machamp + 67, // Machoke + 66, // Machop + 240, // Magby + 219, // Magcargo + 129, // Magikarp + 126, // Magmar + 81, // Magnemite + 82, // Magneton + 296, // Makuhita + 310, // Manectric + 56, // Mankey + 226, // Mantine + 179, // Mareep + 183, // Marill + 105, // Marowak + 259, // Marshtomp + 284, // Masquerain + 303, // Mawile + 308, // Medicham + 307, // Meditite + 154, // Meganium + 52, // Meowth + 376, // Metagross + 375, // Metang + 11, // Metapod + 151, // Mew + 150, // Mewtwo + 262, // Mightyena + 350, // Milotic + 241, // Miltank + 312, // Minun + 200, // Misdreavus + 146, // Moltres + 122, // Mr. mime + 258, // Mudkip + 89, // Muk + 198, // Murkrow + 177, // Natu + 34, // Nidoking + 31, // Nidoqueen + 29, // Nidoran? + 32, // Nidoran? + 30, // Nidorina + 33, // Nidorino + 290, // Nincada + 38, // Ninetales + 291, // Ninjask + 164, // Noctowl + 299, // Nosepass + 322, // Numel + 274, // Nuzleaf + 224, // Octillery + 43, // Oddish + 138, // Omanyte + 139, // Omastar + 95, // Onix + 46, // Paras + 47, // Parasect + 279, // Pelipper + 53, // Persian + 231, // Phanpy + 172, // Pichu + 18, // Pidgeot + 17, // Pidgeotto + 16, // Pidgey + 25, // Pikachu + 221, // Piloswine + 204, // Pineco + 127, // Pinsir + 311, // Plusle + 186, // Politoed + 60, // Poliwag + 61, // Poliwhirl + 62, // Poliwrath + 77, // Ponyta + 261, // Poochyena + 137, // Porygon + 233, // Porygon2 + 57, // Primeape + 54, // Psyduck + 247, // Pupitar + 195, // Quagsire + 156, // Quilava + 211, // Qwilfish + 26, // Raichu + 243, // Raikou + 280, // Ralts + 78, // Rapidash + 20, // Raticate + 19, // Rattata + 384, // Rayquaza + 378, // Regice + 377, // Regirock + 379, // Registeel + 369, // Relicanth + 223, // Remoraid + 112, // Rhydon + 111, // Rhyhorn + 315, // Roselia + 302, // Sableye + 373, // Salamence + 27, // Sandshrew + 28, // Sandslash + 254, // Sceptile + 212, // Scizor + 123, // Scyther + 117, // Seadra + 119, // Seaking + 364, // Sealeo + 273, // Seedot + 86, // Seel + 161, // Sentret + 336, // Seviper + 319, // Sharpedo + 292, // Shedinja + 372, // Shelgon + 90, // Shellder + 275, // Shiftry + 285, // Shroomish + 213, // Shuckle + 353, // Shuppet + 266, // Silcoon + 227, // Skarmory + 188, // Skiploom + 300, // Skitty + 289, // Slaking + 287, // Slakoth + 80, // Slowbro + 199, // Slowking + 79, // Slowpoke + 218, // Slugma + 235, // Smeargle + 238, // Smoochum + 215, // Sneasel + 143, // Snorlax + 361, // Snorunt + 209, // Snubbull + 338, // Solrock + 21, // Spearow + 363, // Spheal + 167, // Spinarak + 327, // Spinda + 325, // Spoink + 7, // Squirtle + 234, // Stantler + 121, // Starmie + 120, // Staryu + 208, // Steelix + 185, // Sudowoodo + 245, // Suicune + 192, // Sunflora + 191, // Sunkern + 283, // Surskit + 333, // Swablu + 317, // Swalot + 260, // Swampert + 277, // Swellow + 220, // Swinub + 276, // Taillow + 114, // Tangela + 128, // Tauros + 216, // Teddiursa + 72, // Tentacool + 73, // Tentacruel + 175, // Togepi + 176, // Togetic + 255, // Torchic + 324, // Torkoal + 158, // Totodile + 328, // Trapinch + 252, // Treecko + 357, // Tropius + 157, // Typhlosion + 248, // Tyranitar + 236, // Tyrogue + 197, // Umbreon + 201, // Unown + 217, // Ursaring + 134, // Vaporeon + 49, // Venomoth + 48, // Venonat + 3, // Venusaur + 329, // Vibrava + 71, // Victreebel + 288, // Vigoroth + 45, // Vileplume + 313, // Volbeat + 100, // Voltorb + 37, // Vulpix + 320, // Wailmer + 321, // Wailord + 365, // Walrein + 8, // Wartortle + 13, // Weedle + 70, // Weepinbell + 110, // Weezing + 340, // Whiscash + 293, // Whismur + 40, // Wigglytuff + 278, // Wingull + 202, // Wobbuffet + 194, // Wooper + 265, // Wurmple + 360, // Wynaut + 178, // Xatu + 193, // Yanma + 335, // Zangoose + 145, // Zapdos + 263, // Zigzagoon + 41, // Zubat +}; + +const u16 gPokedexOrder_Weight[] = +{ + 92, // Gastly + 93, // Haunter + 187, // Hoppip + 50, // Diglett + 351, // Castform + 109, // Koffing + 174, // Igglybuff + 200, // Misdreavus + 358, // Chimecho + 188, // Skiploom + 385, // Jirachi + 333, // Swablu + 292, // Shedinja + 175, // Togepi + 283, // Surskit + 16, // Pidgey + 191, // Sunkern + 339, // Barboach + 172, // Pichu + 298, // Azurill + 315, // Roselia + 177, // Natu + 21, // Spearow + 198, // Murkrow + 353, // Shuppet + 276, // Taillow + 102, // Exeggcute + 255, // Torchic + 270, // Lotad + 10, // Caterpie + 189, // Jumpluff + 173, // Cleffa + 13, // Weedle + 176, // Togetic + 147, // Dratini + 19, // Rattata + 284, // Masquerain + 265, // Wurmple + 211, // Qwilfish + 151, // Mew + 90, // Shellder + 273, // Seedot + 132, // Ditto + 69, // Bellsprout + 311, // Plusle + 52, // Meowth + 312, // Minun + 285, // Shroomish + 251, // Celebi + 222, // Corsola + 252, // Treecko + 327, // Spinda + 201, // Unown + 46, // Paras + 43, // Oddish + 39, // Jigglypuff + 290, // Nincada + 182, // Bellossom + 81, // Magnemite + 25, // Pikachu + 238, // Smoochum + 161, // Sentret + 70, // Weepinbell + 152, // Chikorita + 220, // Swinub + 133, // Eevee + 98, // Krabby + 104, // Cubone + 280, // Ralts + 1, // Bulbasaur + 23, // Ekans + 29, // Nidoran? + 204, // Pineco + 349, // Feebas + 138, // Omanyte + 41, // Zubat + 35, // Clefairy + 258, // Mudkip + 209, // Snubbull + 179, // Mareep + 155, // Cyndaquil + 116, // Horsea + 4, // Charmander + 192, // Sunflora + 183, // Marill + 194, // Wooper + 167, // Spinarak + 44, // Gloom + 370, // Luvdisc + 216, // Teddiursa + 32, // Nidoran? + 7, // Squirtle + 278, // Wingull + 158, // Totodile + 110, // Weezing + 37, // Vulpix + 11, // Metapod + 266, // Silcoon + 129, // Magikarp + 14, // Kakuna + 316, // Gulpin + 100, // Voltorb + 165, // Ledyba + 228, // Houndour + 300, // Skitty + 302, // Sableye + 307, // Meditite + 341, // Corphish + 190, // Aipom + 268, // Cascoon + 303, // Mawile + 140, // Kabuto + 40, // Wigglytuff + 27, // Sandshrew + 223, // Remoraid + 291, // Ninjask + 170, // Chinchou + 60, // Poliwag + 347, // Anorith + 49, // Venomoth + 354, // Banette + 2, // Ivysaur + 180, // Flaaffy + 261, // Poochyena + 360, // Wynaut + 206, // Dunsparce + 178, // Xatu + 355, // Duskull + 83, // Farfetch'd + 328, // Trapinch + 118, // Goldeen + 309, // Electrike + 329, // Vibrava + 71, // Victreebel + 153, // Bayleef + 225, // Delibird + 293, // Whismur + 148, // Dragonair + 361, // Snorunt + 263, // Zigzagoon + 314, // Illumise + 313, // Volbeat + 20, // Raticate + 45, // Vileplume + 156, // Quilava + 5, // Charmeleon + 58, // Growlithe + 256, // Combusken + 66, // Machop + 63, // Abra + 33, // Nidorino + 54, // Psyduck + 277, // Swellow + 38, // Ninetales + 30, // Nidorina + 61, // Poliwhirl + 74, // Geodude + 281, // Kirlia + 213, // Shuckle + 334, // Altaria + 318, // Carvanha + 236, // Tyrogue + 163, // Hoothoot + 240, // Magby + 343, // Baltoy + 253, // Grovyle + 352, // Kecleon + 171, // Lanturn + 8, // Wartortle + 368, // Gorebyss + 369, // Relicanth + 239, // Elekid + 340, // Whiscash + 345, // Lileep + 322, // Numel + 287, // Slakoth + 135, // Jolteon + 159, // Croconaw + 136, // Flareon + 117, // Seadra + 196, // Espeon + 367, // Huntail + 197, // Umbreon + 259, // Marshtomp + 274, // Nuzleaf + 215, // Sneasel + 56, // Mankey + 279, // Pelipper + 267, // Beautifly + 224, // Octillery + 184, // Azumarill + 202, // Wobbuffet + 134, // Vaporeon + 28, // Sandslash + 47, // Parasect + 15, // Beedrill + 89, // Muk + 17, // Pidgeotto + 88, // Grimer + 26, // Raichu + 77, // Ponyta + 125, // Electabuzz + 48, // Venonat + 325, // Spoink + 356, // Dusclops + 308, // Medicham + 269, // Dustox + 53, // Persian + 12, // Butterfree + 57, // Primeape + 96, // Drowzee + 162, // Furret + 233, // Porygon2 + 271, // Lombre + 264, // Linoone + 301, // Delcatty + 342, // Crawdaunt + 51, // Dugtrio + 168, // Ariados + 231, // Phanpy + 186, // Politoed + 120, // Staryu + 113, // Chansey + 139, // Omastar + 114, // Tangela + 218, // Slugma + 229, // Houndoom + 166, // Ledian + 79, // Slowpoke + 137, // Porygon + 262, // Mightyena + 193, // Yanma + 22, // Fearow + 185, // Sudowoodo + 119, // Seaking + 286, // Breloom + 84, // Doduo + 18, // Pidgeot + 363, // Spheal + 36, // Clefable + 380, // Latias + 310, // Manectric + 335, // Zangoose + 141, // Kabutops + 94, // Gengar + 294, // Loudred + 124, // Jynx + 164, // Noctowl + 203, // Girafarig + 371, // Bagon + 126, // Magmar + 105, // Marowak + 72, // Tentacool + 288, // Vigoroth + 242, // Blissey + 359, // Absol + 65, // Alakazam + 237, // Hitmontop + 282, // Gardevoir + 210, // Granbull + 106, // Hitmonlee + 107, // Hitmonchan + 227, // Skarmory + 331, // Cacnea + 257, // Blaziken + 254, // Sceptile + 336, // Seviper + 366, // Clamperl + 145, // Zapdos + 214, // Heracross + 62, // Poliwrath + 122, // Mr. mime + 127, // Pinsir + 272, // Ludicolo + 73, // Tentacruel + 42, // Golbat + 219, // Magcargo + 144, // Articuno + 221, // Piloswine + 123, // Scyther + 64, // Kadabra + 235, // Smeargle + 142, // Aerodactyl + 275, // Shiftry + 99, // Kingler + 31, // Nidoqueen + 82, // Magneton + 304, // Aron + 381, // Latios + 146, // Moltres + 346, // Cradily + 386, // Deoxys + 181, // Ampharos + 34, // Nidoking + 207, // Gligar + 24, // Arbok + 108, // Lickitung + 101, // Electrode + 348, // Armaldo + 67, // Machoke + 234, // Stantler + 326, // Grumpig + 246, // Larvitar + 169, // Crobat + 195, // Quagsire + 241, // Miltank + 97, // Hypno + 55, // Golduck + 332, // Cacturne + 80, // Slowbro + 157, // Typhlosion + 199, // Slowking + 115, // Kangaskhan + 121, // Starmie + 317, // Swalot + 324, // Torkoal + 260, // Swampert + 330, // Flygon + 295, // Exploud + 85, // Dodrio + 9, // Blastoise + 296, // Makuhita + 364, // Sealeo + 128, // Tauros + 319, // Sharpedo + 160, // Feraligatr + 86, // Seel + 6, // Charizard + 78, // Rapidash + 374, // Beldum + 299, // Nosepass + 3, // Venusaur + 357, // Tropius + 154, // Meganium + 373, // Salamence + 75, // Graveler + 344, // Claydol + 372, // Shelgon + 111, // Rhyhorn + 212, // Scizor + 87, // Dewgong + 112, // Rhydon + 232, // Donphan + 103, // Exeggutor + 305, // Lairon + 150, // Mewtwo + 217, // Ursaring + 205, // Forretress + 68, // Machamp + 320, // Wailmer + 289, // Slaking + 91, // Cloyster + 365, // Walrein + 247, // Pupitar + 230, // Kingdra + 338, // Solrock + 59, // Arcanine + 350, // Milotic + 337, // Lunatone + 378, // Regice + 243, // Raikou + 245, // Suicune + 244, // Entei + 250, // Ho-Oh + 248, // Tyranitar + 375, // Metang + 379, // Registeel + 384, // Rayquaza + 95, // Onix + 149, // Dragonite + 249, // Lugia + 131, // Lapras + 323, // Camerupt + 226, // Mantine + 377, // Regirock + 130, // Gyarados + 297, // Hariyama + 362, // Glalie + 76, // Golem + 382, // Kyogre + 306, // Aggron + 321, // Wailord + 208, // Steelix + 143, // Snorlax + 376, // Metagross + 383, // Groudon +}; + +const u16 gPokedexOrder_Height[] = +{ + 50, // Diglett + 298, // Azurill + 177, // Natu + 13, // Weedle + 172, // Pichu + 173, // Cleffa + 175, // Togepi + 351, // Castform + 174, // Igglybuff + 10, // Caterpie + 276, // Taillow + 132, // Ditto + 133, // Eevee + 315, // Roselia + 21, // Spearow + 16, // Pidgey + 191, // Sunkern + 90, // Shellder + 19, // Rattata + 81, // Magnemite + 46, // Paras + 265, // Wurmple + 385, // Jirachi + 104, // Cubone + 258, // Mudkip + 194, // Wooper + 116, // Horsea + 52, // Meowth + 29, // Nidoran? + 220, // Swinub + 151, // Mew + 333, // Swablu + 304, // Aron + 311, // Plusle + 312, // Minun + 102, // Exeggcute + 25, // Pikachu + 182, // Bellossom + 316, // Gulpin + 263, // Zigzagoon + 285, // Shroomish + 138, // Omanyte + 331, // Cacnea + 98, // Krabby + 280, // Ralts + 187, // Hoppip + 255, // Torchic + 366, // Clamperl + 74, // Geodude + 183, // Marill + 339, // Barboach + 238, // Smoochum + 100, // Voltorb + 290, // Nincada + 302, // Sableye + 198, // Murkrow + 211, // Qwilfish + 7, // Squirtle + 252, // Treecko + 343, // Baltoy + 43, // Oddish + 270, // Lotad + 39, // Jigglypuff + 283, // Surskit + 155, // Cyndaquil + 140, // Kabuto + 264, // Linoone + 324, // Torkoal + 32, // Nidoran? + 167, // Spinarak + 56, // Mankey + 273, // Seedot + 261, // Poochyena + 231, // Phanpy + 201, // Unown + 170, // Chinchou + 233, // Porygon2 + 60, // Poliwag + 371, // Bagon + 349, // Feebas + 353, // Shuppet + 158, // Totodile + 251, // Celebi + 360, // Wynaut + 27, // Sandshrew + 358, // Chimecho + 370, // Luvdisc + 228, // Houndour + 266, // Silcoon + 309, // Electrike + 4, // Charmander + 307, // Meditite + 278, // Wingull + 223, // Remoraid + 341, // Corphish + 222, // Corsola + 314, // Illumise + 209, // Snubbull + 37, // Vulpix + 246, // Larvitar + 374, // Beldum + 293, // Whismur + 204, // Pineco + 239, // Elekid + 35, // Clefairy + 213, // Shuckle + 216, // Teddiursa + 14, // Kakuna + 300, // Skitty + 176, // Togetic + 118, // Goldeen + 303, // Mawile + 179, // Mareep + 188, // Skiploom + 109, // Koffing + 51, // Dugtrio + 268, // Cascoon + 322, // Numel + 347, // Anorith + 313, // Volbeat + 163, // Hoothoot + 328, // Trapinch + 325, // Spoink + 11, // Metapod + 69, // Bellsprout + 361, // Snorunt + 20, // Raticate + 259, // Marshtomp + 277, // Swellow + 240, // Magby + 58, // Growlithe + 200, // Misdreavus + 1, // Bulbasaur + 236, // Tyrogue + 218, // Slugma + 287, // Slakoth + 281, // Kirlia + 190, // Aipom + 135, // Jolteon + 30, // Nidorina + 184, // Azumarill + 292, // Shedinja + 66, // Machop + 291, // Ninjask + 284, // Masquerain + 355, // Duskull + 192, // Sunflora + 189, // Jumpluff + 120, // Staryu + 180, // Flaaffy + 363, // Spheal + 54, // Psyduck + 219, // Magcargo + 83, // Farfetch'd + 41, // Zubat + 137, // Porygon + 161, // Sentret + 318, // Carvanha + 44, // Gloom + 26, // Raichu + 129, // Magikarp + 215, // Sneasel + 305, // Lairon + 256, // Combusken + 224, // Octillery + 33, // Nidorino + 136, // Flareon + 225, // Delibird + 72, // Tentacool + 63, // Abra + 253, // Grovyle + 340, // Whiscash + 156, // Quilava + 196, // Espeon + 88, // Grimer + 152, // Chikorita + 326, // Grumpig + 299, // Nosepass + 53, // Persian + 262, // Mightyena + 48, // Venonat + 82, // Magneton + 77, // Ponyta + 296, // Makuhita + 337, // Lunatone + 28, // Sandslash + 96, // Drowzee + 114, // Tangela + 57, // Primeape + 165, // Ledyba + 40, // Wigglytuff + 47, // Parasect + 139, // Omastar + 294, // Loudred + 8, // Wartortle + 75, // Graveler + 197, // Umbreon + 345, // Lileep + 61, // Poliwhirl + 134, // Vaporeon + 15, // Beedrill + 105, // Marowak + 70, // Weepinbell + 369, // Relicanth + 111, // Rhyhorn + 2, // Ivysaur + 352, // Kecleon + 274, // Nuzleaf + 267, // Beautifly + 17, // Pidgeotto + 168, // Ariados + 86, // Seel + 186, // Politoed + 159, // Croconaw + 113, // Chansey + 354, // Banette + 232, // Donphan + 121, // Starmie + 5, // Charmeleon + 221, // Piloswine + 12, // Butterfree + 329, // Vibrava + 125, // Electabuzz + 342, // Crawdaunt + 301, // Delcatty + 334, // Altaria + 372, // Shelgon + 38, // Ninetales + 207, // Gligar + 364, // Sealeo + 327, // Spinda + 247, // Pupitar + 79, // Slowpoke + 338, // Solrock + 241, // Miltank + 22, // Fearow + 45, // Vileplume + 89, // Muk + 205, // Forretress + 185, // Sudowoodo + 359, // Absol + 193, // Yanma + 269, // Dustox + 108, // Lickitung + 235, // Smeargle + 171, // Lanturn + 101, // Electrode + 271, // Lombre + 286, // Breloom + 153, // Bayleef + 117, // Seadra + 110, // Weezing + 279, // Pelipper + 375, // Metang + 31, // Nidoqueen + 332, // Cacturne + 275, // Shiftry + 308, // Medicham + 335, // Zangoose + 141, // Kabutops + 99, // Kingler + 64, // Kadabra + 119, // Seaking + 36, // Clefable + 126, // Magmar + 202, // Wobbuffet + 92, // Gastly + 122, // Mr. mime + 62, // Poliwrath + 128, // Tauros + 380, // Latias + 181, // Ampharos + 288, // Vigoroth + 166, // Ledian + 76, // Golem + 365, // Walrein + 84, // Doduo + 229, // Houndoom + 34, // Nidoking + 124, // Jynx + 107, // Hitmonchan + 234, // Stantler + 210, // Granbull + 237, // Hitmontop + 195, // Quagsire + 344, // Claydol + 260, // Swampert + 242, // Blissey + 272, // Ludicolo + 295, // Exploud + 206, // Dunsparce + 127, // Pinsir + 91, // Cloyster + 67, // Machoke + 203, // Girafarig + 18, // Pidgeot + 178, // Xatu + 346, // Cradily + 106, // Hitmonlee + 49, // Venomoth + 94, // Gengar + 214, // Heracross + 362, // Glalie + 123, // Scyther + 373, // Salamence + 310, // Manectric + 348, // Armaldo + 65, // Alakazam + 97, // Hypno + 164, // Noctowl + 73, // Tentacruel + 356, // Dusclops + 145, // Zapdos + 42, // Golbat + 376, // Metagross + 282, // Gardevoir + 9, // Blastoise + 80, // Slowbro + 93, // Haunter + 68, // Machamp + 377, // Regirock + 317, // Swalot + 254, // Sceptile + 227, // Skarmory + 55, // Golduck + 386, // Deoxys + 71, // Victreebel + 78, // Rapidash + 6, // Charizard + 367, // Huntail + 87, // Dewgong + 144, // Articuno + 157, // Typhlosion + 142, // Aerodactyl + 368, // Gorebyss + 217, // Ursaring + 154, // Meganium + 378, // Regice + 212, // Scizor + 230, // Kingdra + 147, // Dratini + 85, // Dodrio + 319, // Sharpedo + 169, // Crobat + 162, // Furret + 59, // Arcanine + 243, // Raikou + 257, // Blaziken + 323, // Camerupt + 112, // Rhydon + 379, // Registeel + 23, // Ekans + 330, // Flygon + 357, // Tropius + 381, // Latios + 245, // Suicune + 146, // Moltres + 3, // Venusaur + 103, // Exeggutor + 199, // Slowking + 248, // Tyranitar + 289, // Slaking + 320, // Wailmer + 150, // Mewtwo + 306, // Aggron + 143, // Snorlax + 226, // Mantine + 244, // Entei + 149, // Dragonite + 115, // Kangaskhan + 297, // Hariyama + 160, // Feraligatr + 131, // Lapras + 336, // Seviper + 24, // Arbok + 383, // Groudon + 250, // Ho-Oh + 148, // Dragonair + 382, // Kyogre + 249, // Lugia + 350, // Milotic + 130, // Gyarados + 384, // Rayquaza + 95, // Onix + 208, // Steelix + 321, // Wailord +}; + +#endif // GUARD_DATA_POKEDEX_ORDERS diff --git a/src/data/pokemon/base_stats.h b/src/data/pokemon/base_stats.h new file mode 100644 index 000000000..bc6572b46 --- /dev/null +++ b/src/data/pokemon/base_stats.h @@ -0,0 +1,13576 @@ +#ifndef GUARD_BASE_STATS_H +#define GUARD_BASE_STATS_H + +// Maximum value for a female pokemon is 254 (MON_FEMALE) which is 100% female. +// 255 (MON_GENDERLESS) is reserved for genderless pokemon. +#define PERCENT_FEMALE(percent) min(254, ((percent * 255) / 100)) + +const struct BaseStats gBaseStats[] = +{ + [SPECIES_NONE] = {0}, + + [SPECIES_BULBASAUR] = + { + .baseHP = 45, + .baseAttack = 49, + .baseDefense = 49, + .baseSpeed = 45, + .baseSpAttack = 65, + .baseSpDefense = 65, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 64, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_OVERGROW, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_IVYSAUR] = + { + .baseHP = 60, + .baseAttack = 62, + .baseDefense = 63, + .baseSpeed = 60, + .baseSpAttack = 80, + .baseSpDefense = 80, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 141, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_OVERGROW, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_VENUSAUR] = + { + .baseHP = 80, + .baseAttack = 82, + .baseDefense = 83, + .baseSpeed = 80, + .baseSpAttack = 100, + .baseSpDefense = 100, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 208, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_OVERGROW, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_CHARMANDER] = + { + .baseHP = 39, + .baseAttack = 52, + .baseDefense = 43, + .baseSpeed = 65, + .baseSpAttack = 60, + .baseSpDefense = 50, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 65, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_BLAZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_CHARMELEON] = + { + .baseHP = 58, + .baseAttack = 64, + .baseDefense = 58, + .baseSpeed = 80, + .baseSpAttack = 80, + .baseSpDefense = 65, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 142, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_BLAZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_CHARIZARD] = + { + .baseHP = 78, + .baseAttack = 84, + .baseDefense = 78, + .baseSpeed = 100, + .baseSpAttack = 109, + .baseSpDefense = 85, + .type1 = TYPE_FIRE, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 209, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_BLAZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_SQUIRTLE] = + { + .baseHP = 44, + .baseAttack = 48, + .baseDefense = 65, + .baseSpeed = 43, + .baseSpAttack = 50, + .baseSpDefense = 64, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 66, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_TORRENT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_WARTORTLE] = + { + .baseHP = 59, + .baseAttack = 63, + .baseDefense = 80, + .baseSpeed = 58, + .baseSpAttack = 65, + .baseSpDefense = 80, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 143, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_TORRENT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_BLASTOISE] = + { + .baseHP = 79, + .baseAttack = 83, + .baseDefense = 100, + .baseSpeed = 78, + .baseSpAttack = 85, + .baseSpDefense = 105, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 210, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_TORRENT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_CATERPIE] = + { + .baseHP = 45, + .baseAttack = 30, + .baseDefense = 35, + .baseSpeed = 45, + .baseSpAttack = 20, + .baseSpDefense = 20, + .type1 = TYPE_BUG, + .type2 = TYPE_BUG, + .catchRate = 255, + .expYield = 53, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SHIELD_DUST, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_METAPOD] = + { + .baseHP = 50, + .baseAttack = 20, + .baseDefense = 55, + .baseSpeed = 30, + .baseSpAttack = 25, + .baseSpDefense = 25, + .type1 = TYPE_BUG, + .type2 = TYPE_BUG, + .catchRate = 120, + .expYield = 72, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SHED_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_BUTTERFREE] = + { + .baseHP = 60, + .baseAttack = 45, + .baseDefense = 50, + .baseSpeed = 70, + .baseSpAttack = 80, + .baseSpDefense = 80, + .type1 = TYPE_BUG, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 160, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_SILVER_POWDER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_COMPOUND_EYES, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_WEEDLE] = + { + .baseHP = 40, + .baseAttack = 35, + .baseDefense = 30, + .baseSpeed = 50, + .baseSpAttack = 20, + .baseSpDefense = 20, + .type1 = TYPE_BUG, + .type2 = TYPE_POISON, + .catchRate = 255, + .expYield = 52, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SHIELD_DUST, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_KAKUNA] = + { + .baseHP = 45, + .baseAttack = 25, + .baseDefense = 50, + .baseSpeed = 35, + .baseSpAttack = 25, + .baseSpDefense = 25, + .type1 = TYPE_BUG, + .type2 = TYPE_POISON, + .catchRate = 120, + .expYield = 71, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SHED_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_BEEDRILL] = + { + .baseHP = 65, + .baseAttack = 80, + .baseDefense = 40, + .baseSpeed = 75, + .baseSpAttack = 45, + .baseSpDefense = 80, + .type1 = TYPE_BUG, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 159, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_POISON_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_PIDGEY] = + { + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 40, + .baseSpeed = 56, + .baseSpAttack = 35, + .baseSpDefense = 35, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 255, + .expYield = 55, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_PIDGEOTTO] = + { + .baseHP = 63, + .baseAttack = 60, + .baseDefense = 55, + .baseSpeed = 71, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 120, + .expYield = 113, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_PIDGEOT] = + { + .baseHP = 83, + .baseAttack = 80, + .baseDefense = 75, + .baseSpeed = 91, + .baseSpAttack = 70, + .baseSpDefense = 70, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 172, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 3, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_RATTATA] = + { + .baseHP = 30, + .baseAttack = 56, + .baseDefense = 35, + .baseSpeed = 72, + .baseSpAttack = 25, + .baseSpDefense = 35, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 255, + .expYield = 57, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_GUTS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_RATICATE] = + { + .baseHP = 55, + .baseAttack = 81, + .baseDefense = 60, + .baseSpeed = 97, + .baseSpAttack = 50, + .baseSpDefense = 70, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 127, + .expYield = 116, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_GUTS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_SPEAROW] = + { + .baseHP = 40, + .baseAttack = 60, + .baseDefense = 30, + .baseSpeed = 70, + .baseSpAttack = 31, + .baseSpDefense = 31, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 255, + .expYield = 58, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_FEAROW] = + { + .baseHP = 65, + .baseAttack = 90, + .baseDefense = 65, + .baseSpeed = 100, + .baseSpAttack = 61, + .baseSpDefense = 61, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 90, + .expYield = 162, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SHARP_BEAK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_EKANS] = + { + .baseHP = 35, + .baseAttack = 60, + .baseDefense = 44, + .baseSpeed = 55, + .baseSpAttack = 40, + .baseSpDefense = 54, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 255, + .expYield = 62, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_SHED_SKIN, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_ARBOK] = + { + .baseHP = 60, + .baseAttack = 85, + .baseDefense = 69, + .baseSpeed = 80, + .baseSpAttack = 65, + .baseSpDefense = 79, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 90, + .expYield = 147, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_SHED_SKIN, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_PIKACHU] = + { + .baseHP = 35, + .baseAttack = 55, + .baseDefense = 30, + .baseSpeed = 90, + .baseSpAttack = 50, + .baseSpDefense = 40, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 190, + .expYield = 82, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_ORAN_BERRY, + .item2 = ITEM_LIGHT_BALL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 6, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_RAICHU] = + { + .baseHP = 60, + .baseAttack = 90, + .baseDefense = 55, + .baseSpeed = 100, + .baseSpAttack = 90, + .baseSpDefense = 80, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 75, + .expYield = 122, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 3, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_ORAN_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_SANDSHREW] = + { + .baseHP = 50, + .baseAttack = 75, + .baseDefense = 85, + .baseSpeed = 40, + .baseSpAttack = 20, + .baseSpDefense = 30, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 255, + .expYield = 93, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_QUICK_CLAW, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SAND_VEIL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_SANDSLASH] = + { + .baseHP = 75, + .baseAttack = 100, + .baseDefense = 110, + .baseSpeed = 65, + .baseSpAttack = 45, + .baseSpDefense = 55, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 90, + .expYield = 163, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_QUICK_CLAW, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SAND_VEIL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_NIDORAN_F] = + { + .baseHP = 55, + .baseAttack = 47, + .baseDefense = 52, + .baseSpeed = 41, + .baseSpAttack = 40, + .baseSpDefense = 40, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 235, + .expYield = 59, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_POISON_POINT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_NIDORINA] = + { + .baseHP = 70, + .baseAttack = 62, + .baseDefense = 67, + .baseSpeed = 56, + .baseSpAttack = 55, + .baseSpDefense = 55, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 120, + .expYield = 117, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_POISON_POINT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_NIDOQUEEN] = + { + .baseHP = 90, + .baseAttack = 82, + .baseDefense = 87, + .baseSpeed = 76, + .baseSpAttack = 75, + .baseSpDefense = 85, + .type1 = TYPE_POISON, + .type2 = TYPE_GROUND, + .catchRate = 45, + .expYield = 194, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_POISON_POINT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_NIDORAN_M] = + { + .baseHP = 46, + .baseAttack = 57, + .baseDefense = 40, + .baseSpeed = 50, + .baseSpAttack = 40, + .baseSpDefense = 40, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 235, + .expYield = 60, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_POISON_POINT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_NIDORINO] = + { + .baseHP = 61, + .baseAttack = 72, + .baseDefense = 57, + .baseSpeed = 65, + .baseSpAttack = 55, + .baseSpDefense = 55, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 120, + .expYield = 118, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_POISON_POINT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_NIDOKING] = + { + .baseHP = 81, + .baseAttack = 92, + .baseDefense = 77, + .baseSpeed = 85, + .baseSpAttack = 85, + .baseSpDefense = 75, + .type1 = TYPE_POISON, + .type2 = TYPE_GROUND, + .catchRate = 45, + .expYield = 195, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_POISON_POINT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_CLEFAIRY] = + { + .baseHP = 70, + .baseAttack = 45, + .baseDefense = 48, + .baseSpeed = 35, + .baseSpAttack = 60, + .baseSpDefense = 65, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 150, + .expYield = 68, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_LEPPA_BERRY, + .item2 = ITEM_MOON_STONE, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 10, + .friendship = 140, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_CUTE_CHARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_CLEFABLE] = + { + .baseHP = 95, + .baseAttack = 70, + .baseDefense = 73, + .baseSpeed = 60, + .baseSpAttack = 85, + .baseSpDefense = 90, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 25, + .expYield = 129, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_LEPPA_BERRY, + .item2 = ITEM_MOON_STONE, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 10, + .friendship = 140, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_CUTE_CHARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_VULPIX] = + { + .baseHP = 38, + .baseAttack = 41, + .baseDefense = 40, + .baseSpeed = 65, + .baseSpAttack = 50, + .baseSpDefense = 65, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 190, + .expYield = 63, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_FLASH_FIRE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_NINETALES] = + { + .baseHP = 73, + .baseAttack = 76, + .baseDefense = 75, + .baseSpeed = 100, + .baseSpAttack = 81, + .baseSpDefense = 100, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 75, + .expYield = 178, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_FLASH_FIRE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_JIGGLYPUFF] = + { + .baseHP = 115, + .baseAttack = 45, + .baseDefense = 20, + .baseSpeed = 20, + .baseSpAttack = 45, + .baseSpDefense = 25, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 170, + .expYield = 76, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_CUTE_CHARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_WIGGLYTUFF] = + { + .baseHP = 140, + .baseAttack = 70, + .baseDefense = 45, + .baseSpeed = 45, + .baseSpAttack = 75, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 50, + .expYield = 109, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_CUTE_CHARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_ZUBAT] = + { + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 35, + .baseSpeed = 55, + .baseSpAttack = 30, + .baseSpDefense = 40, + .type1 = TYPE_POISON, + .type2 = TYPE_FLYING, + .catchRate = 255, + .expYield = 54, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_INNER_FOCUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_GOLBAT] = + { + .baseHP = 75, + .baseAttack = 80, + .baseDefense = 70, + .baseSpeed = 90, + .baseSpAttack = 65, + .baseSpDefense = 75, + .type1 = TYPE_POISON, + .type2 = TYPE_FLYING, + .catchRate = 90, + .expYield = 171, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_INNER_FOCUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_ODDISH] = + { + .baseHP = 45, + .baseAttack = 50, + .baseDefense = 55, + .baseSpeed = 30, + .baseSpAttack = 75, + .baseSpDefense = 65, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 255, + .expYield = 78, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 4, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_GLOOM] = + { + .baseHP = 60, + .baseAttack = 65, + .baseDefense = 70, + .baseSpeed = 40, + .baseSpAttack = 85, + .baseSpDefense = 75, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 120, + .expYield = 132, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 6, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_VILEPLUME] = + { + .baseHP = 75, + .baseAttack = 80, + .baseDefense = 85, + .baseSpeed = 50, + .baseSpAttack = 100, + .baseSpDefense = 90, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 184, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_PARAS] = + { + .baseHP = 35, + .baseAttack = 70, + .baseDefense = 55, + .baseSpeed = 25, + .baseSpAttack = 45, + .baseSpDefense = 55, + .type1 = TYPE_BUG, + .type2 = TYPE_GRASS, + .catchRate = 190, + .expYield = 70, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_TINY_MUSHROOM, + .item2 = ITEM_BIG_MUSHROOM, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_EFFECT_SPORE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_PARASECT] = + { + .baseHP = 60, + .baseAttack = 95, + .baseDefense = 80, + .baseSpeed = 30, + .baseSpAttack = 60, + .baseSpDefense = 80, + .type1 = TYPE_BUG, + .type2 = TYPE_GRASS, + .catchRate = 75, + .expYield = 128, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_TINY_MUSHROOM, + .item2 = ITEM_BIG_MUSHROOM, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_EFFECT_SPORE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_VENONAT] = + { + .baseHP = 60, + .baseAttack = 55, + .baseDefense = 50, + .baseSpeed = 45, + .baseSpAttack = 40, + .baseSpDefense = 55, + .type1 = TYPE_BUG, + .type2 = TYPE_POISON, + .catchRate = 190, + .expYield = 75, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_COMPOUND_EYES, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_VENOMOTH] = + { + .baseHP = 70, + .baseAttack = 65, + .baseDefense = 60, + .baseSpeed = 90, + .baseSpAttack = 90, + .baseSpDefense = 75, + .type1 = TYPE_BUG, + .type2 = TYPE_POISON, + .catchRate = 75, + .expYield = 138, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SHIELD_DUST, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_DIGLETT] = + { + .baseHP = 10, + .baseAttack = 55, + .baseDefense = 25, + .baseSpeed = 95, + .baseSpAttack = 35, + .baseSpDefense = 45, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 255, + .expYield = 81, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SAND_VEIL, + .ability2 = ABILITY_ARENA_TRAP, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_DUGTRIO] = + { + .baseHP = 35, + .baseAttack = 80, + .baseDefense = 50, + .baseSpeed = 120, + .baseSpAttack = 50, + .baseSpDefense = 70, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 50, + .expYield = 153, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SAND_VEIL, + .ability2 = ABILITY_ARENA_TRAP, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_MEOWTH] = + { + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 35, + .baseSpeed = 90, + .baseSpAttack = 40, + .baseSpDefense = 40, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 255, + .expYield = 69, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_PICKUP, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_PERSIAN] = + { + .baseHP = 65, + .baseAttack = 70, + .baseDefense = 60, + .baseSpeed = 115, + .baseSpAttack = 65, + .baseSpDefense = 65, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 90, + .expYield = 148, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_LIMBER, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_PSYDUCK] = + { + .baseHP = 50, + .baseAttack = 52, + .baseDefense = 48, + .baseSpeed = 55, + .baseSpAttack = 65, + .baseSpDefense = 50, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 190, + .expYield = 80, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_DAMP, + .ability2 = ABILITY_CLOUD_NINE, + .safariZoneFleeRate = 6, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_GOLDUCK] = + { + .baseHP = 80, + .baseAttack = 82, + .baseDefense = 78, + .baseSpeed = 85, + .baseSpAttack = 95, + .baseSpDefense = 80, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 75, + .expYield = 174, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_DAMP, + .ability2 = ABILITY_CLOUD_NINE, + .safariZoneFleeRate = 8, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_MANKEY] = + { + .baseHP = 40, + .baseAttack = 80, + .baseDefense = 35, + .baseSpeed = 70, + .baseSpAttack = 35, + .baseSpDefense = 45, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 190, + .expYield = 74, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_VITAL_SPIRIT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_PRIMEAPE] = + { + .baseHP = 65, + .baseAttack = 105, + .baseDefense = 60, + .baseSpeed = 95, + .baseSpAttack = 60, + .baseSpDefense = 70, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 75, + .expYield = 149, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_VITAL_SPIRIT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_GROWLITHE] = + { + .baseHP = 55, + .baseAttack = 70, + .baseDefense = 45, + .baseSpeed = 60, + .baseSpAttack = 70, + .baseSpDefense = 50, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 190, + .expYield = 91, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_FLASH_FIRE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_ARCANINE] = + { + .baseHP = 90, + .baseAttack = 110, + .baseDefense = 80, + .baseSpeed = 95, + .baseSpAttack = 100, + .baseSpDefense = 80, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 75, + .expYield = 213, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_FLASH_FIRE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_POLIWAG] = + { + .baseHP = 40, + .baseAttack = 50, + .baseDefense = 40, + .baseSpeed = 90, + .baseSpAttack = 40, + .baseSpDefense = 40, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 255, + .expYield = 77, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_WATER_ABSORB, + .ability2 = ABILITY_DAMP, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = TRUE, + }, + + [SPECIES_POLIWHIRL] = + { + .baseHP = 65, + .baseAttack = 65, + .baseDefense = 65, + .baseSpeed = 90, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 120, + .expYield = 131, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_WATER_ABSORB, + .ability2 = ABILITY_DAMP, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = TRUE, + }, + + [SPECIES_POLIWRATH] = + { + .baseHP = 90, + .baseAttack = 85, + .baseDefense = 95, + .baseSpeed = 70, + .baseSpAttack = 70, + .baseSpDefense = 90, + .type1 = TYPE_WATER, + .type2 = TYPE_FIGHTING, + .catchRate = 45, + .expYield = 185, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 3, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_WATER_ABSORB, + .ability2 = ABILITY_DAMP, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = TRUE, + }, + + [SPECIES_ABRA] = + { + .baseHP = 25, + .baseAttack = 20, + .baseDefense = 15, + .baseSpeed = 90, + .baseSpAttack = 105, + .baseSpDefense = 55, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 200, + .expYield = 73, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_TWISTED_SPOON, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_INNER_FOCUS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_KADABRA] = + { + .baseHP = 40, + .baseAttack = 35, + .baseDefense = 30, + .baseSpeed = 105, + .baseSpAttack = 120, + .baseSpDefense = 70, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 100, + .expYield = 145, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_TWISTED_SPOON, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_INNER_FOCUS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_ALAKAZAM] = + { + .baseHP = 55, + .baseAttack = 50, + .baseDefense = 45, + .baseSpeed = 120, + .baseSpAttack = 135, + .baseSpDefense = 85, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 50, + .expYield = 186, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_TWISTED_SPOON, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_INNER_FOCUS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_MACHOP] = + { + .baseHP = 70, + .baseAttack = 80, + .baseDefense = 50, + .baseSpeed = 35, + .baseSpAttack = 35, + .baseSpDefense = 35, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 180, + .expYield = 88, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_GUTS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_MACHOKE] = + { + .baseHP = 80, + .baseAttack = 100, + .baseDefense = 70, + .baseSpeed = 45, + .baseSpAttack = 50, + .baseSpDefense = 60, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 90, + .expYield = 146, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_GUTS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_MACHAMP] = + { + .baseHP = 90, + .baseAttack = 130, + .baseDefense = 80, + .baseSpeed = 55, + .baseSpAttack = 65, + .baseSpDefense = 85, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 45, + .expYield = 193, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_GUTS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_BELLSPROUT] = + { + .baseHP = 50, + .baseAttack = 75, + .baseDefense = 35, + .baseSpeed = 40, + .baseSpAttack = 70, + .baseSpDefense = 30, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 255, + .expYield = 84, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_WEEPINBELL] = + { + .baseHP = 65, + .baseAttack = 90, + .baseDefense = 50, + .baseSpeed = 55, + .baseSpAttack = 85, + .baseSpDefense = 45, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 120, + .expYield = 151, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_VICTREEBEL] = + { + .baseHP = 80, + .baseAttack = 105, + .baseDefense = 65, + .baseSpeed = 70, + .baseSpAttack = 100, + .baseSpDefense = 60, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 191, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_TENTACOOL] = + { + .baseHP = 40, + .baseAttack = 40, + .baseDefense = 35, + .baseSpeed = 70, + .baseSpAttack = 50, + .baseSpDefense = 100, + .type1 = TYPE_WATER, + .type2 = TYPE_POISON, + .catchRate = 190, + .expYield = 105, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_CLEAR_BODY, + .ability2 = ABILITY_LIQUID_OOZE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_TENTACRUEL] = + { + .baseHP = 80, + .baseAttack = 70, + .baseDefense = 65, + .baseSpeed = 100, + .baseSpAttack = 80, + .baseSpDefense = 120, + .type1 = TYPE_WATER, + .type2 = TYPE_POISON, + .catchRate = 60, + .expYield = 205, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_CLEAR_BODY, + .ability2 = ABILITY_LIQUID_OOZE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_GEODUDE] = + { + .baseHP = 40, + .baseAttack = 80, + .baseDefense = 100, + .baseSpeed = 20, + .baseSpAttack = 30, + .baseSpDefense = 30, + .type1 = TYPE_ROCK, + .type2 = TYPE_GROUND, + .catchRate = 255, + .expYield = 86, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_EVERSTONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_STURDY, + .safariZoneFleeRate = 4, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_GRAVELER] = + { + .baseHP = 55, + .baseAttack = 95, + .baseDefense = 115, + .baseSpeed = 35, + .baseSpAttack = 45, + .baseSpDefense = 45, + .type1 = TYPE_ROCK, + .type2 = TYPE_GROUND, + .catchRate = 120, + .expYield = 134, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_EVERSTONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_STURDY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_GOLEM] = + { + .baseHP = 80, + .baseAttack = 110, + .baseDefense = 130, + .baseSpeed = 45, + .baseSpAttack = 55, + .baseSpDefense = 65, + .type1 = TYPE_ROCK, + .type2 = TYPE_GROUND, + .catchRate = 45, + .expYield = 177, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 3, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_EVERSTONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_STURDY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_PONYTA] = + { + .baseHP = 50, + .baseAttack = 85, + .baseDefense = 55, + .baseSpeed = 90, + .baseSpAttack = 65, + .baseSpDefense = 65, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 190, + .expYield = 152, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_FLASH_FIRE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_RAPIDASH] = + { + .baseHP = 65, + .baseAttack = 100, + .baseDefense = 70, + .baseSpeed = 105, + .baseSpAttack = 80, + .baseSpDefense = 80, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 60, + .expYield = 192, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_FLASH_FIRE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_SLOWPOKE] = + { + .baseHP = 90, + .baseAttack = 65, + .baseDefense = 65, + .baseSpeed = 15, + .baseSpAttack = 40, + .baseSpDefense = 40, + .type1 = TYPE_WATER, + .type2 = TYPE_PSYCHIC, + .catchRate = 190, + .expYield = 99, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_OWN_TEMPO, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_SLOWBRO] = + { + .baseHP = 95, + .baseAttack = 75, + .baseDefense = 110, + .baseSpeed = 30, + .baseSpAttack = 100, + .baseSpDefense = 80, + .type1 = TYPE_WATER, + .type2 = TYPE_PSYCHIC, + .catchRate = 75, + .expYield = 164, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_OWN_TEMPO, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_MAGNEMITE] = + { + .baseHP = 25, + .baseAttack = 35, + .baseDefense = 70, + .baseSpeed = 45, + .baseSpAttack = 95, + .baseSpDefense = 55, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_STEEL, + .catchRate = 190, + .expYield = 89, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_MAGNET_PULL, + .ability2 = ABILITY_STURDY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_MAGNETON] = + { + .baseHP = 50, + .baseAttack = 60, + .baseDefense = 95, + .baseSpeed = 70, + .baseSpAttack = 120, + .baseSpDefense = 70, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_STEEL, + .catchRate = 60, + .expYield = 161, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_MAGNET_PULL, + .ability2 = ABILITY_STURDY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_FARFETCHD] = + { + .baseHP = 52, + .baseAttack = 65, + .baseDefense = 55, + .baseSpeed = 60, + .baseSpAttack = 58, + .baseSpDefense = 62, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 94, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_STICK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_INNER_FOCUS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_DODUO] = + { + .baseHP = 35, + .baseAttack = 85, + .baseDefense = 45, + .baseSpeed = 75, + .baseSpAttack = 35, + .baseSpDefense = 35, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 190, + .expYield = 96, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SHARP_BEAK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 8, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_DODRIO] = + { + .baseHP = 60, + .baseAttack = 110, + .baseDefense = 70, + .baseSpeed = 100, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 158, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SHARP_BEAK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 10, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_SEEL] = + { + .baseHP = 65, + .baseAttack = 45, + .baseDefense = 55, + .baseSpeed = 45, + .baseSpAttack = 45, + .baseSpDefense = 70, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 190, + .expYield = 100, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_DEWGONG] = + { + .baseHP = 90, + .baseAttack = 70, + .baseDefense = 80, + .baseSpeed = 70, + .baseSpAttack = 70, + .baseSpDefense = 95, + .type1 = TYPE_WATER, + .type2 = TYPE_ICE, + .catchRate = 75, + .expYield = 176, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_GRIMER] = + { + .baseHP = 80, + .baseAttack = 80, + .baseDefense = 50, + .baseSpeed = 25, + .baseSpAttack = 40, + .baseSpDefense = 50, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 190, + .expYield = 90, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NUGGET, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_STENCH, + .ability2 = ABILITY_STICKY_HOLD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_MUK] = + { + .baseHP = 105, + .baseAttack = 105, + .baseDefense = 75, + .baseSpeed = 50, + .baseSpAttack = 65, + .baseSpDefense = 100, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 75, + .expYield = 157, + .evYield_HP = 1, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NUGGET, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_STENCH, + .ability2 = ABILITY_STICKY_HOLD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_SHELLDER] = + { + .baseHP = 30, + .baseAttack = 65, + .baseDefense = 100, + .baseSpeed = 40, + .baseSpAttack = 45, + .baseSpDefense = 25, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 190, + .expYield = 97, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_PEARL, + .item2 = ITEM_BIG_PEARL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_SHELL_ARMOR, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_CLOYSTER] = + { + .baseHP = 50, + .baseAttack = 95, + .baseDefense = 180, + .baseSpeed = 70, + .baseSpAttack = 85, + .baseSpDefense = 45, + .type1 = TYPE_WATER, + .type2 = TYPE_ICE, + .catchRate = 60, + .expYield = 203, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_PEARL, + .item2 = ITEM_BIG_PEARL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_SHELL_ARMOR, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_GASTLY] = + { + .baseHP = 30, + .baseAttack = 35, + .baseDefense = 30, + .baseSpeed = 80, + .baseSpAttack = 100, + .baseSpDefense = 35, + .type1 = TYPE_GHOST, + .type2 = TYPE_POISON, + .catchRate = 190, + .expYield = 95, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_HAUNTER] = + { + .baseHP = 45, + .baseAttack = 50, + .baseDefense = 45, + .baseSpeed = 95, + .baseSpAttack = 115, + .baseSpDefense = 55, + .type1 = TYPE_GHOST, + .type2 = TYPE_POISON, + .catchRate = 90, + .expYield = 126, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_GENGAR] = + { + .baseHP = 60, + .baseAttack = 65, + .baseDefense = 60, + .baseSpeed = 110, + .baseSpAttack = 130, + .baseSpDefense = 75, + .type1 = TYPE_GHOST, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 190, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_ONIX] = + { + .baseHP = 35, + .baseAttack = 45, + .baseDefense = 160, + .baseSpeed = 70, + .baseSpAttack = 30, + .baseSpDefense = 45, + .type1 = TYPE_ROCK, + .type2 = TYPE_GROUND, + .catchRate = 45, + .expYield = 108, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_STURDY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_DROWZEE] = + { + .baseHP = 60, + .baseAttack = 48, + .baseDefense = 45, + .baseSpeed = 42, + .baseSpAttack = 43, + .baseSpDefense = 90, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 190, + .expYield = 102, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_INSOMNIA, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_HYPNO] = + { + .baseHP = 85, + .baseAttack = 73, + .baseDefense = 70, + .baseSpeed = 67, + .baseSpAttack = 73, + .baseSpDefense = 115, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 75, + .expYield = 165, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_INSOMNIA, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_KRABBY] = + { + .baseHP = 30, + .baseAttack = 105, + .baseDefense = 90, + .baseSpeed = 50, + .baseSpAttack = 25, + .baseSpDefense = 25, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 225, + .expYield = 115, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_HYPER_CUTTER, + .ability2 = ABILITY_SHELL_ARMOR, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_KINGLER] = + { + .baseHP = 55, + .baseAttack = 130, + .baseDefense = 115, + .baseSpeed = 75, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 60, + .expYield = 206, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_HYPER_CUTTER, + .ability2 = ABILITY_SHELL_ARMOR, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = TRUE, + }, + + [SPECIES_VOLTORB] = + { + .baseHP = 40, + .baseAttack = 30, + .baseDefense = 50, + .baseSpeed = 100, + .baseSpAttack = 55, + .baseSpDefense = 55, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 190, + .expYield = 103, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_SOUNDPROOF, + .ability2 = ABILITY_STATIC, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_ELECTRODE] = + { + .baseHP = 60, + .baseAttack = 50, + .baseDefense = 70, + .baseSpeed = 140, + .baseSpAttack = 80, + .baseSpDefense = 80, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 60, + .expYield = 150, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_SOUNDPROOF, + .ability2 = ABILITY_STATIC, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_EXEGGCUTE] = + { + .baseHP = 60, + .baseAttack = 40, + .baseDefense = 80, + .baseSpeed = 40, + .baseSpAttack = 60, + .baseSpDefense = 45, + .type1 = TYPE_GRASS, + .type2 = TYPE_PSYCHIC, + .catchRate = 90, + .expYield = 98, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_EXEGGUTOR] = + { + .baseHP = 95, + .baseAttack = 95, + .baseDefense = 85, + .baseSpeed = 55, + .baseSpAttack = 125, + .baseSpDefense = 65, + .type1 = TYPE_GRASS, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 212, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_CUBONE] = + { + .baseHP = 50, + .baseAttack = 50, + .baseDefense = 95, + .baseSpeed = 35, + .baseSpAttack = 40, + .baseSpDefense = 50, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 190, + .expYield = 87, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_THICK_CLUB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_LIGHTNING_ROD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_MAROWAK] = + { + .baseHP = 60, + .baseAttack = 80, + .baseDefense = 110, + .baseSpeed = 45, + .baseSpAttack = 50, + .baseSpDefense = 80, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 75, + .expYield = 124, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_THICK_CLUB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_LIGHTNING_ROD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_HITMONLEE] = + { + .baseHP = 50, + .baseAttack = 120, + .baseDefense = 53, + .baseSpeed = 87, + .baseSpAttack = 35, + .baseSpDefense = 110, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 45, + .expYield = 139, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_MALE, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_LIMBER, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_HITMONCHAN] = + { + .baseHP = 50, + .baseAttack = 105, + .baseDefense = 79, + .baseSpeed = 76, + .baseSpAttack = 35, + .baseSpDefense = 110, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 45, + .expYield = 140, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_MALE, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_LICKITUNG] = + { + .baseHP = 90, + .baseAttack = 55, + .baseDefense = 75, + .baseSpeed = 30, + .baseSpAttack = 60, + .baseSpDefense = 75, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 127, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_OWN_TEMPO, + .ability2 = ABILITY_OBLIVIOUS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_KOFFING] = + { + .baseHP = 40, + .baseAttack = 65, + .baseDefense = 95, + .baseSpeed = 35, + .baseSpAttack = 60, + .baseSpDefense = 45, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 190, + .expYield = 114, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SMOKE_BALL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_WEEZING] = + { + .baseHP = 65, + .baseAttack = 90, + .baseDefense = 120, + .baseSpeed = 60, + .baseSpAttack = 85, + .baseSpDefense = 70, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 60, + .expYield = 173, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SMOKE_BALL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_RHYHORN] = + { + .baseHP = 80, + .baseAttack = 85, + .baseDefense = 95, + .baseSpeed = 25, + .baseSpAttack = 30, + .baseSpDefense = 30, + .type1 = TYPE_GROUND, + .type2 = TYPE_ROCK, + .catchRate = 120, + .expYield = 135, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_LIGHTNING_ROD, + .ability2 = ABILITY_ROCK_HEAD, + .safariZoneFleeRate = 4, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_RHYDON] = + { + .baseHP = 105, + .baseAttack = 130, + .baseDefense = 120, + .baseSpeed = 40, + .baseSpAttack = 45, + .baseSpDefense = 45, + .type1 = TYPE_GROUND, + .type2 = TYPE_ROCK, + .catchRate = 60, + .expYield = 204, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_LIGHTNING_ROD, + .ability2 = ABILITY_ROCK_HEAD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_CHANSEY] = + { + .baseHP = 250, + .baseAttack = 5, + .baseDefense = 5, + .baseSpeed = 50, + .baseSpAttack = 35, + .baseSpDefense = 105, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 30, + .expYield = 255, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_LUCKY_EGG, + .genderRatio = MON_FEMALE, + .eggCycles = 40, + .friendship = 140, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_NATURAL_CURE, + .ability2 = ABILITY_SERENE_GRACE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_TANGELA] = + { + .baseHP = 65, + .baseAttack = 55, + .baseDefense = 115, + .baseSpeed = 60, + .baseSpAttack = 100, + .baseSpDefense = 40, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 166, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_KANGASKHAN] = + { + .baseHP = 105, + .baseAttack = 95, + .baseDefense = 80, + .baseSpeed = 90, + .baseSpAttack = 40, + .baseSpDefense = 80, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 175, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_EARLY_BIRD, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_HORSEA] = + { + .baseHP = 30, + .baseAttack = 40, + .baseDefense = 70, + .baseSpeed = 60, + .baseSpAttack = 70, + .baseSpDefense = 25, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 225, + .expYield = 83, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SEADRA] = + { + .baseHP = 55, + .baseAttack = 65, + .baseDefense = 95, + .baseSpeed = 85, + .baseSpAttack = 95, + .baseSpDefense = 45, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 75, + .expYield = 155, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_POISON_POINT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_GOLDEEN] = + { + .baseHP = 45, + .baseAttack = 67, + .baseDefense = 60, + .baseSpeed = 63, + .baseSpAttack = 35, + .baseSpDefense = 50, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 225, + .expYield = 111, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_WATER_VEIL, + .safariZoneFleeRate = 4, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_SEAKING] = + { + .baseHP = 80, + .baseAttack = 92, + .baseDefense = 65, + .baseSpeed = 68, + .baseSpAttack = 65, + .baseSpDefense = 80, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 60, + .expYield = 170, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_WATER_VEIL, + .safariZoneFleeRate = 6, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_STARYU] = + { + .baseHP = 30, + .baseAttack = 45, + .baseDefense = 55, + .baseSpeed = 85, + .baseSpAttack = 70, + .baseSpDefense = 55, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 225, + .expYield = 106, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_STARDUST, + .item2 = ITEM_STAR_PIECE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_ILLUMINATE, + .ability2 = ABILITY_NATURAL_CURE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_STARMIE] = + { + .baseHP = 60, + .baseAttack = 75, + .baseDefense = 85, + .baseSpeed = 115, + .baseSpAttack = 100, + .baseSpDefense = 85, + .type1 = TYPE_WATER, + .type2 = TYPE_PSYCHIC, + .catchRate = 60, + .expYield = 207, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_STARDUST, + .item2 = ITEM_STAR_PIECE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_ILLUMINATE, + .ability2 = ABILITY_NATURAL_CURE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_MR_MIME] = + { + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 65, + .baseSpeed = 90, + .baseSpAttack = 100, + .baseSpDefense = 120, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 136, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_LEPPA_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_SOUNDPROOF, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_SCYTHER] = + { + .baseHP = 70, + .baseAttack = 110, + .baseDefense = 80, + .baseSpeed = 105, + .baseSpAttack = 55, + .baseSpDefense = 80, + .type1 = TYPE_BUG, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 187, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_JYNX] = + { + .baseHP = 65, + .baseAttack = 50, + .baseDefense = 35, + .baseSpeed = 95, + .baseSpAttack = 115, + .baseSpDefense = 95, + .type1 = TYPE_ICE, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 137, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_ASPEAR_BERRY, + .item2 = ITEM_ASPEAR_BERRY, + .genderRatio = MON_FEMALE, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_ELECTABUZZ] = + { + .baseHP = 65, + .baseAttack = 83, + .baseDefense = 57, + .baseSpeed = 105, + .baseSpAttack = 95, + .baseSpDefense = 85, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 45, + .expYield = 156, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = TRUE, + }, + + [SPECIES_MAGMAR] = + { + .baseHP = 65, + .baseAttack = 95, + .baseDefense = 57, + .baseSpeed = 93, + .baseSpAttack = 100, + .baseSpDefense = 85, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 167, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_FLAME_BODY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_PINSIR] = + { + .baseHP = 65, + .baseAttack = 125, + .baseDefense = 100, + .baseSpeed = 85, + .baseSpAttack = 55, + .baseSpDefense = 70, + .type1 = TYPE_BUG, + .type2 = TYPE_BUG, + .catchRate = 45, + .expYield = 200, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_HYPER_CUTTER, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 8, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_TAUROS] = + { + .baseHP = 75, + .baseAttack = 100, + .baseDefense = 95, + .baseSpeed = 110, + .baseSpAttack = 40, + .baseSpDefense = 70, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 211, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_MAGIKARP] = + { + .baseHP = 20, + .baseAttack = 10, + .baseDefense = 55, + .baseSpeed = 80, + .baseSpAttack = 15, + .baseSpDefense = 20, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 255, + .expYield = 20, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 5, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 4, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_GYARADOS] = + { + .baseHP = 95, + .baseAttack = 125, + .baseDefense = 79, + .baseSpeed = 81, + .baseSpAttack = 60, + .baseSpDefense = 100, + .type1 = TYPE_WATER, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 214, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 5, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_LAPRAS] = + { + .baseHP = 130, + .baseAttack = 85, + .baseDefense = 80, + .baseSpeed = 60, + .baseSpAttack = 85, + .baseSpDefense = 95, + .type1 = TYPE_WATER, + .type2 = TYPE_ICE, + .catchRate = 45, + .expYield = 219, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_WATER_ABSORB, + .ability2 = ABILITY_SHELL_ARMOR, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_DITTO] = + { + .baseHP = 48, + .baseAttack = 48, + .baseDefense = 48, + .baseSpeed = 48, + .baseSpAttack = 48, + .baseSpDefense = 48, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 35, + .expYield = 61, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_POWDER, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_DITTO, + .eggGroup2 = EGG_GROUP_DITTO, + .ability1 = ABILITY_LIMBER, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_EEVEE] = + { + .baseHP = 55, + .baseAttack = 55, + .baseDefense = 50, + .baseSpeed = 55, + .baseSpAttack = 45, + .baseSpDefense = 65, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 92, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 35, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_VAPOREON] = + { + .baseHP = 130, + .baseAttack = 65, + .baseDefense = 60, + .baseSpeed = 65, + .baseSpAttack = 110, + .baseSpDefense = 95, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 196, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 35, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_WATER_ABSORB, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_JOLTEON] = + { + .baseHP = 65, + .baseAttack = 65, + .baseDefense = 60, + .baseSpeed = 130, + .baseSpAttack = 110, + .baseSpDefense = 95, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 45, + .expYield = 197, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 35, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_VOLT_ABSORB, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_FLAREON] = + { + .baseHP = 65, + .baseAttack = 130, + .baseDefense = 60, + .baseSpeed = 65, + .baseSpAttack = 95, + .baseSpDefense = 110, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 198, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 35, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_FLASH_FIRE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_PORYGON] = + { + .baseHP = 65, + .baseAttack = 60, + .baseDefense = 70, + .baseSpeed = 40, + .baseSpAttack = 85, + .baseSpDefense = 75, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 130, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_TRACE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_OMANYTE] = + { + .baseHP = 35, + .baseAttack = 40, + .baseDefense = 100, + .baseSpeed = 35, + .baseSpAttack = 90, + .baseSpDefense = 55, + .type1 = TYPE_ROCK, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 120, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_SHELL_ARMOR, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_OMASTAR] = + { + .baseHP = 70, + .baseAttack = 60, + .baseDefense = 125, + .baseSpeed = 55, + .baseSpAttack = 115, + .baseSpDefense = 70, + .type1 = TYPE_ROCK, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 199, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_SHELL_ARMOR, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_KABUTO] = + { + .baseHP = 30, + .baseAttack = 80, + .baseDefense = 90, + .baseSpeed = 55, + .baseSpAttack = 55, + .baseSpDefense = 45, + .type1 = TYPE_ROCK, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 119, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_BATTLE_ARMOR, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_KABUTOPS] = + { + .baseHP = 60, + .baseAttack = 115, + .baseDefense = 105, + .baseSpeed = 80, + .baseSpAttack = 65, + .baseSpDefense = 70, + .type1 = TYPE_ROCK, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 201, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_BATTLE_ARMOR, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_AERODACTYL] = + { + .baseHP = 80, + .baseAttack = 105, + .baseDefense = 65, + .baseSpeed = 130, + .baseSpAttack = 60, + .baseSpDefense = 75, + .type1 = TYPE_ROCK, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 202, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 35, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_PRESSURE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_SNORLAX] = + { + .baseHP = 160, + .baseAttack = 110, + .baseDefense = 65, + .baseSpeed = 30, + .baseSpAttack = 65, + .baseSpDefense = 110, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 25, + .expYield = 154, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_LEFTOVERS, + .item2 = ITEM_LEFTOVERS, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 40, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_IMMUNITY, + .ability2 = ABILITY_THICK_FAT, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_ARTICUNO] = + { + .baseHP = 90, + .baseAttack = 85, + .baseDefense = 100, + .baseSpeed = 85, + .baseSpAttack = 95, + .baseSpDefense = 125, + .type1 = TYPE_ICE, + .type2 = TYPE_FLYING, + .catchRate = 3, + .expYield = 215, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_ZAPDOS] = + { + .baseHP = 90, + .baseAttack = 90, + .baseDefense = 85, + .baseSpeed = 100, + .baseSpAttack = 125, + .baseSpDefense = 90, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_FLYING, + .catchRate = 3, + .expYield = 216, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_MOLTRES] = + { + .baseHP = 90, + .baseAttack = 100, + .baseDefense = 90, + .baseSpeed = 90, + .baseSpAttack = 125, + .baseSpDefense = 85, + .type1 = TYPE_FIRE, + .type2 = TYPE_FLYING, + .catchRate = 3, + .expYield = 217, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_DRATINI] = + { + .baseHP = 41, + .baseAttack = 64, + .baseDefense = 45, + .baseSpeed = 50, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_DRAGON, + .type2 = TYPE_DRAGON, + .catchRate = 45, + .expYield = 67, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_SHED_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_DRAGONAIR] = + { + .baseHP = 61, + .baseAttack = 84, + .baseDefense = 65, + .baseSpeed = 70, + .baseSpAttack = 70, + .baseSpDefense = 70, + .type1 = TYPE_DRAGON, + .type2 = TYPE_DRAGON, + .catchRate = 45, + .expYield = 144, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_SHED_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_DRAGONITE] = + { + .baseHP = 91, + .baseAttack = 134, + .baseDefense = 95, + .baseSpeed = 80, + .baseSpAttack = 100, + .baseSpDefense = 100, + .type1 = TYPE_DRAGON, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 218, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_INNER_FOCUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_MEWTWO] = + { + .baseHP = 106, + .baseAttack = 110, + .baseDefense = 90, + .baseSpeed = 130, + .baseSpAttack = 154, + .baseSpDefense = 90, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 3, + .expYield = 220, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_MEW] = + { + .baseHP = 100, + .baseAttack = 100, + .baseDefense = 100, + .baseSpeed = 100, + .baseSpAttack = 100, + .baseSpDefense = 100, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 64, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_LUM_BERRY, + .item2 = ITEM_LUM_BERRY, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 100, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_CHIKORITA] = + { + .baseHP = 45, + .baseAttack = 49, + .baseDefense = 65, + .baseSpeed = 45, + .baseSpAttack = 49, + .baseSpDefense = 65, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 64, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_OVERGROW, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_BAYLEEF] = + { + .baseHP = 60, + .baseAttack = 62, + .baseDefense = 80, + .baseSpeed = 60, + .baseSpAttack = 63, + .baseSpDefense = 80, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 141, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_OVERGROW, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_MEGANIUM] = + { + .baseHP = 80, + .baseAttack = 82, + .baseDefense = 100, + .baseSpeed = 80, + .baseSpAttack = 83, + .baseSpDefense = 100, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 208, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_OVERGROW, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_CYNDAQUIL] = + { + .baseHP = 39, + .baseAttack = 52, + .baseDefense = 43, + .baseSpeed = 65, + .baseSpAttack = 60, + .baseSpDefense = 50, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 65, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_BLAZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_QUILAVA] = + { + .baseHP = 58, + .baseAttack = 64, + .baseDefense = 58, + .baseSpeed = 80, + .baseSpAttack = 80, + .baseSpDefense = 65, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 142, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_BLAZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_TYPHLOSION] = + { + .baseHP = 78, + .baseAttack = 84, + .baseDefense = 78, + .baseSpeed = 100, + .baseSpAttack = 109, + .baseSpDefense = 85, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 209, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_BLAZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_TOTODILE] = + { + .baseHP = 50, + .baseAttack = 65, + .baseDefense = 64, + .baseSpeed = 43, + .baseSpAttack = 44, + .baseSpDefense = 48, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 66, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_TORRENT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_CROCONAW] = + { + .baseHP = 65, + .baseAttack = 80, + .baseDefense = 80, + .baseSpeed = 58, + .baseSpAttack = 59, + .baseSpDefense = 63, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 143, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_TORRENT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = TRUE, + }, + + [SPECIES_FERALIGATR] = + { + .baseHP = 85, + .baseAttack = 105, + .baseDefense = 100, + .baseSpeed = 78, + .baseSpAttack = 79, + .baseSpDefense = 83, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 210, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_TORRENT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SENTRET] = + { + .baseHP = 35, + .baseAttack = 46, + .baseDefense = 34, + .baseSpeed = 20, + .baseSpAttack = 35, + .baseSpDefense = 45, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 255, + .expYield = 57, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_ORAN_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_KEEN_EYE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_FURRET] = + { + .baseHP = 85, + .baseAttack = 76, + .baseDefense = 64, + .baseSpeed = 90, + .baseSpAttack = 45, + .baseSpDefense = 55, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 90, + .expYield = 116, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_ORAN_BERRY, + .item2 = ITEM_SITRUS_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_KEEN_EYE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_HOOTHOOT] = + { + .baseHP = 60, + .baseAttack = 30, + .baseDefense = 30, + .baseSpeed = 50, + .baseSpAttack = 36, + .baseSpDefense = 56, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 255, + .expYield = 58, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_INSOMNIA, + .ability2 = ABILITY_KEEN_EYE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_NOCTOWL] = + { + .baseHP = 100, + .baseAttack = 50, + .baseDefense = 50, + .baseSpeed = 70, + .baseSpAttack = 76, + .baseSpDefense = 96, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 90, + .expYield = 162, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_INSOMNIA, + .ability2 = ABILITY_KEEN_EYE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_LEDYBA] = + { + .baseHP = 40, + .baseAttack = 20, + .baseDefense = 30, + .baseSpeed = 55, + .baseSpAttack = 40, + .baseSpDefense = 80, + .type1 = TYPE_BUG, + .type2 = TYPE_FLYING, + .catchRate = 255, + .expYield = 54, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWARM, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_LEDIAN] = + { + .baseHP = 55, + .baseAttack = 35, + .baseDefense = 50, + .baseSpeed = 85, + .baseSpAttack = 55, + .baseSpDefense = 110, + .type1 = TYPE_BUG, + .type2 = TYPE_FLYING, + .catchRate = 90, + .expYield = 134, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWARM, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_SPINARAK] = + { + .baseHP = 40, + .baseAttack = 60, + .baseDefense = 40, + .baseSpeed = 30, + .baseSpAttack = 40, + .baseSpDefense = 40, + .type1 = TYPE_BUG, + .type2 = TYPE_POISON, + .catchRate = 255, + .expYield = 54, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWARM, + .ability2 = ABILITY_INSOMNIA, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_ARIADOS] = + { + .baseHP = 70, + .baseAttack = 90, + .baseDefense = 70, + .baseSpeed = 40, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_BUG, + .type2 = TYPE_POISON, + .catchRate = 90, + .expYield = 134, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWARM, + .ability2 = ABILITY_INSOMNIA, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_CROBAT] = + { + .baseHP = 85, + .baseAttack = 90, + .baseDefense = 80, + .baseSpeed = 130, + .baseSpAttack = 70, + .baseSpDefense = 80, + .type1 = TYPE_POISON, + .type2 = TYPE_FLYING, + .catchRate = 90, + .expYield = 204, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 3, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_INNER_FOCUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_CHINCHOU] = + { + .baseHP = 75, + .baseAttack = 38, + .baseDefense = 38, + .baseSpeed = 67, + .baseSpAttack = 56, + .baseSpDefense = 56, + .type1 = TYPE_WATER, + .type2 = TYPE_ELECTRIC, + .catchRate = 190, + .expYield = 90, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_YELLOW_SHARD, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_VOLT_ABSORB, + .ability2 = ABILITY_ILLUMINATE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_LANTURN] = + { + .baseHP = 125, + .baseAttack = 58, + .baseDefense = 58, + .baseSpeed = 67, + .baseSpAttack = 76, + .baseSpDefense = 76, + .type1 = TYPE_WATER, + .type2 = TYPE_ELECTRIC, + .catchRate = 75, + .expYield = 156, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_YELLOW_SHARD, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_VOLT_ABSORB, + .ability2 = ABILITY_ILLUMINATE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_PICHU] = + { + .baseHP = 20, + .baseAttack = 40, + .baseDefense = 15, + .baseSpeed = 60, + .baseSpAttack = 35, + .baseSpDefense = 35, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 190, + .expYield = 42, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_ORAN_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_CLEFFA] = + { + .baseHP = 50, + .baseAttack = 25, + .baseDefense = 28, + .baseSpeed = 15, + .baseSpAttack = 45, + .baseSpDefense = 55, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 150, + .expYield = 37, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_LEPPA_BERRY, + .item2 = ITEM_MOON_STONE, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 10, + .friendship = 140, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_CUTE_CHARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_IGGLYBUFF] = + { + .baseHP = 90, + .baseAttack = 30, + .baseDefense = 15, + .baseSpeed = 15, + .baseSpAttack = 40, + .baseSpDefense = 20, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 170, + .expYield = 39, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_CUTE_CHARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = TRUE, + }, + + [SPECIES_TOGEPI] = + { + .baseHP = 35, + .baseAttack = 20, + .baseDefense = 65, + .baseSpeed = 20, + .baseSpAttack = 40, + .baseSpDefense = 65, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 190, + .expYield = 74, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_HUSTLE, + .ability2 = ABILITY_SERENE_GRACE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_TOGETIC] = + { + .baseHP = 55, + .baseAttack = 40, + .baseDefense = 85, + .baseSpeed = 40, + .baseSpAttack = 80, + .baseSpDefense = 105, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 75, + .expYield = 114, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_HUSTLE, + .ability2 = ABILITY_SERENE_GRACE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_NATU] = + { + .baseHP = 40, + .baseAttack = 50, + .baseDefense = 45, + .baseSpeed = 70, + .baseSpAttack = 70, + .baseSpDefense = 45, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_FLYING, + .catchRate = 190, + .expYield = 73, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 6, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_XATU] = + { + .baseHP = 65, + .baseAttack = 75, + .baseDefense = 70, + .baseSpeed = 95, + .baseSpAttack = 95, + .baseSpDefense = 70, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_FLYING, + .catchRate = 75, + .expYield = 171, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 8, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_MAREEP] = + { + .baseHP = 55, + .baseAttack = 40, + .baseDefense = 40, + .baseSpeed = 35, + .baseSpAttack = 65, + .baseSpDefense = 45, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 235, + .expYield = 59, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_FLAAFFY] = + { + .baseHP = 70, + .baseAttack = 55, + .baseDefense = 55, + .baseSpeed = 45, + .baseSpAttack = 80, + .baseSpDefense = 60, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 120, + .expYield = 117, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_AMPHAROS] = + { + .baseHP = 90, + .baseAttack = 75, + .baseDefense = 75, + .baseSpeed = 55, + .baseSpAttack = 115, + .baseSpDefense = 90, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 45, + .expYield = 194, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_BELLOSSOM] = + { + .baseHP = 75, + .baseAttack = 80, + .baseDefense = 85, + .baseSpeed = 50, + .baseSpAttack = 90, + .baseSpDefense = 100, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 184, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_MARILL] = + { + .baseHP = 70, + .baseAttack = 20, + .baseDefense = 50, + .baseSpeed = 40, + .baseSpAttack = 20, + .baseSpDefense = 50, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 190, + .expYield = 58, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_HUGE_POWER, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_AZUMARILL] = + { + .baseHP = 100, + .baseAttack = 50, + .baseDefense = 80, + .baseSpeed = 50, + .baseSpAttack = 50, + .baseSpDefense = 80, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 75, + .expYield = 153, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_HUGE_POWER, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SUDOWOODO] = + { + .baseHP = 70, + .baseAttack = 100, + .baseDefense = 115, + .baseSpeed = 30, + .baseSpAttack = 30, + .baseSpDefense = 65, + .type1 = TYPE_ROCK, + .type2 = TYPE_ROCK, + .catchRate = 65, + .expYield = 135, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_STURDY, + .ability2 = ABILITY_ROCK_HEAD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_POLITOED] = + { + .baseHP = 90, + .baseAttack = 75, + .baseDefense = 75, + .baseSpeed = 70, + .baseSpAttack = 90, + .baseSpDefense = 100, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 185, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_WATER_ABSORB, + .ability2 = ABILITY_DAMP, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = TRUE, + }, + + [SPECIES_HOPPIP] = + { + .baseHP = 35, + .baseAttack = 35, + .baseDefense = 40, + .baseSpeed = 50, + .baseSpAttack = 35, + .baseSpDefense = 55, + .type1 = TYPE_GRASS, + .type2 = TYPE_FLYING, + .catchRate = 255, + .expYield = 74, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_SKIPLOOM] = + { + .baseHP = 55, + .baseAttack = 45, + .baseDefense = 50, + .baseSpeed = 80, + .baseSpAttack = 45, + .baseSpDefense = 65, + .type1 = TYPE_GRASS, + .type2 = TYPE_FLYING, + .catchRate = 120, + .expYield = 136, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_JUMPLUFF] = + { + .baseHP = 75, + .baseAttack = 55, + .baseDefense = 70, + .baseSpeed = 110, + .baseSpAttack = 55, + .baseSpDefense = 85, + .type1 = TYPE_GRASS, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 176, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 3, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_AIPOM] = + { + .baseHP = 55, + .baseAttack = 70, + .baseDefense = 55, + .baseSpeed = 85, + .baseSpAttack = 40, + .baseSpDefense = 55, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 94, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_PICKUP, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_SUNKERN] = + { + .baseHP = 30, + .baseAttack = 30, + .baseDefense = 30, + .baseSpeed = 30, + .baseSpAttack = 30, + .baseSpDefense = 30, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 235, + .expYield = 52, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_SUNFLORA] = + { + .baseHP = 75, + .baseAttack = 75, + .baseDefense = 55, + .baseSpeed = 30, + .baseSpAttack = 105, + .baseSpDefense = 85, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 120, + .expYield = 146, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_YANMA] = + { + .baseHP = 65, + .baseAttack = 65, + .baseDefense = 45, + .baseSpeed = 95, + .baseSpAttack = 75, + .baseSpDefense = 45, + .type1 = TYPE_BUG, + .type2 = TYPE_FLYING, + .catchRate = 75, + .expYield = 147, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SPEED_BOOST, + .ability2 = ABILITY_COMPOUND_EYES, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_WOOPER] = + { + .baseHP = 55, + .baseAttack = 45, + .baseDefense = 45, + .baseSpeed = 15, + .baseSpAttack = 25, + .baseSpDefense = 25, + .type1 = TYPE_WATER, + .type2 = TYPE_GROUND, + .catchRate = 255, + .expYield = 52, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_DAMP, + .ability2 = ABILITY_WATER_ABSORB, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_QUAGSIRE] = + { + .baseHP = 95, + .baseAttack = 85, + .baseDefense = 85, + .baseSpeed = 35, + .baseSpAttack = 65, + .baseSpDefense = 65, + .type1 = TYPE_WATER, + .type2 = TYPE_GROUND, + .catchRate = 90, + .expYield = 137, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_DAMP, + .ability2 = ABILITY_WATER_ABSORB, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_ESPEON] = + { + .baseHP = 65, + .baseAttack = 65, + .baseDefense = 60, + .baseSpeed = 110, + .baseSpAttack = 130, + .baseSpDefense = 95, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 197, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 35, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_UMBREON] = + { + .baseHP = 95, + .baseAttack = 65, + .baseDefense = 110, + .baseSpeed = 65, + .baseSpAttack = 60, + .baseSpDefense = 130, + .type1 = TYPE_DARK, + .type2 = TYPE_DARK, + .catchRate = 45, + .expYield = 197, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 35, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_MURKROW] = + { + .baseHP = 60, + .baseAttack = 85, + .baseDefense = 42, + .baseSpeed = 91, + .baseSpAttack = 85, + .baseSpDefense = 42, + .type1 = TYPE_DARK, + .type2 = TYPE_FLYING, + .catchRate = 30, + .expYield = 107, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_INSOMNIA, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_SLOWKING] = + { + .baseHP = 95, + .baseAttack = 75, + .baseDefense = 80, + .baseSpeed = 30, + .baseSpAttack = 100, + .baseSpDefense = 110, + .type1 = TYPE_WATER, + .type2 = TYPE_PSYCHIC, + .catchRate = 70, + .expYield = 164, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_OWN_TEMPO, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_MISDREAVUS] = + { + .baseHP = 60, + .baseAttack = 60, + .baseDefense = 60, + .baseSpeed = 85, + .baseSpAttack = 85, + .baseSpDefense = 85, + .type1 = TYPE_GHOST, + .type2 = TYPE_GHOST, + .catchRate = 45, + .expYield = 147, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_SPELL_TAG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_UNOWN] = + { + .baseHP = 48, + .baseAttack = 72, + .baseDefense = 48, + .baseSpeed = 48, + .baseSpAttack = 72, + .baseSpDefense = 48, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 225, + .expYield = 61, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 40, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = TRUE, + }, + + [SPECIES_WOBBUFFET] = + { + .baseHP = 190, + .baseAttack = 33, + .baseDefense = 58, + .baseSpeed = 33, + .baseSpAttack = 33, + .baseSpDefense = 58, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 177, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_SHADOW_TAG, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 4, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_GIRAFARIG] = + { + .baseHP = 70, + .baseAttack = 80, + .baseDefense = 65, + .baseSpeed = 85, + .baseSpAttack = 90, + .baseSpDefense = 65, + .type1 = TYPE_NORMAL, + .type2 = TYPE_PSYCHIC, + .catchRate = 60, + .expYield = 149, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_PERSIM_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_INNER_FOCUS, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 4, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_PINECO] = + { + .baseHP = 50, + .baseAttack = 65, + .baseDefense = 90, + .baseSpeed = 15, + .baseSpAttack = 35, + .baseSpDefense = 35, + .type1 = TYPE_BUG, + .type2 = TYPE_BUG, + .catchRate = 190, + .expYield = 60, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_STURDY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_FORRETRESS] = + { + .baseHP = 75, + .baseAttack = 90, + .baseDefense = 140, + .baseSpeed = 40, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_BUG, + .type2 = TYPE_STEEL, + .catchRate = 75, + .expYield = 118, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_STURDY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_DUNSPARCE] = + { + .baseHP = 100, + .baseAttack = 70, + .baseDefense = 70, + .baseSpeed = 45, + .baseSpAttack = 65, + .baseSpDefense = 65, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 190, + .expYield = 75, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SERENE_GRACE, + .ability2 = ABILITY_RUN_AWAY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_GLIGAR] = + { + .baseHP = 65, + .baseAttack = 75, + .baseDefense = 105, + .baseSpeed = 85, + .baseSpAttack = 35, + .baseSpDefense = 65, + .type1 = TYPE_GROUND, + .type2 = TYPE_FLYING, + .catchRate = 60, + .expYield = 108, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_HYPER_CUTTER, + .ability2 = ABILITY_SAND_VEIL, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_STEELIX] = + { + .baseHP = 75, + .baseAttack = 85, + .baseDefense = 200, + .baseSpeed = 30, + .baseSpAttack = 55, + .baseSpDefense = 65, + .type1 = TYPE_STEEL, + .type2 = TYPE_GROUND, + .catchRate = 25, + .expYield = 196, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_STURDY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_SNUBBULL] = + { + .baseHP = 60, + .baseAttack = 80, + .baseDefense = 50, + .baseSpeed = 30, + .baseSpAttack = 40, + .baseSpDefense = 40, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 190, + .expYield = 63, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_RUN_AWAY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_GRANBULL] = + { + .baseHP = 90, + .baseAttack = 120, + .baseDefense = 75, + .baseSpeed = 45, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 75, + .expYield = 178, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_INTIMIDATE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_QWILFISH] = + { + .baseHP = 65, + .baseAttack = 95, + .baseDefense = 75, + .baseSpeed = 85, + .baseSpAttack = 55, + .baseSpDefense = 55, + .type1 = TYPE_WATER, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 100, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_POISON_POINT, + .ability2 = ABILITY_SWIFT_SWIM, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_SCIZOR] = + { + .baseHP = 70, + .baseAttack = 130, + .baseDefense = 100, + .baseSpeed = 65, + .baseSpAttack = 55, + .baseSpDefense = 80, + .type1 = TYPE_BUG, + .type2 = TYPE_STEEL, + .catchRate = 25, + .expYield = 200, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_SHUCKLE] = + { + .baseHP = 20, + .baseAttack = 10, + .baseDefense = 230, + .baseSpeed = 5, + .baseSpAttack = 10, + .baseSpDefense = 230, + .type1 = TYPE_BUG, + .type2 = TYPE_ROCK, + .catchRate = 190, + .expYield = 80, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_ORAN_BERRY, + .item2 = ITEM_ORAN_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_STURDY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_HERACROSS] = + { + .baseHP = 80, + .baseAttack = 125, + .baseDefense = 75, + .baseSpeed = 85, + .baseSpAttack = 40, + .baseSpDefense = 95, + .type1 = TYPE_BUG, + .type2 = TYPE_FIGHTING, + .catchRate = 45, + .expYield = 200, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWARM, + .ability2 = ABILITY_GUTS, + .safariZoneFleeRate = 8, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SNEASEL] = + { + .baseHP = 55, + .baseAttack = 95, + .baseDefense = 55, + .baseSpeed = 115, + .baseSpAttack = 35, + .baseSpDefense = 75, + .type1 = TYPE_DARK, + .type2 = TYPE_ICE, + .catchRate = 60, + .expYield = 132, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_QUICK_CLAW, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_INNER_FOCUS, + .ability2 = ABILITY_KEEN_EYE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = TRUE, + }, + + [SPECIES_TEDDIURSA] = + { + .baseHP = 60, + .baseAttack = 80, + .baseDefense = 50, + .baseSpeed = 40, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 120, + .expYield = 124, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_PICKUP, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = TRUE, + }, + + [SPECIES_URSARING] = + { + .baseHP = 90, + .baseAttack = 130, + .baseDefense = 75, + .baseSpeed = 55, + .baseSpAttack = 75, + .baseSpDefense = 75, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 60, + .expYield = 189, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_GUTS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_SLUGMA] = + { + .baseHP = 40, + .baseAttack = 40, + .baseDefense = 40, + .baseSpeed = 20, + .baseSpAttack = 70, + .baseSpDefense = 40, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 190, + .expYield = 78, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_MAGMA_ARMOR, + .ability2 = ABILITY_FLAME_BODY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_MAGCARGO] = + { + .baseHP = 50, + .baseAttack = 50, + .baseDefense = 120, + .baseSpeed = 30, + .baseSpAttack = 80, + .baseSpDefense = 80, + .type1 = TYPE_FIRE, + .type2 = TYPE_ROCK, + .catchRate = 75, + .expYield = 154, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_MAGMA_ARMOR, + .ability2 = ABILITY_FLAME_BODY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_SWINUB] = + { + .baseHP = 50, + .baseAttack = 50, + .baseDefense = 40, + .baseSpeed = 50, + .baseSpAttack = 30, + .baseSpDefense = 30, + .type1 = TYPE_ICE, + .type2 = TYPE_GROUND, + .catchRate = 225, + .expYield = 78, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_PILOSWINE] = + { + .baseHP = 100, + .baseAttack = 100, + .baseDefense = 80, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_ICE, + .type2 = TYPE_GROUND, + .catchRate = 75, + .expYield = 160, + .evYield_HP = 1, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_CORSOLA] = + { + .baseHP = 55, + .baseAttack = 55, + .baseDefense = 85, + .baseSpeed = 35, + .baseSpAttack = 65, + .baseSpDefense = 85, + .type1 = TYPE_WATER, + .type2 = TYPE_ROCK, + .catchRate = 60, + .expYield = 113, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_RED_SHARD, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_HUSTLE, + .ability2 = ABILITY_NATURAL_CURE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_REMORAID] = + { + .baseHP = 35, + .baseAttack = 65, + .baseDefense = 35, + .baseSpeed = 65, + .baseSpAttack = 65, + .baseSpDefense = 35, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 190, + .expYield = 78, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_HUSTLE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_OCTILLERY] = + { + .baseHP = 75, + .baseAttack = 105, + .baseDefense = 75, + .baseSpeed = 45, + .baseSpAttack = 105, + .baseSpDefense = 75, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 75, + .expYield = 164, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_SUCTION_CUPS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_DELIBIRD] = + { + .baseHP = 45, + .baseAttack = 55, + .baseDefense = 45, + .baseSpeed = 75, + .baseSpAttack = 65, + .baseSpDefense = 45, + .type1 = TYPE_ICE, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 183, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_VITAL_SPIRIT, + .ability2 = ABILITY_HUSTLE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_MANTINE] = + { + .baseHP = 65, + .baseAttack = 40, + .baseDefense = 70, + .baseSpeed = 70, + .baseSpAttack = 80, + .baseSpDefense = 140, + .type1 = TYPE_WATER, + .type2 = TYPE_FLYING, + .catchRate = 25, + .expYield = 168, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_WATER_ABSORB, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_SKARMORY] = + { + .baseHP = 65, + .baseAttack = 80, + .baseDefense = 140, + .baseSpeed = 70, + .baseSpAttack = 40, + .baseSpDefense = 70, + .type1 = TYPE_STEEL, + .type2 = TYPE_FLYING, + .catchRate = 25, + .expYield = 168, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_STURDY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_HOUNDOUR] = + { + .baseHP = 45, + .baseAttack = 60, + .baseDefense = 30, + .baseSpeed = 65, + .baseSpAttack = 80, + .baseSpDefense = 50, + .type1 = TYPE_DARK, + .type2 = TYPE_FIRE, + .catchRate = 120, + .expYield = 114, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_EARLY_BIRD, + .ability2 = ABILITY_FLASH_FIRE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_HOUNDOOM] = + { + .baseHP = 75, + .baseAttack = 90, + .baseDefense = 50, + .baseSpeed = 95, + .baseSpAttack = 110, + .baseSpDefense = 80, + .type1 = TYPE_DARK, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 204, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_EARLY_BIRD, + .ability2 = ABILITY_FLASH_FIRE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_KINGDRA] = + { + .baseHP = 75, + .baseAttack = 95, + .baseDefense = 95, + .baseSpeed = 85, + .baseSpAttack = 95, + .baseSpDefense = 95, + .type1 = TYPE_WATER, + .type2 = TYPE_DRAGON, + .catchRate = 45, + .expYield = 207, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_PHANPY] = + { + .baseHP = 90, + .baseAttack = 60, + .baseDefense = 60, + .baseSpeed = 40, + .baseSpAttack = 40, + .baseSpDefense = 40, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 120, + .expYield = 124, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_PICKUP, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 10, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_DONPHAN] = + { + .baseHP = 90, + .baseAttack = 120, + .baseDefense = 120, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 60, + .expYield = 189, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_STURDY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_PORYGON2] = + { + .baseHP = 85, + .baseAttack = 80, + .baseDefense = 90, + .baseSpeed = 60, + .baseSpAttack = 105, + .baseSpDefense = 95, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 180, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_TRACE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_STANTLER] = + { + .baseHP = 73, + .baseAttack = 95, + .baseDefense = 62, + .baseSpeed = 85, + .baseSpAttack = 85, + .baseSpDefense = 65, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 165, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_SMEARGLE] = + { + .baseHP = 55, + .baseAttack = 20, + .baseDefense = 35, + .baseSpeed = 75, + .baseSpAttack = 20, + .baseSpDefense = 45, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 106, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_OWN_TEMPO, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_TYROGUE] = + { + .baseHP = 35, + .baseAttack = 35, + .baseDefense = 35, + .baseSpeed = 35, + .baseSpAttack = 35, + .baseSpDefense = 35, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 75, + .expYield = 91, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_MALE, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_GUTS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_HITMONTOP] = + { + .baseHP = 50, + .baseAttack = 95, + .baseDefense = 95, + .baseSpeed = 70, + .baseSpAttack = 35, + .baseSpDefense = 110, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 45, + .expYield = 138, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_MALE, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_SMOOCHUM] = + { + .baseHP = 45, + .baseAttack = 30, + .baseDefense = 15, + .baseSpeed = 65, + .baseSpAttack = 85, + .baseSpDefense = 65, + .type1 = TYPE_ICE, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 87, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_ASPEAR_BERRY, + .item2 = ITEM_ASPEAR_BERRY, + .genderRatio = MON_FEMALE, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_ELEKID] = + { + .baseHP = 45, + .baseAttack = 63, + .baseDefense = 37, + .baseSpeed = 95, + .baseSpAttack = 65, + .baseSpDefense = 55, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 45, + .expYield = 106, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = TRUE, + }, + + [SPECIES_MAGBY] = + { + .baseHP = 45, + .baseAttack = 75, + .baseDefense = 37, + .baseSpeed = 83, + .baseSpAttack = 70, + .baseSpDefense = 55, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 117, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_FLAME_BODY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_MILTANK] = + { + .baseHP = 95, + .baseAttack = 80, + .baseDefense = 105, + .baseSpeed = 100, + .baseSpAttack = 40, + .baseSpDefense = 70, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 200, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_MOOMOO_MILK, + .item2 = ITEM_MOOMOO_MILK, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_BLISSEY] = + { + .baseHP = 255, + .baseAttack = 10, + .baseDefense = 10, + .baseSpeed = 55, + .baseSpAttack = 75, + .baseSpDefense = 135, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 30, + .expYield = 255, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_LUCKY_EGG, + .genderRatio = MON_FEMALE, + .eggCycles = 40, + .friendship = 140, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_NATURAL_CURE, + .ability2 = ABILITY_SERENE_GRACE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_RAIKOU] = + { + .baseHP = 90, + .baseAttack = 85, + .baseDefense = 75, + .baseSpeed = 115, + .baseSpAttack = 115, + .baseSpDefense = 100, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 3, + .expYield = 216, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_ENTEI] = + { + .baseHP = 115, + .baseAttack = 115, + .baseDefense = 85, + .baseSpeed = 100, + .baseSpAttack = 90, + .baseSpDefense = 75, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 3, + .expYield = 217, + .evYield_HP = 1, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_SUICUNE] = + { + .baseHP = 100, + .baseAttack = 75, + .baseDefense = 115, + .baseSpeed = 85, + .baseSpAttack = 90, + .baseSpDefense = 115, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 3, + .expYield = 215, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_LARVITAR] = + { + .baseHP = 50, + .baseAttack = 64, + .baseDefense = 50, + .baseSpeed = 41, + .baseSpAttack = 45, + .baseSpDefense = 50, + .type1 = TYPE_ROCK, + .type2 = TYPE_GROUND, + .catchRate = 45, + .expYield = 67, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_GUTS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_PUPITAR] = + { + .baseHP = 70, + .baseAttack = 84, + .baseDefense = 70, + .baseSpeed = 51, + .baseSpAttack = 65, + .baseSpDefense = 70, + .type1 = TYPE_ROCK, + .type2 = TYPE_GROUND, + .catchRate = 45, + .expYield = 144, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_SHED_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_TYRANITAR] = + { + .baseHP = 100, + .baseAttack = 134, + .baseDefense = 110, + .baseSpeed = 61, + .baseSpAttack = 95, + .baseSpDefense = 100, + .type1 = TYPE_ROCK, + .type2 = TYPE_DARK, + .catchRate = 45, + .expYield = 218, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_SAND_STREAM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_LUGIA] = + { + .baseHP = 106, + .baseAttack = 90, + .baseDefense = 130, + .baseSpeed = 110, + .baseSpAttack = 90, + .baseSpDefense = 154, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_FLYING, + .catchRate = 3, + .expYield = 220, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_HO_OH] = + { + .baseHP = 106, + .baseAttack = 130, + .baseDefense = 90, + .baseSpeed = 90, + .baseSpAttack = 110, + .baseSpDefense = 154, + .type1 = TYPE_FIRE, + .type2 = TYPE_FLYING, + .catchRate = 3, + .expYield = 220, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_SACRED_ASH, + .item2 = ITEM_SACRED_ASH, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_CELEBI] = + { + .baseHP = 100, + .baseAttack = 100, + .baseDefense = 100, + .baseSpeed = 100, + .baseSpAttack = 100, + .baseSpDefense = 100, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 64, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_LUM_BERRY, + .item2 = ITEM_LUM_BERRY, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 100, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NATURAL_CURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_B] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_C] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_D] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_E] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_F] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_G] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_H] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_I] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_J] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_K] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_L] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_M] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_N] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_O] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_P] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_Q] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_R] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_S] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_T] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_U] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_V] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_W] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_X] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_Y] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_Z] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_TREECKO] = + { + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 35, + .baseSpeed = 70, + .baseSpAttack = 65, + .baseSpDefense = 55, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 65, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_OVERGROW, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_GROVYLE] = + { + .baseHP = 50, + .baseAttack = 65, + .baseDefense = 45, + .baseSpeed = 95, + .baseSpAttack = 85, + .baseSpDefense = 65, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 141, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_OVERGROW, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_SCEPTILE] = + { + .baseHP = 70, + .baseAttack = 85, + .baseDefense = 65, + .baseSpeed = 120, + .baseSpAttack = 105, + .baseSpDefense = 85, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 208, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 3, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_OVERGROW, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_TORCHIC] = + { + .baseHP = 45, + .baseAttack = 60, + .baseDefense = 40, + .baseSpeed = 45, + .baseSpAttack = 70, + .baseSpDefense = 50, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 65, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_BLAZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_COMBUSKEN] = + { + .baseHP = 60, + .baseAttack = 85, + .baseDefense = 60, + .baseSpeed = 55, + .baseSpAttack = 85, + .baseSpDefense = 60, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIGHTING, + .catchRate = 45, + .expYield = 142, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_BLAZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_BLAZIKEN] = + { + .baseHP = 80, + .baseAttack = 120, + .baseDefense = 70, + .baseSpeed = 80, + .baseSpAttack = 110, + .baseSpDefense = 70, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIGHTING, + .catchRate = 45, + .expYield = 209, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_BLAZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_MUDKIP] = + { + .baseHP = 50, + .baseAttack = 70, + .baseDefense = 50, + .baseSpeed = 40, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 65, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_TORRENT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_MARSHTOMP] = + { + .baseHP = 70, + .baseAttack = 85, + .baseDefense = 70, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 70, + .type1 = TYPE_WATER, + .type2 = TYPE_GROUND, + .catchRate = 45, + .expYield = 143, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_TORRENT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SWAMPERT] = + { + .baseHP = 100, + .baseAttack = 110, + .baseDefense = 90, + .baseSpeed = 60, + .baseSpAttack = 85, + .baseSpDefense = 90, + .type1 = TYPE_WATER, + .type2 = TYPE_GROUND, + .catchRate = 45, + .expYield = 210, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_TORRENT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_POOCHYENA] = + { + .baseHP = 35, + .baseAttack = 55, + .baseDefense = 35, + .baseSpeed = 35, + .baseSpAttack = 30, + .baseSpDefense = 30, + .type1 = TYPE_DARK, + .type2 = TYPE_DARK, + .catchRate = 255, + .expYield = 55, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_PECHA_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_MIGHTYENA] = + { + .baseHP = 70, + .baseAttack = 90, + .baseDefense = 70, + .baseSpeed = 70, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_DARK, + .type2 = TYPE_DARK, + .catchRate = 127, + .expYield = 128, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_PECHA_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_ZIGZAGOON] = + { + .baseHP = 38, + .baseAttack = 30, + .baseDefense = 41, + .baseSpeed = 60, + .baseSpAttack = 30, + .baseSpDefense = 41, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 255, + .expYield = 60, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_ORAN_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_PICKUP, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_LINOONE] = + { + .baseHP = 78, + .baseAttack = 70, + .baseDefense = 61, + .baseSpeed = 100, + .baseSpAttack = 50, + .baseSpDefense = 61, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 90, + .expYield = 128, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_ORAN_BERRY, + .item2 = ITEM_SITRUS_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_PICKUP, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_WURMPLE] = + { + .baseHP = 45, + .baseAttack = 45, + .baseDefense = 35, + .baseSpeed = 20, + .baseSpAttack = 20, + .baseSpDefense = 30, + .type1 = TYPE_BUG, + .type2 = TYPE_BUG, + .catchRate = 255, + .expYield = 54, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SHIELD_DUST, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_SILCOON] = + { + .baseHP = 50, + .baseAttack = 35, + .baseDefense = 55, + .baseSpeed = 15, + .baseSpAttack = 25, + .baseSpDefense = 25, + .type1 = TYPE_BUG, + .type2 = TYPE_BUG, + .catchRate = 120, + .expYield = 71, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SHED_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_BEAUTIFLY] = + { + .baseHP = 60, + .baseAttack = 70, + .baseDefense = 50, + .baseSpeed = 65, + .baseSpAttack = 90, + .baseSpDefense = 50, + .type1 = TYPE_BUG, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 161, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SILVER_POWDER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_CASCOON] = + { + .baseHP = 50, + .baseAttack = 35, + .baseDefense = 55, + .baseSpeed = 15, + .baseSpAttack = 25, + .baseSpDefense = 25, + .type1 = TYPE_BUG, + .type2 = TYPE_BUG, + .catchRate = 120, + .expYield = 72, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SHED_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_DUSTOX] = + { + .baseHP = 60, + .baseAttack = 50, + .baseDefense = 70, + .baseSpeed = 65, + .baseSpAttack = 50, + .baseSpDefense = 90, + .type1 = TYPE_BUG, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 160, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_SILVER_POWDER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SHIELD_DUST, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_LOTAD] = + { + .baseHP = 40, + .baseAttack = 30, + .baseDefense = 30, + .baseSpeed = 30, + .baseSpAttack = 40, + .baseSpDefense = 50, + .type1 = TYPE_WATER, + .type2 = TYPE_GRASS, + .catchRate = 255, + .expYield = 74, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_RAIN_DISH, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_LOMBRE] = + { + .baseHP = 60, + .baseAttack = 50, + .baseDefense = 50, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 70, + .type1 = TYPE_WATER, + .type2 = TYPE_GRASS, + .catchRate = 120, + .expYield = 141, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_RAIN_DISH, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_LUDICOLO] = + { + .baseHP = 80, + .baseAttack = 70, + .baseDefense = 70, + .baseSpeed = 70, + .baseSpAttack = 90, + .baseSpDefense = 100, + .type1 = TYPE_WATER, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 181, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_RAIN_DISH, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_SEEDOT] = + { + .baseHP = 40, + .baseAttack = 40, + .baseDefense = 50, + .baseSpeed = 30, + .baseSpAttack = 30, + .baseSpDefense = 30, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 255, + .expYield = 74, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_NUZLEAF] = + { + .baseHP = 70, + .baseAttack = 70, + .baseDefense = 40, + .baseSpeed = 60, + .baseSpAttack = 60, + .baseSpDefense = 40, + .type1 = TYPE_GRASS, + .type2 = TYPE_DARK, + .catchRate = 120, + .expYield = 141, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_SHIFTRY] = + { + .baseHP = 90, + .baseAttack = 100, + .baseDefense = 60, + .baseSpeed = 80, + .baseSpAttack = 90, + .baseSpDefense = 60, + .type1 = TYPE_GRASS, + .type2 = TYPE_DARK, + .catchRate = 45, + .expYield = 181, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_NINCADA] = + { + .baseHP = 31, + .baseAttack = 45, + .baseDefense = 90, + .baseSpeed = 40, + .baseSpAttack = 30, + .baseSpDefense = 30, + .type1 = TYPE_BUG, + .type2 = TYPE_GROUND, + .catchRate = 255, + .expYield = 65, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_COMPOUND_EYES, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_NINJASK] = + { + .baseHP = 61, + .baseAttack = 90, + .baseDefense = 45, + .baseSpeed = 160, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_BUG, + .type2 = TYPE_FLYING, + .catchRate = 120, + .expYield = 155, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SPEED_BOOST, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_SHEDINJA] = + { + .baseHP = 1, + .baseAttack = 90, + .baseDefense = 45, + .baseSpeed = 40, + .baseSpAttack = 30, + .baseSpDefense = 30, + .type1 = TYPE_BUG, + .type2 = TYPE_GHOST, + .catchRate = 45, + .expYield = 95, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_WONDER_GUARD, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_TAILLOW] = + { + .baseHP = 40, + .baseAttack = 55, + .baseDefense = 30, + .baseSpeed = 85, + .baseSpAttack = 30, + .baseSpDefense = 30, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 200, + .expYield = 59, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_GUTS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SWELLOW] = + { + .baseHP = 60, + .baseAttack = 85, + .baseDefense = 60, + .baseSpeed = 125, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 162, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_GUTS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SHROOMISH] = + { + .baseHP = 60, + .baseAttack = 40, + .baseDefense = 60, + .baseSpeed = 35, + .baseSpAttack = 40, + .baseSpDefense = 60, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 255, + .expYield = 65, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_EFFECT_SPORE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_BRELOOM] = + { + .baseHP = 60, + .baseAttack = 130, + .baseDefense = 80, + .baseSpeed = 70, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_GRASS, + .type2 = TYPE_FIGHTING, + .catchRate = 90, + .expYield = 165, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_EFFECT_SPORE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_SPINDA] = + { + .baseHP = 60, + .baseAttack = 60, + .baseDefense = 60, + .baseSpeed = 60, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 255, + .expYield = 85, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_CHESTO_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_OWN_TEMPO, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = TRUE, + }, + + [SPECIES_WINGULL] = + { + .baseHP = 40, + .baseAttack = 30, + .baseDefense = 30, + .baseSpeed = 85, + .baseSpAttack = 55, + .baseSpDefense = 30, + .type1 = TYPE_WATER, + .type2 = TYPE_FLYING, + .catchRate = 190, + .expYield = 64, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_PELIPPER] = + { + .baseHP = 60, + .baseAttack = 50, + .baseDefense = 100, + .baseSpeed = 65, + .baseSpAttack = 85, + .baseSpDefense = 70, + .type1 = TYPE_WATER, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 164, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_SURSKIT] = + { + .baseHP = 40, + .baseAttack = 30, + .baseDefense = 32, + .baseSpeed = 65, + .baseSpAttack = 50, + .baseSpDefense = 52, + .type1 = TYPE_BUG, + .type2 = TYPE_WATER, + .catchRate = 200, + .expYield = 63, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_MASQUERAIN] = + { + .baseHP = 70, + .baseAttack = 60, + .baseDefense = 62, + .baseSpeed = 60, + .baseSpAttack = 80, + .baseSpDefense = 82, + .type1 = TYPE_BUG, + .type2 = TYPE_FLYING, + .catchRate = 75, + .expYield = 128, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_SILVER_POWDER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_WAILMER] = + { + .baseHP = 130, + .baseAttack = 70, + .baseDefense = 35, + .baseSpeed = 60, + .baseSpAttack = 70, + .baseSpDefense = 35, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 125, + .expYield = 137, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_WATER_VEIL, + .ability2 = ABILITY_OBLIVIOUS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_WAILORD] = + { + .baseHP = 170, + .baseAttack = 90, + .baseDefense = 45, + .baseSpeed = 60, + .baseSpAttack = 90, + .baseSpDefense = 45, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 60, + .expYield = 206, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_WATER_VEIL, + .ability2 = ABILITY_OBLIVIOUS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SKITTY] = + { + .baseHP = 50, + .baseAttack = 45, + .baseDefense = 45, + .baseSpeed = 50, + .baseSpAttack = 35, + .baseSpDefense = 35, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 255, + .expYield = 65, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_LEPPA_BERRY, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_CUTE_CHARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_DELCATTY] = + { + .baseHP = 70, + .baseAttack = 65, + .baseDefense = 65, + .baseSpeed = 70, + .baseSpAttack = 55, + .baseSpDefense = 55, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 60, + .expYield = 138, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_LEPPA_BERRY, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_CUTE_CHARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_KECLEON] = + { + .baseHP = 60, + .baseAttack = 90, + .baseDefense = 70, + .baseSpeed = 40, + .baseSpAttack = 60, + .baseSpDefense = 120, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 200, + .expYield = 132, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_PERSIM_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_COLOR_CHANGE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_BALTOY] = + { + .baseHP = 40, + .baseAttack = 40, + .baseDefense = 55, + .baseSpeed = 55, + .baseSpAttack = 40, + .baseSpDefense = 70, + .type1 = TYPE_GROUND, + .type2 = TYPE_PSYCHIC, + .catchRate = 255, + .expYield = 58, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_CLAYDOL] = + { + .baseHP = 60, + .baseAttack = 70, + .baseDefense = 105, + .baseSpeed = 75, + .baseSpAttack = 70, + .baseSpDefense = 120, + .type1 = TYPE_GROUND, + .type2 = TYPE_PSYCHIC, + .catchRate = 90, + .expYield = 189, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_NOSEPASS] = + { + .baseHP = 30, + .baseAttack = 45, + .baseDefense = 135, + .baseSpeed = 30, + .baseSpAttack = 45, + .baseSpDefense = 90, + .type1 = TYPE_ROCK, + .type2 = TYPE_ROCK, + .catchRate = 255, + .expYield = 108, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_STURDY, + .ability2 = ABILITY_MAGNET_PULL, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_TORKOAL] = + { + .baseHP = 70, + .baseAttack = 85, + .baseDefense = 140, + .baseSpeed = 20, + .baseSpAttack = 85, + .baseSpDefense = 70, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 90, + .expYield = 161, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_WHITE_SMOKE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_SABLEYE] = + { + .baseHP = 50, + .baseAttack = 75, + .baseDefense = 75, + .baseSpeed = 50, + .baseSpAttack = 65, + .baseSpDefense = 65, + .type1 = TYPE_DARK, + .type2 = TYPE_GHOST, + .catchRate = 45, + .expYield = 98, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_BARBOACH] = + { + .baseHP = 50, + .baseAttack = 48, + .baseDefense = 43, + .baseSpeed = 60, + .baseSpAttack = 46, + .baseSpDefense = 41, + .type1 = TYPE_WATER, + .type2 = TYPE_GROUND, + .catchRate = 190, + .expYield = 92, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_WHISCASH] = + { + .baseHP = 110, + .baseAttack = 78, + .baseDefense = 73, + .baseSpeed = 60, + .baseSpAttack = 76, + .baseSpDefense = 71, + .type1 = TYPE_WATER, + .type2 = TYPE_GROUND, + .catchRate = 75, + .expYield = 158, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_LUVDISC] = + { + .baseHP = 43, + .baseAttack = 30, + .baseDefense = 55, + .baseSpeed = 97, + .baseSpAttack = 40, + .baseSpDefense = 65, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 225, + .expYield = 110, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_HEART_SCALE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_CORPHISH] = + { + .baseHP = 43, + .baseAttack = 80, + .baseDefense = 65, + .baseSpeed = 35, + .baseSpAttack = 50, + .baseSpDefense = 35, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 205, + .expYield = 111, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_HYPER_CUTTER, + .ability2 = ABILITY_SHELL_ARMOR, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_CRAWDAUNT] = + { + .baseHP = 63, + .baseAttack = 120, + .baseDefense = 85, + .baseSpeed = 55, + .baseSpAttack = 90, + .baseSpDefense = 55, + .type1 = TYPE_WATER, + .type2 = TYPE_DARK, + .catchRate = 155, + .expYield = 161, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_HYPER_CUTTER, + .ability2 = ABILITY_SHELL_ARMOR, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_FEEBAS] = + { + .baseHP = 20, + .baseAttack = 15, + .baseDefense = 20, + .baseSpeed = 80, + .baseSpAttack = 10, + .baseSpDefense = 55, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 255, + .expYield = 61, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_MILOTIC] = + { + .baseHP = 95, + .baseAttack = 60, + .baseDefense = 79, + .baseSpeed = 81, + .baseSpAttack = 100, + .baseSpDefense = 125, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 60, + .expYield = 213, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_MARVEL_SCALE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_CARVANHA] = + { + .baseHP = 45, + .baseAttack = 90, + .baseDefense = 20, + .baseSpeed = 65, + .baseSpAttack = 65, + .baseSpDefense = 20, + .type1 = TYPE_WATER, + .type2 = TYPE_DARK, + .catchRate = 225, + .expYield = 88, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_ROUGH_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_SHARPEDO] = + { + .baseHP = 70, + .baseAttack = 120, + .baseDefense = 40, + .baseSpeed = 95, + .baseSpAttack = 95, + .baseSpDefense = 40, + .type1 = TYPE_WATER, + .type2 = TYPE_DARK, + .catchRate = 60, + .expYield = 175, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_ROUGH_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_TRAPINCH] = + { + .baseHP = 45, + .baseAttack = 100, + .baseDefense = 45, + .baseSpeed = 10, + .baseSpAttack = 45, + .baseSpDefense = 45, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 255, + .expYield = 73, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SOFT_SAND, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_HYPER_CUTTER, + .ability2 = ABILITY_ARENA_TRAP, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_VIBRAVA] = + { + .baseHP = 50, + .baseAttack = 70, + .baseDefense = 50, + .baseSpeed = 70, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_GROUND, + .type2 = TYPE_DRAGON, + .catchRate = 120, + .expYield = 126, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_LEVITATE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_FLYGON] = + { + .baseHP = 80, + .baseAttack = 100, + .baseDefense = 80, + .baseSpeed = 100, + .baseSpAttack = 80, + .baseSpDefense = 80, + .type1 = TYPE_GROUND, + .type2 = TYPE_DRAGON, + .catchRate = 45, + .expYield = 197, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_LEVITATE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_MAKUHITA] = + { + .baseHP = 72, + .baseAttack = 60, + .baseDefense = 30, + .baseSpeed = 25, + .baseSpAttack = 20, + .baseSpDefense = 30, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 180, + .expYield = 87, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_GUTS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_HARIYAMA] = + { + .baseHP = 144, + .baseAttack = 120, + .baseDefense = 60, + .baseSpeed = 50, + .baseSpAttack = 40, + .baseSpDefense = 60, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 200, + .expYield = 184, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_GUTS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_ELECTRIKE] = + { + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 40, + .baseSpeed = 65, + .baseSpAttack = 65, + .baseSpDefense = 40, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 120, + .expYield = 104, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_LIGHTNING_ROD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_MANECTRIC] = + { + .baseHP = 70, + .baseAttack = 75, + .baseDefense = 60, + .baseSpeed = 105, + .baseSpAttack = 105, + .baseSpDefense = 60, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 45, + .expYield = 168, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_LIGHTNING_ROD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_NUMEL] = + { + .baseHP = 60, + .baseAttack = 60, + .baseDefense = 40, + .baseSpeed = 35, + .baseSpAttack = 65, + .baseSpDefense = 45, + .type1 = TYPE_FIRE, + .type2 = TYPE_GROUND, + .catchRate = 255, + .expYield = 88, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_CAMERUPT] = + { + .baseHP = 70, + .baseAttack = 100, + .baseDefense = 70, + .baseSpeed = 40, + .baseSpAttack = 105, + .baseSpDefense = 75, + .type1 = TYPE_FIRE, + .type2 = TYPE_GROUND, + .catchRate = 150, + .expYield = 175, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_MAGMA_ARMOR, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_SPHEAL] = + { + .baseHP = 70, + .baseAttack = 40, + .baseDefense = 50, + .baseSpeed = 25, + .baseSpAttack = 55, + .baseSpDefense = 50, + .type1 = TYPE_ICE, + .type2 = TYPE_WATER, + .catchRate = 255, + .expYield = 75, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SEALEO] = + { + .baseHP = 90, + .baseAttack = 60, + .baseDefense = 70, + .baseSpeed = 45, + .baseSpAttack = 75, + .baseSpDefense = 70, + .type1 = TYPE_ICE, + .type2 = TYPE_WATER, + .catchRate = 120, + .expYield = 128, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_WALREIN] = + { + .baseHP = 110, + .baseAttack = 80, + .baseDefense = 90, + .baseSpeed = 65, + .baseSpAttack = 95, + .baseSpDefense = 90, + .type1 = TYPE_ICE, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 192, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_CACNEA] = + { + .baseHP = 50, + .baseAttack = 85, + .baseDefense = 40, + .baseSpeed = 35, + .baseSpAttack = 85, + .baseSpDefense = 40, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 190, + .expYield = 97, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_POISON_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_SAND_VEIL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_CACTURNE] = + { + .baseHP = 70, + .baseAttack = 115, + .baseDefense = 60, + .baseSpeed = 55, + .baseSpAttack = 115, + .baseSpDefense = 60, + .type1 = TYPE_GRASS, + .type2 = TYPE_DARK, + .catchRate = 60, + .expYield = 177, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_POISON_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_SAND_VEIL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_SNORUNT] = + { + .baseHP = 50, + .baseAttack = 50, + .baseDefense = 50, + .baseSpeed = 50, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_ICE, + .type2 = TYPE_ICE, + .catchRate = 190, + .expYield = 74, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_INNER_FOCUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_GLALIE] = + { + .baseHP = 80, + .baseAttack = 80, + .baseDefense = 80, + .baseSpeed = 80, + .baseSpAttack = 80, + .baseSpDefense = 80, + .type1 = TYPE_ICE, + .type2 = TYPE_ICE, + .catchRate = 75, + .expYield = 187, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NEVER_MELT_ICE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_INNER_FOCUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_LUNATONE] = + { + .baseHP = 70, + .baseAttack = 55, + .baseDefense = 65, + .baseSpeed = 70, + .baseSpAttack = 95, + .baseSpDefense = 85, + .type1 = TYPE_ROCK, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 150, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_MOON_STONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_SOLROCK] = + { + .baseHP = 70, + .baseAttack = 95, + .baseDefense = 85, + .baseSpeed = 70, + .baseSpAttack = 55, + .baseSpDefense = 65, + .type1 = TYPE_ROCK, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 150, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SUN_STONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_AZURILL] = + { + .baseHP = 50, + .baseAttack = 20, + .baseDefense = 40, + .baseSpeed = 20, + .baseSpAttack = 20, + .baseSpDefense = 40, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 150, + .expYield = 33, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_HUGE_POWER, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SPOINK] = + { + .baseHP = 60, + .baseAttack = 25, + .baseDefense = 35, + .baseSpeed = 60, + .baseSpAttack = 70, + .baseSpDefense = 80, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 255, + .expYield = 89, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_OWN_TEMPO, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_GRUMPIG] = + { + .baseHP = 80, + .baseAttack = 45, + .baseDefense = 65, + .baseSpeed = 80, + .baseSpAttack = 90, + .baseSpDefense = 110, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 60, + .expYield = 164, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_OWN_TEMPO, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_PLUSLE] = + { + .baseHP = 60, + .baseAttack = 50, + .baseDefense = 40, + .baseSpeed = 95, + .baseSpAttack = 85, + .baseSpDefense = 75, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 200, + .expYield = 120, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_PLUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_MINUN] = + { + .baseHP = 60, + .baseAttack = 40, + .baseDefense = 50, + .baseSpeed = 95, + .baseSpAttack = 75, + .baseSpDefense = 85, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 200, + .expYield = 120, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_MINUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_MAWILE] = + { + .baseHP = 50, + .baseAttack = 85, + .baseDefense = 85, + .baseSpeed = 50, + .baseSpAttack = 55, + .baseSpDefense = 55, + .type1 = TYPE_STEEL, + .type2 = TYPE_STEEL, + .catchRate = 45, + .expYield = 98, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_HYPER_CUTTER, + .ability2 = ABILITY_INTIMIDATE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_MEDITITE] = + { + .baseHP = 30, + .baseAttack = 40, + .baseDefense = 55, + .baseSpeed = 60, + .baseSpAttack = 40, + .baseSpDefense = 55, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_PSYCHIC, + .catchRate = 180, + .expYield = 91, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_PURE_POWER, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_MEDICHAM] = + { + .baseHP = 60, + .baseAttack = 60, + .baseDefense = 75, + .baseSpeed = 80, + .baseSpAttack = 60, + .baseSpDefense = 75, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_PSYCHIC, + .catchRate = 90, + .expYield = 153, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_PURE_POWER, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_SWABLU] = + { + .baseHP = 45, + .baseAttack = 40, + .baseDefense = 60, + .baseSpeed = 50, + .baseSpAttack = 40, + .baseSpDefense = 75, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 255, + .expYield = 74, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_NATURAL_CURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_ALTARIA] = + { + .baseHP = 75, + .baseAttack = 70, + .baseDefense = 90, + .baseSpeed = 80, + .baseSpAttack = 70, + .baseSpDefense = 105, + .type1 = TYPE_DRAGON, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 188, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_NATURAL_CURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_WYNAUT] = + { + .baseHP = 95, + .baseAttack = 23, + .baseDefense = 48, + .baseSpeed = 23, + .baseSpAttack = 23, + .baseSpDefense = 48, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 125, + .expYield = 44, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_SHADOW_TAG, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_DUSKULL] = + { + .baseHP = 20, + .baseAttack = 40, + .baseDefense = 90, + .baseSpeed = 25, + .baseSpAttack = 30, + .baseSpDefense = 90, + .type1 = TYPE_GHOST, + .type2 = TYPE_GHOST, + .catchRate = 190, + .expYield = 97, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_SPELL_TAG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_DUSCLOPS] = + { + .baseHP = 40, + .baseAttack = 70, + .baseDefense = 130, + .baseSpeed = 25, + .baseSpAttack = 60, + .baseSpDefense = 130, + .type1 = TYPE_GHOST, + .type2 = TYPE_GHOST, + .catchRate = 90, + .expYield = 179, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_SPELL_TAG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_ROSELIA] = + { + .baseHP = 50, + .baseAttack = 60, + .baseDefense = 45, + .baseSpeed = 65, + .baseSpAttack = 100, + .baseSpDefense = 80, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 150, + .expYield = 152, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_POISON_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_NATURAL_CURE, + .ability2 = ABILITY_POISON_POINT, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = TRUE, + }, + + [SPECIES_SLAKOTH] = + { + .baseHP = 60, + .baseAttack = 60, + .baseDefense = 60, + .baseSpeed = 30, + .baseSpAttack = 35, + .baseSpDefense = 35, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 255, + .expYield = 83, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_TRUANT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_VIGOROTH] = + { + .baseHP = 80, + .baseAttack = 80, + .baseDefense = 80, + .baseSpeed = 90, + .baseSpAttack = 55, + .baseSpDefense = 55, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 120, + .expYield = 126, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_VITAL_SPIRIT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_SLAKING] = + { + .baseHP = 150, + .baseAttack = 160, + .baseDefense = 100, + .baseSpeed = 100, + .baseSpAttack = 95, + .baseSpDefense = 65, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 210, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_TRUANT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_GULPIN] = + { + .baseHP = 70, + .baseAttack = 43, + .baseDefense = 53, + .baseSpeed = 40, + .baseSpAttack = 43, + .baseSpDefense = 53, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 225, + .expYield = 75, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_BIG_PEARL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LIQUID_OOZE, + .ability2 = ABILITY_STICKY_HOLD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_SWALOT] = + { + .baseHP = 100, + .baseAttack = 73, + .baseDefense = 83, + .baseSpeed = 55, + .baseSpAttack = 73, + .baseSpDefense = 83, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 75, + .expYield = 168, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_BIG_PEARL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LIQUID_OOZE, + .ability2 = ABILITY_STICKY_HOLD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_TROPIUS] = + { + .baseHP = 99, + .baseAttack = 68, + .baseDefense = 83, + .baseSpeed = 51, + .baseSpAttack = 72, + .baseSpDefense = 87, + .type1 = TYPE_GRASS, + .type2 = TYPE_FLYING, + .catchRate = 200, + .expYield = 169, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_WHISMUR] = + { + .baseHP = 64, + .baseAttack = 51, + .baseDefense = 23, + .baseSpeed = 28, + .baseSpAttack = 51, + .baseSpDefense = 23, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 190, + .expYield = 68, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_CHESTO_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SOUNDPROOF, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_LOUDRED] = + { + .baseHP = 84, + .baseAttack = 71, + .baseDefense = 43, + .baseSpeed = 48, + .baseSpAttack = 71, + .baseSpDefense = 43, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 120, + .expYield = 126, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_CHESTO_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SOUNDPROOF, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_EXPLOUD] = + { + .baseHP = 104, + .baseAttack = 91, + .baseDefense = 63, + .baseSpeed = 68, + .baseSpAttack = 91, + .baseSpDefense = 63, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 184, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_CHESTO_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SOUNDPROOF, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_CLAMPERL] = + { + .baseHP = 35, + .baseAttack = 64, + .baseDefense = 85, + .baseSpeed = 32, + .baseSpAttack = 74, + .baseSpDefense = 55, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 255, + .expYield = 142, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_BLUE_SHARD, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_SHELL_ARMOR, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_HUNTAIL] = + { + .baseHP = 55, + .baseAttack = 104, + .baseDefense = 105, + .baseSpeed = 52, + .baseSpAttack = 94, + .baseSpDefense = 75, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 60, + .expYield = 178, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_GOREBYSS] = + { + .baseHP = 55, + .baseAttack = 84, + .baseDefense = 105, + .baseSpeed = 52, + .baseSpAttack = 114, + .baseSpDefense = 75, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 60, + .expYield = 178, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_ABSOL] = + { + .baseHP = 65, + .baseAttack = 130, + .baseDefense = 60, + .baseSpeed = 75, + .baseSpAttack = 75, + .baseSpDefense = 60, + .type1 = TYPE_DARK, + .type2 = TYPE_DARK, + .catchRate = 30, + .expYield = 174, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = TRUE, + }, + + [SPECIES_SHUPPET] = + { + .baseHP = 44, + .baseAttack = 75, + .baseDefense = 35, + .baseSpeed = 45, + .baseSpAttack = 63, + .baseSpDefense = 33, + .type1 = TYPE_GHOST, + .type2 = TYPE_GHOST, + .catchRate = 225, + .expYield = 97, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SPELL_TAG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_INSOMNIA, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_BANETTE] = + { + .baseHP = 64, + .baseAttack = 115, + .baseDefense = 65, + .baseSpeed = 65, + .baseSpAttack = 83, + .baseSpDefense = 63, + .type1 = TYPE_GHOST, + .type2 = TYPE_GHOST, + .catchRate = 45, + .expYield = 179, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SPELL_TAG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_INSOMNIA, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_SEVIPER] = + { + .baseHP = 73, + .baseAttack = 100, + .baseDefense = 60, + .baseSpeed = 65, + .baseSpAttack = 100, + .baseSpDefense = 60, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 90, + .expYield = 165, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_SHED_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = TRUE, + }, + + [SPECIES_ZANGOOSE] = + { + .baseHP = 73, + .baseAttack = 115, + .baseDefense = 60, + .baseSpeed = 90, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 90, + .expYield = 165, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_IMMUNITY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = TRUE, + }, + + [SPECIES_RELICANTH] = + { + .baseHP = 100, + .baseAttack = 90, + .baseDefense = 130, + .baseSpeed = 55, + .baseSpAttack = 45, + .baseSpDefense = 65, + .type1 = TYPE_WATER, + .type2 = TYPE_ROCK, + .catchRate = 25, + .expYield = 198, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_GREEN_SHARD, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 40, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_ROCK_HEAD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_ARON] = + { + .baseHP = 50, + .baseAttack = 70, + .baseDefense = 100, + .baseSpeed = 30, + .baseSpAttack = 40, + .baseSpDefense = 40, + .type1 = TYPE_STEEL, + .type2 = TYPE_ROCK, + .catchRate = 180, + .expYield = 96, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_HARD_STONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 35, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_STURDY, + .ability2 = ABILITY_ROCK_HEAD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_LAIRON] = + { + .baseHP = 60, + .baseAttack = 90, + .baseDefense = 140, + .baseSpeed = 40, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_STEEL, + .type2 = TYPE_ROCK, + .catchRate = 90, + .expYield = 152, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_HARD_STONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 35, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_STURDY, + .ability2 = ABILITY_ROCK_HEAD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_AGGRON] = + { + .baseHP = 70, + .baseAttack = 110, + .baseDefense = 180, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_STEEL, + .type2 = TYPE_ROCK, + .catchRate = 45, + .expYield = 205, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 3, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_HARD_STONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 35, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_STURDY, + .ability2 = ABILITY_ROCK_HEAD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_CASTFORM] = + { + .baseHP = 70, + .baseAttack = 70, + .baseDefense = 70, + .baseSpeed = 70, + .baseSpAttack = 70, + .baseSpDefense = 70, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 145, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_MYSTIC_WATER, + .item2 = ITEM_MYSTIC_WATER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_FORECAST, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_VOLBEAT] = + { + .baseHP = 65, + .baseAttack = 73, + .baseDefense = 55, + .baseSpeed = 85, + .baseSpAttack = 47, + .baseSpDefense = 75, + .type1 = TYPE_BUG, + .type2 = TYPE_BUG, + .catchRate = 150, + .expYield = 146, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_MALE, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_ILLUMINATE, + .ability2 = ABILITY_SWARM, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_ILLUMISE] = + { + .baseHP = 65, + .baseAttack = 47, + .baseDefense = 55, + .baseSpeed = 85, + .baseSpAttack = 73, + .baseSpDefense = 75, + .type1 = TYPE_BUG, + .type2 = TYPE_BUG, + .catchRate = 150, + .expYield = 146, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_FEMALE, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_LILEEP] = + { + .baseHP = 66, + .baseAttack = 41, + .baseDefense = 77, + .baseSpeed = 23, + .baseSpAttack = 61, + .baseSpDefense = 87, + .type1 = TYPE_ROCK, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 121, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_SUCTION_CUPS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_CRADILY] = + { + .baseHP = 86, + .baseAttack = 81, + .baseDefense = 97, + .baseSpeed = 43, + .baseSpAttack = 81, + .baseSpDefense = 107, + .type1 = TYPE_ROCK, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 201, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_SUCTION_CUPS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_ANORITH] = + { + .baseHP = 45, + .baseAttack = 95, + .baseDefense = 50, + .baseSpeed = 75, + .baseSpAttack = 40, + .baseSpDefense = 50, + .type1 = TYPE_ROCK, + .type2 = TYPE_BUG, + .catchRate = 45, + .expYield = 119, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_BATTLE_ARMOR, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_ARMALDO] = + { + .baseHP = 75, + .baseAttack = 125, + .baseDefense = 100, + .baseSpeed = 45, + .baseSpAttack = 70, + .baseSpDefense = 80, + .type1 = TYPE_ROCK, + .type2 = TYPE_BUG, + .catchRate = 45, + .expYield = 200, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_BATTLE_ARMOR, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_RALTS] = + { + .baseHP = 28, + .baseAttack = 25, + .baseDefense = 25, + .baseSpeed = 40, + .baseSpAttack = 45, + .baseSpDefense = 35, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 235, + .expYield = 70, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_TRACE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_KIRLIA] = + { + .baseHP = 38, + .baseAttack = 35, + .baseDefense = 35, + .baseSpeed = 50, + .baseSpAttack = 65, + .baseSpDefense = 55, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 120, + .expYield = 140, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_TRACE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_GARDEVOIR] = + { + .baseHP = 68, + .baseAttack = 65, + .baseDefense = 65, + .baseSpeed = 80, + .baseSpAttack = 125, + .baseSpDefense = 115, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 208, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_TRACE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_BAGON] = + { + .baseHP = 45, + .baseAttack = 75, + .baseDefense = 60, + .baseSpeed = 50, + .baseSpAttack = 40, + .baseSpDefense = 30, + .type1 = TYPE_DRAGON, + .type2 = TYPE_DRAGON, + .catchRate = 45, + .expYield = 89, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_DRAGON, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SHELGON] = + { + .baseHP = 65, + .baseAttack = 95, + .baseDefense = 100, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 50, + .type1 = TYPE_DRAGON, + .type2 = TYPE_DRAGON, + .catchRate = 45, + .expYield = 144, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_DRAGON, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_SALAMENCE] = + { + .baseHP = 95, + .baseAttack = 135, + .baseDefense = 80, + .baseSpeed = 100, + .baseSpAttack = 110, + .baseSpDefense = 80, + .type1 = TYPE_DRAGON, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 218, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_DRAGON, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_BELDUM] = + { + .baseHP = 40, + .baseAttack = 55, + .baseDefense = 80, + .baseSpeed = 30, + .baseSpAttack = 35, + .baseSpDefense = 60, + .type1 = TYPE_STEEL, + .type2 = TYPE_PSYCHIC, + .catchRate = 3, + .expYield = 103, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, + .genderRatio = MON_GENDERLESS, + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_CLEAR_BODY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_METANG] = + { + .baseHP = 60, + .baseAttack = 75, + .baseDefense = 100, + .baseSpeed = 50, + .baseSpAttack = 55, + .baseSpDefense = 80, + .type1 = TYPE_STEEL, + .type2 = TYPE_PSYCHIC, + .catchRate = 3, + .expYield = 153, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, + .genderRatio = MON_GENDERLESS, + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_CLEAR_BODY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_METAGROSS] = + { + .baseHP = 80, + .baseAttack = 135, + .baseDefense = 130, + .baseSpeed = 70, + .baseSpAttack = 95, + .baseSpDefense = 90, + .type1 = TYPE_STEEL, + .type2 = TYPE_PSYCHIC, + .catchRate = 3, + .expYield = 210, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 3, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, + .genderRatio = MON_GENDERLESS, + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_CLEAR_BODY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_REGIROCK] = + { + .baseHP = 80, + .baseAttack = 100, + .baseDefense = 200, + .baseSpeed = 50, + .baseSpAttack = 50, + .baseSpDefense = 100, + .type1 = TYPE_ROCK, + .type2 = TYPE_ROCK, + .catchRate = 3, + .expYield = 217, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 3, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_CLEAR_BODY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_REGICE] = + { + .baseHP = 80, + .baseAttack = 50, + .baseDefense = 100, + .baseSpeed = 50, + .baseSpAttack = 100, + .baseSpDefense = 200, + .type1 = TYPE_ICE, + .type2 = TYPE_ICE, + .catchRate = 3, + .expYield = 216, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_CLEAR_BODY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_REGISTEEL] = + { + .baseHP = 80, + .baseAttack = 75, + .baseDefense = 150, + .baseSpeed = 50, + .baseSpAttack = 75, + .baseSpDefense = 150, + .type1 = TYPE_STEEL, + .type2 = TYPE_STEEL, + .catchRate = 3, + .expYield = 215, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_CLEAR_BODY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_KYOGRE] = + { + .baseHP = 100, + .baseAttack = 100, + .baseDefense = 90, + .baseSpeed = 90, + .baseSpAttack = 150, + .baseSpDefense = 140, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 5, + .expYield = 218, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_DRIZZLE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_GROUDON] = + { + .baseHP = 100, + .baseAttack = 150, + .baseDefense = 140, + .baseSpeed = 90, + .baseSpAttack = 100, + .baseSpDefense = 90, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 5, + .expYield = 218, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_DROUGHT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_RAYQUAZA] = + { + .baseHP = 105, + .baseAttack = 150, + .baseDefense = 90, + .baseSpeed = 95, + .baseSpAttack = 150, + .baseSpDefense = 90, + .type1 = TYPE_DRAGON, + .type2 = TYPE_FLYING, + .catchRate = 3, + .expYield = 220, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_AIR_LOCK, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_LATIAS] = + { + .baseHP = 80, + .baseAttack = 80, + .baseDefense = 90, + .baseSpeed = 110, + .baseSpAttack = 110, + .baseSpDefense = 130, + .type1 = TYPE_DRAGON, + .type2 = TYPE_PSYCHIC, + .catchRate = 3, + .expYield = 211, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_FEMALE, + .eggCycles = 120, + .friendship = 90, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_LATIOS] = + { + .baseHP = 80, + .baseAttack = 90, + .baseDefense = 80, + .baseSpeed = 110, + .baseSpAttack = 130, + .baseSpDefense = 110, + .type1 = TYPE_DRAGON, + .type2 = TYPE_PSYCHIC, + .catchRate = 3, + .expYield = 211, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_MALE, + .eggCycles = 120, + .friendship = 90, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_JIRACHI] = + { + .baseHP = 100, + .baseAttack = 100, + .baseDefense = 100, + .baseSpeed = 100, + .baseSpAttack = 100, + .baseSpDefense = 100, + .type1 = TYPE_STEEL, + .type2 = TYPE_PSYCHIC, + .catchRate = 3, + .expYield = 215, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_STAR_PIECE, + .item2 = ITEM_STAR_PIECE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 100, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_SERENE_GRACE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_DEOXYS] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 3, + .expYield = 215, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = TRUE, + }, + + [SPECIES_CHIMECHO] = + { + .baseHP = 65, + .baseAttack = 50, + .baseDefense = 70, + .baseSpeed = 65, + .baseSpAttack = 95, + .baseSpDefense = 80, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 147, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + } +}; + +#endif //GUARD_BASE_STATS_H diff --git a/src/data/pokemon/cry_ids.h b/src/data/pokemon/cry_ids.h new file mode 100644 index 000000000..1c1c32dde --- /dev/null +++ b/src/data/pokemon/cry_ids.h @@ -0,0 +1,143 @@ +#ifndef POKEEMERALD_CRY_IDS_H +#define POKEEMERALD_CRY_IDS_H + +const u16 gSpeciesIdToCryId[] = +{ + 273, // TREECKO + 274, // GROVYLE + 275, // SCEPTILE + 270, // TORCHIC + 271, // COMBUSKEN + 272, // BLAZIKEN + 276, // MUDKIP + 277, // MARSHTOMP + 278, // SWAMPERT + 359, // POOCHYENA + 360, // MIGHTYENA + 378, // ZIGZAGOON + 375, // LINOONE + 290, // WURMPLE + 291, // SILCOON + 292, // BEAUTIFLY + 293, // CASCOON + 294, // DUSTOX + 283, // LOTAD + 284, // LOMBRE + 285, // LUDICOLO + 286, // SEEDOT + 287, // NUZLEAF + 288, // SHIFTRY + 301, // NINCADA + 302, // NINJASK + 303, // SHEDINJA + 266, // TAILLOW + 267, // SWELLOW + 374, // SHROOMISH + 373, // BRELOOM + 269, // SPINDA + 280, // WINGULL + 279, // PELIPPER + 310, // SURSKIT + 311, // MASQUERAIN + 377, // WAILMER + 381, // WAILORD + 312, // SKITTY + 313, // DELCATTY + 251, // KECLEON + 329, // BALTOY + 330, // CLAYDOL + 306, // NOSEPASS + 253, // TORKOAL + 362, // SABLEYE + 318, // BARBOACH + 319, // WHISCASH + 368, // LUVDISC + 320, // CORPHISH + 321, // CRAWDAUNT + 333, // FEEBAS + 334, // MILOTIC + 289, // CARVANHA + 260, // SHARPEDO + 324, // TRAPINCH + 325, // VIBRAVA + 326, // FLYGON + 304, // MAKUHITA + 305, // HARIYAMA + 254, // ELECTRIKE + 255, // MANECTRIC + 316, // NUMEL + 317, // CAMERUPT + 338, // SPHEAL + 339, // SEALEO + 340, // WALREIN + 327, // CACNEA + 328, // CACTURNE + 383, // SNORUNT + 307, // GLALIE + 331, // LUNATONE + 332, // SOLROCK + 262, // AZURILL + 322, // SPOINK + 323, // GRUMPIG + 308, // PLUSLE + 309, // MINUN + 363, // MAWILE + 336, // MEDITITE + 337, // MEDICHAM + 263, // SWABLU + 264, // ALTARIA + 258, // WYNAUT + 256, // DUSKULL + 361, // DUSCLOPS + 252, // ROSELIA + 298, // SLAKOTH + 299, // VIGOROTH + 300, // SLAKING + 314, // GULPIN + 315, // SWALOT + 376, // TROPIUS + 382, // WHISMUR + 380, // LOUDRED + 379, // EXPLOUD + 341, // CLAMPERL + 342, // HUNTAIL + 343, // GOREBYSS + 335, // ABSOL + 282, // SHUPPET + 281, // BANETTE + 259, // SEVIPER + 261, // ZANGOOSE + 367, // RELICANTH + 364, // ARON + 365, // LAIRON + 366, // AGGRON + 356, // CASTFORM + 357, // VOLBEAT + 358, // ILLUMISE + 344, // LILEEP + 345, // CRADILY + 346, // ANORITH + 347, // ARMALDO + 295, // RALTS + 296, // KIRLIA + 297, // GARDEVOIR + 351, // BAGON + 352, // SHELGON + 372, // SALAMENCE + 348, // BELDUM + 349, // METANG + 350, // METAGROSS + 353, // REGIROCK + 354, // REGICE + 355, // REGISTEEL + 370, // KYOGRE + 369, // GROUDON + 371, // RAYQUAZA + 257, // LATIAS + 384, // LATIOS + 385, // JIRACHI + 386, // DEOXYS + 387 // CHIMECHO +}; + +#endif //POKEEMERALD_CRY_IDS_H diff --git a/src/data/pokemon/egg_moves.h b/src/data/pokemon/egg_moves.h new file mode 100644 index 000000000..3d74868b4 --- /dev/null +++ b/src/data/pokemon/egg_moves.h @@ -0,0 +1,1315 @@ +#ifndef POKEEMERALD_DAYCARE_H +#define POKEEMERALD_DAYCARE_H + +#define EGG_MOVES_SPECIES_OFFSET 20000 +#define EGG_MOVES_TERMINATOR 0xFFFF +#define egg_moves(species, moves...) (SPECIES_##species + EGG_MOVES_SPECIES_OFFSET), moves + +#endif // POKEEMERALD_DAYCARE_H + +const u16 gEggMoves[] = { + egg_moves(BULBASAUR, + MOVE_LIGHT_SCREEN, + MOVE_SKULL_BASH, + MOVE_SAFEGUARD, + MOVE_CHARM, + MOVE_PETAL_DANCE, + MOVE_MAGICAL_LEAF, + MOVE_GRASS_WHISTLE, + MOVE_CURSE), + + egg_moves(CHARMANDER, + MOVE_BELLY_DRUM, + MOVE_ANCIENT_POWER, + MOVE_ROCK_SLIDE, + MOVE_BITE, + MOVE_OUTRAGE, + MOVE_BEAT_UP, + MOVE_SWORDS_DANCE, + MOVE_DRAGON_DANCE), + + egg_moves(SQUIRTLE, + MOVE_MIRROR_COAT, + MOVE_HAZE, + MOVE_MIST, + MOVE_FORESIGHT, + MOVE_FLAIL, + MOVE_REFRESH, + MOVE_MUD_SPORT, + MOVE_YAWN), + + egg_moves(PIDGEY, + MOVE_PURSUIT, + MOVE_FAINT_ATTACK, + MOVE_FORESIGHT, + MOVE_STEEL_WING, + MOVE_AIR_CUTTER), + + egg_moves(RATTATA, + MOVE_SCREECH, + MOVE_FLAME_WHEEL, + MOVE_FURY_SWIPES, + MOVE_BITE, + MOVE_COUNTER, + MOVE_REVERSAL, + MOVE_UPROAR, + MOVE_SWAGGER), + + egg_moves(SPEAROW, + MOVE_FAINT_ATTACK, + MOVE_FALSE_SWIPE, + MOVE_SCARY_FACE, + MOVE_QUICK_ATTACK, + MOVE_TRI_ATTACK, + MOVE_ASTONISH, + MOVE_SKY_ATTACK), + + egg_moves(EKANS, + MOVE_PURSUIT, + MOVE_SLAM, + MOVE_SPITE, + MOVE_BEAT_UP, + MOVE_POISON_FANG), + + egg_moves(SANDSHREW, + MOVE_FLAIL, + MOVE_SAFEGUARD, + MOVE_COUNTER, + MOVE_RAPID_SPIN, + MOVE_ROCK_SLIDE, + MOVE_METAL_CLAW, + MOVE_SWORDS_DANCE, + MOVE_CRUSH_CLAW), + + egg_moves(NIDORAN_F, + MOVE_SUPERSONIC, + MOVE_DISABLE, + MOVE_TAKE_DOWN, + MOVE_FOCUS_ENERGY, + MOVE_CHARM, + MOVE_COUNTER, + MOVE_BEAT_UP), + + egg_moves(NIDORAN_M, + MOVE_COUNTER, + MOVE_DISABLE, + MOVE_SUPERSONIC, + MOVE_TAKE_DOWN, + MOVE_AMNESIA, + MOVE_CONFUSION, + MOVE_BEAT_UP), + + egg_moves(VULPIX, + MOVE_FAINT_ATTACK, + MOVE_HYPNOSIS, + MOVE_FLAIL, + MOVE_SPITE, + MOVE_DISABLE, + MOVE_HOWL, + MOVE_PSYCH_UP, + MOVE_HEAT_WAVE), + + egg_moves(ZUBAT, + MOVE_QUICK_ATTACK, + MOVE_PURSUIT, + MOVE_FAINT_ATTACK, + MOVE_GUST, + MOVE_WHIRLWIND, + MOVE_CURSE), + + egg_moves(ODDISH, + MOVE_SWORDS_DANCE, + MOVE_RAZOR_LEAF, + MOVE_FLAIL, + MOVE_SYNTHESIS, + MOVE_CHARM, + MOVE_INGRAIN), + + egg_moves(PARAS, + MOVE_FALSE_SWIPE, + MOVE_SCREECH, + MOVE_COUNTER, + MOVE_PSYBEAM, + MOVE_FLAIL, + MOVE_SWEET_SCENT, + MOVE_LIGHT_SCREEN, + MOVE_PURSUIT), + + egg_moves(VENONAT, + MOVE_BATON_PASS, + MOVE_SCREECH, + MOVE_GIGA_DRAIN, + MOVE_SIGNAL_BEAM), + + egg_moves(DIGLETT, + MOVE_FAINT_ATTACK, + MOVE_SCREECH, + MOVE_ANCIENT_POWER, + MOVE_PURSUIT, + MOVE_BEAT_UP, + MOVE_UPROAR, + MOVE_ROCK_SLIDE), + + egg_moves(MEOWTH, + MOVE_SPITE, + MOVE_CHARM, + MOVE_HYPNOSIS, + MOVE_AMNESIA, + MOVE_PSYCH_UP, + MOVE_ASSIST), + + egg_moves(PSYDUCK, + MOVE_HYPNOSIS, + MOVE_PSYBEAM, + MOVE_FORESIGHT, + MOVE_LIGHT_SCREEN, + MOVE_FUTURE_SIGHT, + MOVE_PSYCHIC, + MOVE_CROSS_CHOP, + MOVE_REFRESH), + + egg_moves(MANKEY, + MOVE_ROCK_SLIDE, + MOVE_FORESIGHT, + MOVE_MEDITATE, + MOVE_COUNTER, + MOVE_REVERSAL, + MOVE_BEAT_UP, + MOVE_REVENGE, + MOVE_SMELLING_SALT), + + egg_moves(GROWLITHE, + MOVE_BODY_SLAM, + MOVE_SAFEGUARD, + MOVE_CRUNCH, + MOVE_THRASH, + MOVE_FIRE_SPIN, + MOVE_HOWL, + MOVE_HEAT_WAVE), + + egg_moves(POLIWAG, + MOVE_MIST, + MOVE_SPLASH, + MOVE_BUBBLE_BEAM, + MOVE_HAZE, + MOVE_MIND_READER, + MOVE_WATER_SPORT, + MOVE_ICE_BALL), + + egg_moves(ABRA, + MOVE_ENCORE, + MOVE_BARRIER, + MOVE_KNOCK_OFF, + MOVE_FIRE_PUNCH, + MOVE_THUNDER_PUNCH, + MOVE_ICE_PUNCH), + + egg_moves(MACHOP, + MOVE_LIGHT_SCREEN, + MOVE_MEDITATE, + MOVE_ROLLING_KICK, + MOVE_ENCORE, + MOVE_SMELLING_SALT, + MOVE_COUNTER, + MOVE_ROCK_SLIDE), + + egg_moves(BELLSPROUT, + MOVE_SWORDS_DANCE, + MOVE_ENCORE, + MOVE_REFLECT, + MOVE_SYNTHESIS, + MOVE_LEECH_LIFE, + MOVE_INGRAIN, + MOVE_MAGICAL_LEAF), + + egg_moves(TENTACOOL, + MOVE_AURORA_BEAM, + MOVE_MIRROR_COAT, + MOVE_RAPID_SPIN, + MOVE_HAZE, + MOVE_SAFEGUARD, + MOVE_CONFUSE_RAY), + + egg_moves(GEODUDE, + MOVE_MEGA_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_BLOCK), + + egg_moves(PONYTA, + MOVE_FLAME_WHEEL, + MOVE_THRASH, + MOVE_DOUBLE_KICK, + MOVE_HYPNOSIS, + MOVE_CHARM, + MOVE_DOUBLE_EDGE), + + egg_moves(SLOWPOKE, + MOVE_SAFEGUARD, + MOVE_BELLY_DRUM, + MOVE_FUTURE_SIGHT, + MOVE_STOMP, + MOVE_MUD_SPORT, + MOVE_SLEEP_TALK, + MOVE_SNORE), + + egg_moves(FARFETCHD, + MOVE_STEEL_WING, + MOVE_FORESIGHT, + MOVE_MIRROR_MOVE, + MOVE_GUST, + MOVE_QUICK_ATTACK, + MOVE_FLAIL, + MOVE_FEATHER_DANCE, + MOVE_CURSE), + + egg_moves(DODUO, + MOVE_QUICK_ATTACK, + MOVE_SUPERSONIC, + MOVE_HAZE, + MOVE_FAINT_ATTACK, + MOVE_FLAIL, + MOVE_ENDEAVOR), + + egg_moves(SEEL, + MOVE_LICK, + MOVE_PERISH_SONG, + MOVE_DISABLE, + MOVE_HORN_DRILL, + MOVE_SLAM, + MOVE_ENCORE, + MOVE_FAKE_OUT, + MOVE_ICICLE_SPEAR), + + egg_moves(GRIMER, + MOVE_HAZE, + MOVE_MEAN_LOOK, + MOVE_LICK, + MOVE_IMPRISON, + MOVE_CURSE, + MOVE_SHADOW_PUNCH, + MOVE_EXPLOSION), + + egg_moves(SHELLDER, + MOVE_BUBBLE_BEAM, + MOVE_TAKE_DOWN, + MOVE_BARRIER, + MOVE_RAPID_SPIN, + MOVE_SCREECH, + MOVE_ICICLE_SPEAR), + + egg_moves(GASTLY, + MOVE_PSYWAVE, + MOVE_PERISH_SONG, + MOVE_HAZE, + MOVE_ASTONISH, + MOVE_WILL_O_WISP, + MOVE_GRUDGE, + MOVE_EXPLOSION), + + egg_moves(ONIX, + MOVE_ROCK_SLIDE, + MOVE_FLAIL, + MOVE_EXPLOSION, + MOVE_BLOCK), + + egg_moves(DROWZEE, + MOVE_BARRIER, + MOVE_ASSIST, + MOVE_ROLE_PLAY, + MOVE_FIRE_PUNCH, + MOVE_THUNDER_PUNCH, + MOVE_ICE_PUNCH), + + egg_moves(KRABBY, + MOVE_DIG, + MOVE_HAZE, + MOVE_AMNESIA, + MOVE_FLAIL, + MOVE_SLAM, + MOVE_KNOCK_OFF, + MOVE_SWORDS_DANCE), + + egg_moves(EXEGGCUTE, + MOVE_SYNTHESIS, + MOVE_MOONLIGHT, + MOVE_REFLECT, + MOVE_ANCIENT_POWER, + MOVE_PSYCH_UP, + MOVE_INGRAIN, + MOVE_CURSE), + + egg_moves(CUBONE, + MOVE_ROCK_SLIDE, + MOVE_ANCIENT_POWER, + MOVE_BELLY_DRUM, + MOVE_SCREECH, + MOVE_SKULL_BASH, + MOVE_PERISH_SONG, + MOVE_SWORDS_DANCE), + + egg_moves(LICKITUNG, + MOVE_BELLY_DRUM, + MOVE_MAGNITUDE, + MOVE_BODY_SLAM, + MOVE_CURSE, + MOVE_SMELLING_SALT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE), + + egg_moves(KOFFING, + MOVE_SCREECH, + MOVE_PSYWAVE, + MOVE_PSYBEAM, + MOVE_DESTINY_BOND, + MOVE_PAIN_SPLIT, + MOVE_WILL_O_WISP), + + egg_moves(RHYHORN, + MOVE_CRUNCH, + MOVE_REVERSAL, + MOVE_ROCK_SLIDE, + MOVE_COUNTER, + MOVE_MAGNITUDE, + MOVE_SWORDS_DANCE, + MOVE_CURSE, + MOVE_CRUSH_CLAW), + + egg_moves(CHANSEY, + MOVE_PRESENT, + MOVE_METRONOME, + MOVE_HEAL_BELL, + MOVE_AROMATHERAPY, + MOVE_SUBSTITUTE), + + egg_moves(TANGELA, + MOVE_FLAIL, + MOVE_CONFUSION, + MOVE_MEGA_DRAIN, + MOVE_REFLECT, + MOVE_AMNESIA, + MOVE_LEECH_SEED, + MOVE_NATURE_POWER), + + egg_moves(KANGASKHAN, + MOVE_STOMP, + MOVE_FORESIGHT, + MOVE_FOCUS_ENERGY, + MOVE_SAFEGUARD, + MOVE_DISABLE, + MOVE_COUNTER, + MOVE_CRUSH_CLAW, + MOVE_SUBSTITUTE), + + egg_moves(HORSEA, + MOVE_FLAIL, + MOVE_AURORA_BEAM, + MOVE_OCTAZOOKA, + MOVE_DISABLE, + MOVE_SPLASH, + MOVE_DRAGON_RAGE, + MOVE_DRAGON_BREATH), + + egg_moves(GOLDEEN, + MOVE_PSYBEAM, + MOVE_HAZE, + MOVE_HYDRO_PUMP, + MOVE_SLEEP_TALK, + MOVE_MUD_SPORT), + + egg_moves(MR_MIME, + MOVE_FUTURE_SIGHT, + MOVE_HYPNOSIS, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_FAKE_OUT, + MOVE_TRICK), + + egg_moves(SCYTHER, + MOVE_COUNTER, + MOVE_SAFEGUARD, + MOVE_BATON_PASS, + MOVE_RAZOR_WIND, + MOVE_REVERSAL, + MOVE_LIGHT_SCREEN, + MOVE_ENDURE, + MOVE_SILVER_WIND), + + egg_moves(PINSIR, + MOVE_FURY_ATTACK, + MOVE_FLAIL, + MOVE_FALSE_SWIPE, + MOVE_FAINT_ATTACK), + + egg_moves(LAPRAS, + MOVE_FORESIGHT, + MOVE_SUBSTITUTE, + MOVE_TICKLE, + MOVE_REFRESH, + MOVE_DRAGON_DANCE, + MOVE_CURSE, + MOVE_SLEEP_TALK, + MOVE_HORN_DRILL), + + egg_moves(EEVEE, + MOVE_CHARM, + MOVE_FLAIL, + MOVE_ENDURE, + MOVE_CURSE, + MOVE_TICKLE, + MOVE_WISH), + + egg_moves(OMANYTE, + MOVE_BUBBLE_BEAM, + MOVE_AURORA_BEAM, + MOVE_SLAM, + MOVE_SUPERSONIC, + MOVE_HAZE, + MOVE_ROCK_SLIDE, + MOVE_SPIKES), + + egg_moves(KABUTO, + MOVE_BUBBLE_BEAM, + MOVE_AURORA_BEAM, + MOVE_RAPID_SPIN, + MOVE_DIG, + MOVE_FLAIL, + MOVE_KNOCK_OFF, + MOVE_CONFUSE_RAY), + + egg_moves(AERODACTYL, + MOVE_WHIRLWIND, + MOVE_PURSUIT, + MOVE_FORESIGHT, + MOVE_STEEL_WING, + MOVE_DRAGON_BREATH, + MOVE_CURSE), + + egg_moves(SNORLAX, + MOVE_LICK, + MOVE_CHARM, + MOVE_DOUBLE_EDGE, + MOVE_CURSE, + MOVE_FISSURE, + MOVE_SUBSTITUTE), + + egg_moves(DRATINI, + MOVE_LIGHT_SCREEN, + MOVE_MIST, + MOVE_HAZE, + MOVE_SUPERSONIC, + MOVE_DRAGON_BREATH, + MOVE_DRAGON_DANCE), + + egg_moves(CHIKORITA, + MOVE_VINE_WHIP, + MOVE_LEECH_SEED, + MOVE_COUNTER, + MOVE_ANCIENT_POWER, + MOVE_FLAIL, + MOVE_NATURE_POWER, + MOVE_INGRAIN, + MOVE_GRASS_WHISTLE), + + egg_moves(CYNDAQUIL, + MOVE_FURY_SWIPES, + MOVE_QUICK_ATTACK, + MOVE_REVERSAL, + MOVE_THRASH, + MOVE_FORESIGHT, + MOVE_COVET, + MOVE_HOWL, + MOVE_CRUSH_CLAW), + + egg_moves(TOTODILE, + MOVE_CRUNCH, + MOVE_THRASH, + MOVE_HYDRO_PUMP, + MOVE_ANCIENT_POWER, + MOVE_ROCK_SLIDE, + MOVE_MUD_SPORT, + MOVE_WATER_SPORT, + MOVE_DRAGON_CLAW), + + egg_moves(SENTRET, + MOVE_DOUBLE_EDGE, + MOVE_PURSUIT, + MOVE_SLASH, + MOVE_FOCUS_ENERGY, + MOVE_REVERSAL, + MOVE_SUBSTITUTE, + MOVE_TRICK, + MOVE_ASSIST), + + egg_moves(HOOTHOOT, + MOVE_MIRROR_MOVE, + MOVE_SUPERSONIC, + MOVE_FAINT_ATTACK, + MOVE_WING_ATTACK, + MOVE_WHIRLWIND, + MOVE_SKY_ATTACK, + MOVE_FEATHER_DANCE), + + egg_moves(LEDYBA, + MOVE_PSYBEAM, + MOVE_BIDE, + MOVE_SILVER_WIND), + + egg_moves(SPINARAK, + MOVE_PSYBEAM, + MOVE_DISABLE, + MOVE_SONIC_BOOM, + MOVE_BATON_PASS, + MOVE_PURSUIT, + MOVE_SIGNAL_BEAM), + + egg_moves(CHINCHOU, + MOVE_FLAIL, + MOVE_SCREECH, + MOVE_AMNESIA), + + egg_moves(PICHU, + MOVE_REVERSAL, + MOVE_BIDE, + MOVE_PRESENT, + MOVE_ENCORE, + MOVE_DOUBLE_SLAP, + MOVE_WISH, + MOVE_CHARGE), + + egg_moves(CLEFFA, + MOVE_PRESENT, + MOVE_METRONOME, + MOVE_AMNESIA, + MOVE_BELLY_DRUM, + MOVE_SPLASH, + MOVE_MIMIC, + MOVE_WISH, + MOVE_SUBSTITUTE), + + egg_moves(IGGLYBUFF, + MOVE_PERISH_SONG, + MOVE_PRESENT, + MOVE_FAINT_ATTACK, + MOVE_WISH, + MOVE_FAKE_TEARS), + + egg_moves(TOGEPI, + MOVE_PRESENT, + MOVE_MIRROR_MOVE, + MOVE_PECK, + MOVE_FORESIGHT, + MOVE_FUTURE_SIGHT, + MOVE_SUBSTITUTE, + MOVE_PSYCH_UP), + + egg_moves(NATU, + MOVE_HAZE, + MOVE_DRILL_PECK, + MOVE_QUICK_ATTACK, + MOVE_FAINT_ATTACK, + MOVE_STEEL_WING, + MOVE_PSYCH_UP, + MOVE_FEATHER_DANCE, + MOVE_REFRESH), + + egg_moves(MAREEP, + MOVE_TAKE_DOWN, + MOVE_BODY_SLAM, + MOVE_SAFEGUARD, + MOVE_SCREECH, + MOVE_REFLECT, + MOVE_ODOR_SLEUTH, + MOVE_CHARGE), + + egg_moves(MARILL, + MOVE_LIGHT_SCREEN, + MOVE_PRESENT, + MOVE_AMNESIA, + MOVE_FUTURE_SIGHT, + MOVE_BELLY_DRUM, + MOVE_PERISH_SONG, + MOVE_SUPERSONIC, + MOVE_SUBSTITUTE), + + egg_moves(SUDOWOODO, + MOVE_SELF_DESTRUCT), + + egg_moves(HOPPIP, + MOVE_CONFUSION, + MOVE_ENCORE, + MOVE_DOUBLE_EDGE, + MOVE_REFLECT, + MOVE_AMNESIA, + MOVE_HELPING_HAND, + MOVE_PSYCH_UP), + + egg_moves(AIPOM, + MOVE_COUNTER, + MOVE_SCREECH, + MOVE_PURSUIT, + MOVE_AGILITY, + MOVE_SPITE, + MOVE_SLAM, + MOVE_DOUBLE_SLAP, + MOVE_BEAT_UP), + + egg_moves(SUNKERN, + MOVE_GRASS_WHISTLE, + MOVE_ENCORE, + MOVE_LEECH_SEED, + MOVE_NATURE_POWER, + MOVE_CURSE, + MOVE_HELPING_HAND), + + egg_moves(YANMA, + MOVE_WHIRLWIND, + MOVE_REVERSAL, + MOVE_LEECH_LIFE, + MOVE_SIGNAL_BEAM, + MOVE_SILVER_WIND), + + egg_moves(WOOPER, + MOVE_BODY_SLAM, + MOVE_ANCIENT_POWER, + MOVE_SAFEGUARD, + MOVE_CURSE, + MOVE_MUD_SPORT, + MOVE_STOCKPILE, + MOVE_SWALLOW, + MOVE_SPIT_UP), + + egg_moves(MURKROW, + MOVE_WHIRLWIND, + MOVE_DRILL_PECK, + MOVE_MIRROR_MOVE, + MOVE_WING_ATTACK, + MOVE_SKY_ATTACK, + MOVE_CONFUSE_RAY, + MOVE_FEATHER_DANCE, + MOVE_PERISH_SONG), + + egg_moves(MISDREAVUS, + MOVE_SCREECH, + MOVE_DESTINY_BOND, + MOVE_PSYCH_UP, + MOVE_IMPRISON), + + egg_moves(GIRAFARIG, + MOVE_TAKE_DOWN, + MOVE_AMNESIA, + MOVE_FORESIGHT, + MOVE_FUTURE_SIGHT, + MOVE_BEAT_UP, + MOVE_PSYCH_UP, + MOVE_WISH, + MOVE_MAGIC_COAT), + + egg_moves(PINECO, + MOVE_REFLECT, + MOVE_PIN_MISSILE, + MOVE_FLAIL, + MOVE_SWIFT, + MOVE_COUNTER, + MOVE_SAND_TOMB), + + egg_moves(DUNSPARCE, + MOVE_BIDE, + MOVE_ANCIENT_POWER, + MOVE_ROCK_SLIDE, + MOVE_BITE, + MOVE_HEADBUTT, + MOVE_ASTONISH, + MOVE_CURSE), + + egg_moves(GLIGAR, + MOVE_METAL_CLAW, + MOVE_WING_ATTACK, + MOVE_RAZOR_WIND, + MOVE_COUNTER, + MOVE_SAND_TOMB), + + egg_moves(SNUBBULL, + MOVE_METRONOME, + MOVE_FAINT_ATTACK, + MOVE_REFLECT, + MOVE_PRESENT, + MOVE_CRUNCH, + MOVE_HEAL_BELL, + MOVE_SNORE, + MOVE_SMELLING_SALT), + + egg_moves(QWILFISH, + MOVE_FLAIL, + MOVE_HAZE, + MOVE_BUBBLE_BEAM, + MOVE_SUPERSONIC, + MOVE_ASTONISH), + + egg_moves(SHUCKLE, + MOVE_SWEET_SCENT), + + egg_moves(HERACROSS, + MOVE_HARDEN, + MOVE_BIDE, + MOVE_FLAIL, + MOVE_FALSE_SWIPE), + + egg_moves(SNEASEL, + MOVE_COUNTER, + MOVE_SPITE, + MOVE_FORESIGHT, + MOVE_REFLECT, + MOVE_BITE, + MOVE_CRUSH_CLAW, + MOVE_FAKE_OUT), + + egg_moves(TEDDIURSA, + MOVE_CRUNCH, + MOVE_TAKE_DOWN, + MOVE_SEISMIC_TOSS, + MOVE_COUNTER, + MOVE_METAL_CLAW, + MOVE_FAKE_TEARS, + MOVE_YAWN, + MOVE_SLEEP_TALK), + + egg_moves(SLUGMA, + MOVE_ACID_ARMOR, + MOVE_HEAT_WAVE), + + egg_moves(SWINUB, + MOVE_TAKE_DOWN, + MOVE_BITE, + MOVE_BODY_SLAM, + MOVE_ROCK_SLIDE, + MOVE_ANCIENT_POWER, + MOVE_MUD_SHOT, + MOVE_ICICLE_SPEAR, + MOVE_DOUBLE_EDGE), + + egg_moves(CORSOLA, + MOVE_ROCK_SLIDE, + MOVE_SCREECH, + MOVE_MIST, + MOVE_AMNESIA, + MOVE_BARRIER, + MOVE_INGRAIN, + MOVE_CONFUSE_RAY, + MOVE_ICICLE_SPEAR), + + egg_moves(REMORAID, + MOVE_AURORA_BEAM, + MOVE_OCTAZOOKA, + MOVE_SUPERSONIC, + MOVE_HAZE, + MOVE_SCREECH, + MOVE_THUNDER_WAVE, + MOVE_ROCK_BLAST), + + egg_moves(DELIBIRD, + MOVE_AURORA_BEAM, + MOVE_QUICK_ATTACK, + MOVE_FUTURE_SIGHT, + MOVE_SPLASH, + MOVE_RAPID_SPIN, + MOVE_ICE_BALL), + + egg_moves(MANTINE, + MOVE_TWISTER, + MOVE_HYDRO_PUMP, + MOVE_HAZE, + MOVE_SLAM, + MOVE_MUD_SPORT, + MOVE_ROCK_SLIDE), + + egg_moves(SKARMORY, + MOVE_DRILL_PECK, + MOVE_PURSUIT, + MOVE_WHIRLWIND, + MOVE_SKY_ATTACK, + MOVE_CURSE), + + egg_moves(HOUNDOUR, + MOVE_FIRE_SPIN, + MOVE_RAGE, + MOVE_PURSUIT, + MOVE_COUNTER, + MOVE_SPITE, + MOVE_REVERSAL, + MOVE_BEAT_UP, + MOVE_WILL_O_WISP), + + egg_moves(PHANPY, + MOVE_FOCUS_ENERGY, + MOVE_BODY_SLAM, + MOVE_ANCIENT_POWER, + MOVE_SNORE, + MOVE_COUNTER, + MOVE_FISSURE), + + egg_moves(STANTLER, + MOVE_SPITE, + MOVE_DISABLE, + MOVE_BITE, + MOVE_SWAGGER, + MOVE_PSYCH_UP, + MOVE_EXTRASENSORY), + + egg_moves(TYROGUE, + MOVE_RAPID_SPIN, + MOVE_HI_JUMP_KICK, + MOVE_MACH_PUNCH, + MOVE_MIND_READER, + MOVE_HELPING_HAND), + + egg_moves(SMOOCHUM, + MOVE_MEDITATE, + MOVE_PSYCH_UP, + MOVE_FAKE_OUT, + MOVE_WISH, + MOVE_ICE_PUNCH), + + egg_moves(ELEKID, + MOVE_KARATE_CHOP, + MOVE_BARRIER, + MOVE_ROLLING_KICK, + MOVE_MEDITATE, + MOVE_CROSS_CHOP, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH), + + egg_moves(MAGBY, + MOVE_KARATE_CHOP, + MOVE_MEGA_PUNCH, + MOVE_BARRIER, + MOVE_SCREECH, + MOVE_CROSS_CHOP, + MOVE_THUNDER_PUNCH), + + egg_moves(MILTANK, + MOVE_PRESENT, + MOVE_REVERSAL, + MOVE_SEISMIC_TOSS, + MOVE_ENDURE, + MOVE_PSYCH_UP, + MOVE_CURSE, + MOVE_HELPING_HAND, + MOVE_SLEEP_TALK), + + egg_moves(LARVITAR, + MOVE_PURSUIT, + MOVE_STOMP, + MOVE_OUTRAGE, + MOVE_FOCUS_ENERGY, + MOVE_ANCIENT_POWER, + MOVE_DRAGON_DANCE, + MOVE_CURSE), + + egg_moves(TREECKO, + MOVE_CRUNCH, + MOVE_MUD_SPORT, + MOVE_ENDEAVOR, + MOVE_LEECH_SEED, + MOVE_DRAGON_BREATH, + MOVE_CRUSH_CLAW), + + egg_moves(TORCHIC, + MOVE_COUNTER, + MOVE_REVERSAL, + MOVE_ENDURE, + MOVE_SWAGGER, + MOVE_ROCK_SLIDE, + MOVE_SMELLING_SALT), + + egg_moves(MUDKIP, + MOVE_REFRESH, + MOVE_UPROAR, + MOVE_CURSE, + MOVE_STOMP, + MOVE_ICE_BALL, + MOVE_MIRROR_COAT), + + egg_moves(POOCHYENA, + MOVE_ASTONISH, + MOVE_POISON_FANG, + MOVE_COVET, + MOVE_LEER, + MOVE_YAWN), + + egg_moves(ZIGZAGOON, + MOVE_CHARM, + MOVE_PURSUIT, + MOVE_SUBSTITUTE, + MOVE_TICKLE, + MOVE_TRICK), + + egg_moves(LOTAD, + MOVE_SYNTHESIS, + MOVE_RAZOR_LEAF, + MOVE_SWEET_SCENT, + MOVE_LEECH_SEED, + MOVE_FLAIL, + MOVE_WATER_GUN), + + egg_moves(SEEDOT, + MOVE_LEECH_SEED, + MOVE_AMNESIA, + MOVE_QUICK_ATTACK, + MOVE_RAZOR_WIND, + MOVE_TAKE_DOWN, + MOVE_FALSE_SWIPE), + + egg_moves(NINCADA, + MOVE_ENDURE, + MOVE_FAINT_ATTACK, + MOVE_GUST, + MOVE_SILVER_WIND), + + egg_moves(TAILLOW, + MOVE_PURSUIT, + MOVE_SUPERSONIC, + MOVE_REFRESH, + MOVE_MIRROR_MOVE, + MOVE_RAGE, + MOVE_SKY_ATTACK), + + egg_moves(SHROOMISH, + MOVE_FAKE_TEARS, + MOVE_SWAGGER, + MOVE_CHARM, + MOVE_FALSE_SWIPE, + MOVE_HELPING_HAND), + + egg_moves(SPINDA, + MOVE_ENCORE, + MOVE_ROCK_SLIDE, + MOVE_ASSIST, + MOVE_DISABLE, + MOVE_BATON_PASS, + MOVE_WISH, + MOVE_TRICK, + MOVE_SMELLING_SALT), + + egg_moves(WINGULL, + MOVE_MIST, + MOVE_TWISTER, + MOVE_AGILITY, + MOVE_GUST, + MOVE_WATER_SPORT), + + egg_moves(SURSKIT, + MOVE_FORESIGHT, + MOVE_MUD_SHOT, + MOVE_PSYBEAM, + MOVE_HYDRO_PUMP, + MOVE_MIND_READER), + + egg_moves(WAILMER, + MOVE_DOUBLE_EDGE, + MOVE_THRASH, + MOVE_SWAGGER, + MOVE_SNORE, + MOVE_SLEEP_TALK, + MOVE_CURSE, + MOVE_FISSURE, + MOVE_TICKLE), + + egg_moves(SKITTY, + MOVE_HELPING_HAND, + MOVE_PSYCH_UP, + MOVE_UPROAR, + MOVE_FAKE_TEARS, + MOVE_WISH, + MOVE_BATON_PASS, + MOVE_SUBSTITUTE, + MOVE_TICKLE), + + egg_moves(KECLEON, + MOVE_DISABLE, + MOVE_MAGIC_COAT, + MOVE_TRICK), + + egg_moves(NOSEPASS, + MOVE_MAGNITUDE, + MOVE_ROLLOUT, + MOVE_EXPLOSION), + + egg_moves(TORKOAL, + MOVE_ERUPTION, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_YAWN), + + egg_moves(SABLEYE, + MOVE_PSYCH_UP, + MOVE_RECOVER, + MOVE_MOONLIGHT), + + egg_moves(BARBOACH, + MOVE_THRASH, + MOVE_WHIRLPOOL, + MOVE_SPARK), + + egg_moves(LUVDISC, + MOVE_SPLASH, + MOVE_SUPERSONIC, + MOVE_WATER_SPORT, + MOVE_MUD_SPORT), + + egg_moves(CORPHISH, + MOVE_MUD_SPORT, + MOVE_ENDEAVOR, + MOVE_BODY_SLAM, + MOVE_ANCIENT_POWER), + + egg_moves(FEEBAS, + MOVE_MIRROR_COAT, + MOVE_DRAGON_BREATH, + MOVE_MUD_SPORT, + MOVE_HYPNOSIS, + MOVE_LIGHT_SCREEN, + MOVE_CONFUSE_RAY), + + egg_moves(CARVANHA, + MOVE_HYDRO_PUMP, + MOVE_DOUBLE_EDGE, + MOVE_THRASH), + + egg_moves(TRAPINCH, + MOVE_FOCUS_ENERGY, + MOVE_QUICK_ATTACK, + MOVE_GUST), + + egg_moves(MAKUHITA, + MOVE_FAINT_ATTACK, + MOVE_DETECT, + MOVE_FORESIGHT, + MOVE_HELPING_HAND, + MOVE_CROSS_CHOP, + MOVE_REVENGE, + MOVE_DYNAMIC_PUNCH, + MOVE_COUNTER), + + egg_moves(ELECTRIKE, + MOVE_CRUNCH, + MOVE_HEADBUTT, + MOVE_UPROAR, + MOVE_CURSE, + MOVE_SWIFT), + + egg_moves(NUMEL, + MOVE_HOWL, + MOVE_SCARY_FACE, + MOVE_BODY_SLAM, + MOVE_ROLLOUT, + MOVE_DEFENSE_CURL, + MOVE_STOMP), + + egg_moves(SPHEAL, + MOVE_WATER_SPORT, + MOVE_STOCKPILE, + MOVE_SWALLOW, + MOVE_SPIT_UP, + MOVE_YAWN, + MOVE_ROCK_SLIDE, + MOVE_CURSE, + MOVE_FISSURE), + + egg_moves(CACNEA, + MOVE_GRASS_WHISTLE, + MOVE_ACID, + MOVE_TEETER_DANCE, + MOVE_DYNAMIC_PUNCH, + MOVE_COUNTER), + + egg_moves(SNORUNT, + MOVE_BLOCK, + MOVE_SPIKES), + + egg_moves(AZURILL, + MOVE_ENCORE, + MOVE_SING, + MOVE_REFRESH, + MOVE_SLAM, + MOVE_TICKLE), + + egg_moves(SPOINK, + MOVE_FUTURE_SIGHT, + MOVE_EXTRASENSORY, + MOVE_SUBSTITUTE, + MOVE_TRICK), + + egg_moves(PLUSLE, + MOVE_SUBSTITUTE, + MOVE_WISH), + + egg_moves(MINUN, + MOVE_SUBSTITUTE, + MOVE_WISH), + + egg_moves(MAWILE, + MOVE_SWORDS_DANCE, + MOVE_FALSE_SWIPE, + MOVE_POISON_FANG, + MOVE_PSYCH_UP, + MOVE_ANCIENT_POWER, + MOVE_TICKLE), + + egg_moves(MEDITITE, + MOVE_FIRE_PUNCH, + MOVE_THUNDER_PUNCH, + MOVE_ICE_PUNCH, + MOVE_FORESIGHT, + MOVE_FAKE_OUT, + MOVE_BATON_PASS, + MOVE_DYNAMIC_PUNCH), + + egg_moves(SWABLU, + MOVE_AGILITY, + MOVE_HAZE, + MOVE_PURSUIT, + MOVE_RAGE), + + egg_moves(DUSKULL, + MOVE_IMPRISON, + MOVE_DESTINY_BOND, + MOVE_PAIN_SPLIT, + MOVE_GRUDGE, + MOVE_MEMENTO, + MOVE_FAINT_ATTACK), + + egg_moves(ROSELIA, + MOVE_SPIKES, + MOVE_SYNTHESIS, + MOVE_PIN_MISSILE, + MOVE_COTTON_SPORE), + + egg_moves(SLAKOTH, + MOVE_PURSUIT, + MOVE_SLASH, + MOVE_BODY_SLAM, + MOVE_SNORE, + MOVE_CRUSH_CLAW, + MOVE_CURSE, + MOVE_SLEEP_TALK), + + egg_moves(GULPIN, + MOVE_DREAM_EATER, + MOVE_ACID_ARMOR, + MOVE_SMOG, + MOVE_PAIN_SPLIT), + + egg_moves(TROPIUS, + MOVE_HEADBUTT, + MOVE_SLAM, + MOVE_RAZOR_WIND, + MOVE_LEECH_SEED, + MOVE_NATURE_POWER), + + egg_moves(WHISMUR, + MOVE_TAKE_DOWN, + MOVE_SNORE, + MOVE_SWAGGER, + MOVE_EXTRASENSORY, + MOVE_SMELLING_SALT), + + egg_moves(CLAMPERL, + MOVE_REFRESH, + MOVE_MUD_SPORT, + MOVE_BODY_SLAM, + MOVE_SUPERSONIC, + MOVE_BARRIER, + MOVE_CONFUSE_RAY), + + egg_moves(ABSOL, + MOVE_BATON_PASS, + MOVE_FAINT_ATTACK, + MOVE_DOUBLE_EDGE, + MOVE_MAGIC_COAT, + MOVE_CURSE, + MOVE_SUBSTITUTE), + + egg_moves(SHUPPET, + MOVE_DISABLE, + MOVE_DESTINY_BOND, + MOVE_FORESIGHT, + MOVE_ASTONISH, + MOVE_IMPRISON), + + egg_moves(SEVIPER, + MOVE_STOCKPILE, + MOVE_SWALLOW, + MOVE_SPIT_UP, + MOVE_BODY_SLAM), + + egg_moves(ZANGOOSE, + MOVE_FLAIL, + MOVE_DOUBLE_KICK, + MOVE_RAZOR_WIND, + MOVE_COUNTER, + MOVE_ROAR, + MOVE_CURSE), + + egg_moves(RELICANTH, + MOVE_MAGNITUDE, + MOVE_SKULL_BASH, + MOVE_WATER_SPORT, + MOVE_AMNESIA, + MOVE_SLEEP_TALK, + MOVE_ROCK_SLIDE), + + egg_moves(ARON, + MOVE_ENDEAVOR, + MOVE_BODY_SLAM, + MOVE_STOMP, + MOVE_SMELLING_SALT), + + egg_moves(CASTFORM, + MOVE_FUTURE_SIGHT, + MOVE_PSYCH_UP), + + egg_moves(VOLBEAT, + MOVE_BATON_PASS, + MOVE_SILVER_WIND, + MOVE_TRICK), + + egg_moves(ILLUMISE, + MOVE_BATON_PASS, + MOVE_SILVER_WIND, + MOVE_GROWTH), + + egg_moves(LILEEP, + MOVE_BARRIER, + MOVE_RECOVER, + MOVE_MIRROR_COAT, + MOVE_ROCK_SLIDE), + + egg_moves(ANORITH, + MOVE_RAPID_SPIN, + MOVE_KNOCK_OFF, + MOVE_SWORDS_DANCE, + MOVE_ROCK_SLIDE), + + egg_moves(RALTS, + MOVE_DISABLE, + MOVE_WILL_O_WISP, + MOVE_MEAN_LOOK, + MOVE_MEMENTO, + MOVE_DESTINY_BOND), + + egg_moves(BAGON, + MOVE_HYDRO_PUMP, + MOVE_THRASH, + MOVE_DRAGON_RAGE, + MOVE_TWISTER, + MOVE_DRAGON_DANCE), + + egg_moves(CHIMECHO, + MOVE_DISABLE, + MOVE_CURSE, + MOVE_HYPNOSIS, + MOVE_DREAM_EATER), + + EGG_MOVES_TERMINATOR +}; diff --git a/src/data/pokemon/evolution.h b/src/data/pokemon/evolution.h new file mode 100644 index 000000000..8629ac9b1 --- /dev/null +++ b/src/data/pokemon/evolution.h @@ -0,0 +1,192 @@ +#ifndef POKEEMERALD_EVOLUTION_H +#define POKEEMERALD_EVOLUTION_H + +const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = +{ + [SPECIES_BULBASAUR] = {{EVO_LEVEL, 16, SPECIES_IVYSAUR}}, + [SPECIES_IVYSAUR] = {{EVO_LEVEL, 32, SPECIES_VENUSAUR}}, + [SPECIES_CHARMANDER] = {{EVO_LEVEL, 16, SPECIES_CHARMELEON}}, + [SPECIES_CHARMELEON] = {{EVO_LEVEL, 36, SPECIES_CHARIZARD}}, + [SPECIES_SQUIRTLE] = {{EVO_LEVEL, 16, SPECIES_WARTORTLE}}, + [SPECIES_WARTORTLE] = {{EVO_LEVEL, 36, SPECIES_BLASTOISE}}, + [SPECIES_CATERPIE] = {{EVO_LEVEL, 7, SPECIES_METAPOD}}, + [SPECIES_METAPOD] = {{EVO_LEVEL, 10, SPECIES_BUTTERFREE}}, + [SPECIES_WEEDLE] = {{EVO_LEVEL, 7, SPECIES_KAKUNA}}, + [SPECIES_KAKUNA] = {{EVO_LEVEL, 10, SPECIES_BEEDRILL}}, + [SPECIES_PIDGEY] = {{EVO_LEVEL, 18, SPECIES_PIDGEOTTO}}, + [SPECIES_PIDGEOTTO] = {{EVO_LEVEL, 36, SPECIES_PIDGEOT}}, + [SPECIES_RATTATA] = {{EVO_LEVEL, 20, SPECIES_RATICATE}}, + [SPECIES_SPEAROW] = {{EVO_LEVEL, 20, SPECIES_FEAROW}}, + [SPECIES_EKANS] = {{EVO_LEVEL, 22, SPECIES_ARBOK}}, + [SPECIES_PIKACHU] = {{EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_RAICHU}}, + [SPECIES_SANDSHREW] = {{EVO_LEVEL, 22, SPECIES_SANDSLASH}}, + [SPECIES_NIDORAN_F] = {{EVO_LEVEL, 16, SPECIES_NIDORINA}}, + [SPECIES_NIDORINA] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOQUEEN}}, + [SPECIES_NIDORAN_M] = {{EVO_LEVEL, 16, SPECIES_NIDORINO}}, + [SPECIES_NIDORINO] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOKING}}, + [SPECIES_CLEFAIRY] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_CLEFABLE}}, + [SPECIES_VULPIX] = {{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_NINETALES}}, + [SPECIES_JIGGLYPUFF] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_WIGGLYTUFF}}, + [SPECIES_ZUBAT] = {{EVO_LEVEL, 22, SPECIES_GOLBAT}}, + [SPECIES_GOLBAT] = {{EVO_FRIENDSHIP, 0, SPECIES_CROBAT}}, + [SPECIES_ODDISH] = {{EVO_LEVEL, 21, SPECIES_GLOOM}}, + [SPECIES_GLOOM] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VILEPLUME}, + {EVO_ITEM, ITEM_SUN_STONE, SPECIES_BELLOSSOM}}, + [SPECIES_PARAS] = {{EVO_LEVEL, 24, SPECIES_PARASECT}}, + [SPECIES_VENONAT] = {{EVO_LEVEL, 31, SPECIES_VENOMOTH}}, + [SPECIES_DIGLETT] = {{EVO_LEVEL, 26, SPECIES_DUGTRIO}}, + [SPECIES_MEOWTH] = {{EVO_LEVEL, 28, SPECIES_PERSIAN}}, + [SPECIES_PSYDUCK] = {{EVO_LEVEL, 33, SPECIES_GOLDUCK}}, + [SPECIES_MANKEY] = {{EVO_LEVEL, 28, SPECIES_PRIMEAPE}}, + [SPECIES_GROWLITHE] = {{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE}}, + [SPECIES_POLIWAG] = {{EVO_LEVEL, 25, SPECIES_POLIWHIRL}}, + [SPECIES_POLIWHIRL] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_POLIWRATH}, + {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}}, + [SPECIES_ABRA] = {{EVO_LEVEL, 16, SPECIES_KADABRA}}, + [SPECIES_KADABRA] = {{EVO_TRADE, 0, SPECIES_ALAKAZAM}}, + [SPECIES_MACHOP] = {{EVO_LEVEL, 28, SPECIES_MACHOKE}}, + [SPECIES_MACHOKE] = {{EVO_TRADE, 0, SPECIES_MACHAMP}}, + [SPECIES_BELLSPROUT] = {{EVO_LEVEL, 21, SPECIES_WEEPINBELL}}, + [SPECIES_WEEPINBELL] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VICTREEBEL}}, + [SPECIES_TENTACOOL] = {{EVO_LEVEL, 30, SPECIES_TENTACRUEL}}, + [SPECIES_GEODUDE] = {{EVO_LEVEL, 25, SPECIES_GRAVELER}}, + [SPECIES_GRAVELER] = {{EVO_TRADE, 0, SPECIES_GOLEM}}, + [SPECIES_PONYTA] = {{EVO_LEVEL, 40, SPECIES_RAPIDASH}}, + [SPECIES_SLOWPOKE] = {{EVO_LEVEL, 37, SPECIES_SLOWBRO}, + {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}}, + [SPECIES_MAGNEMITE] = {{EVO_LEVEL, 30, SPECIES_MAGNETON}}, + [SPECIES_DODUO] = {{EVO_LEVEL, 31, SPECIES_DODRIO}}, + [SPECIES_SEEL] = {{EVO_LEVEL, 34, SPECIES_DEWGONG}}, + [SPECIES_GRIMER] = {{EVO_LEVEL, 38, SPECIES_MUK}}, + [SPECIES_SHELLDER] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_CLOYSTER}}, + [SPECIES_GASTLY] = {{EVO_LEVEL, 25, SPECIES_HAUNTER}}, + [SPECIES_HAUNTER] = {{EVO_TRADE, 0, SPECIES_GENGAR}}, + [SPECIES_ONIX] = {{EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}}, + [SPECIES_DROWZEE] = {{EVO_LEVEL, 26, SPECIES_HYPNO}}, + [SPECIES_KRABBY] = {{EVO_LEVEL, 28, SPECIES_KINGLER}}, + [SPECIES_VOLTORB] = {{EVO_LEVEL, 30, SPECIES_ELECTRODE}}, + [SPECIES_EXEGGCUTE] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_EXEGGUTOR}}, + [SPECIES_CUBONE] = {{EVO_LEVEL, 28, SPECIES_MAROWAK}}, + [SPECIES_KOFFING] = {{EVO_LEVEL, 35, SPECIES_WEEZING}}, + [SPECIES_RHYHORN] = {{EVO_LEVEL, 42, SPECIES_RHYDON}}, + [SPECIES_CHANSEY] = {{EVO_FRIENDSHIP, 0, SPECIES_BLISSEY}}, + [SPECIES_HORSEA] = {{EVO_LEVEL, 32, SPECIES_SEADRA}}, + [SPECIES_SEADRA] = {{EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}}, + [SPECIES_GOLDEEN] = {{EVO_LEVEL, 33, SPECIES_SEAKING}}, + [SPECIES_STARYU] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_STARMIE}}, + [SPECIES_SCYTHER] = {{EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}}, + [SPECIES_MAGIKARP] = {{EVO_LEVEL, 20, SPECIES_GYARADOS}}, + [SPECIES_EEVEE] = {{EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_JOLTEON}, + {EVO_ITEM, ITEM_WATER_STONE, SPECIES_VAPOREON}, + {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_FLAREON}, + {EVO_FRIENDSHIP_DAY, 0, SPECIES_ESPEON}, + {EVO_FRIENDSHIP_NIGHT, 0, SPECIES_UMBREON}}, + [SPECIES_PORYGON] = {{EVO_TRADE_ITEM, ITEM_UP_GRADE, SPECIES_PORYGON2}}, + [SPECIES_OMANYTE] = {{EVO_LEVEL, 40, SPECIES_OMASTAR}}, + [SPECIES_KABUTO] = {{EVO_LEVEL, 40, SPECIES_KABUTOPS}}, + [SPECIES_DRATINI] = {{EVO_LEVEL, 30, SPECIES_DRAGONAIR}}, + [SPECIES_DRAGONAIR] = {{EVO_LEVEL, 55, SPECIES_DRAGONITE}}, + [SPECIES_CHIKORITA] = {{EVO_LEVEL, 16, SPECIES_BAYLEEF}}, + [SPECIES_BAYLEEF] = {{EVO_LEVEL, 32, SPECIES_MEGANIUM}}, + [SPECIES_CYNDAQUIL] = {{EVO_LEVEL, 14, SPECIES_QUILAVA}}, + [SPECIES_QUILAVA] = {{EVO_LEVEL, 36, SPECIES_TYPHLOSION}}, + [SPECIES_TOTODILE] = {{EVO_LEVEL, 18, SPECIES_CROCONAW}}, + [SPECIES_CROCONAW] = {{EVO_LEVEL, 30, SPECIES_FERALIGATR}}, + [SPECIES_SENTRET] = {{EVO_LEVEL, 15, SPECIES_FURRET}}, + [SPECIES_HOOTHOOT] = {{EVO_LEVEL, 20, SPECIES_NOCTOWL}}, + [SPECIES_LEDYBA] = {{EVO_LEVEL, 18, SPECIES_LEDIAN}}, + [SPECIES_SPINARAK] = {{EVO_LEVEL, 22, SPECIES_ARIADOS}}, + [SPECIES_CHINCHOU] = {{EVO_LEVEL, 27, SPECIES_LANTURN}}, + [SPECIES_PICHU] = {{EVO_FRIENDSHIP, 0, SPECIES_PIKACHU}}, + [SPECIES_CLEFFA] = {{EVO_FRIENDSHIP, 0, SPECIES_CLEFAIRY}}, + [SPECIES_IGGLYBUFF] = {{EVO_FRIENDSHIP, 0, SPECIES_JIGGLYPUFF}}, + [SPECIES_TOGEPI] = {{EVO_FRIENDSHIP, 0, SPECIES_TOGETIC}}, + [SPECIES_NATU] = {{EVO_LEVEL, 25, SPECIES_XATU}}, + [SPECIES_MAREEP] = {{EVO_LEVEL, 15, SPECIES_FLAAFFY}}, + [SPECIES_FLAAFFY] = {{EVO_LEVEL, 30, SPECIES_AMPHAROS}}, + [SPECIES_MARILL] = {{EVO_LEVEL, 18, SPECIES_AZUMARILL}}, + [SPECIES_HOPPIP] = {{EVO_LEVEL, 18, SPECIES_SKIPLOOM}}, + [SPECIES_SKIPLOOM] = {{EVO_LEVEL, 27, SPECIES_JUMPLUFF}}, + [SPECIES_SUNKERN] = {{EVO_ITEM, ITEM_SUN_STONE, SPECIES_SUNFLORA}}, + [SPECIES_WOOPER] = {{EVO_LEVEL, 20, SPECIES_QUAGSIRE}}, + [SPECIES_PINECO] = {{EVO_LEVEL, 31, SPECIES_FORRETRESS}}, + [SPECIES_SNUBBULL] = {{EVO_LEVEL, 23, SPECIES_GRANBULL}}, + [SPECIES_TEDDIURSA] = {{EVO_LEVEL, 30, SPECIES_URSARING}}, + [SPECIES_SLUGMA] = {{EVO_LEVEL, 38, SPECIES_MAGCARGO}}, + [SPECIES_SWINUB] = {{EVO_LEVEL, 33, SPECIES_PILOSWINE}}, + [SPECIES_REMORAID] = {{EVO_LEVEL, 25, SPECIES_OCTILLERY}}, + [SPECIES_HOUNDOUR] = {{EVO_LEVEL, 24, SPECIES_HOUNDOOM}}, + [SPECIES_PHANPY] = {{EVO_LEVEL, 25, SPECIES_DONPHAN}}, + [SPECIES_TYROGUE] = {{EVO_LEVEL_ATK_LT_DEF, 20, SPECIES_HITMONCHAN}, + {EVO_LEVEL_ATK_GT_DEF, 20, SPECIES_HITMONLEE}, + {EVO_LEVEL_ATK_EQ_DEF, 20, SPECIES_HITMONTOP}}, + [SPECIES_SMOOCHUM] = {{EVO_LEVEL, 30, SPECIES_JYNX}}, + [SPECIES_ELEKID] = {{EVO_LEVEL, 30, SPECIES_ELECTABUZZ}}, + [SPECIES_MAGBY] = {{EVO_LEVEL, 30, SPECIES_MAGMAR}}, + [SPECIES_LARVITAR] = {{EVO_LEVEL, 30, SPECIES_PUPITAR}}, + [SPECIES_PUPITAR] = {{EVO_LEVEL, 55, SPECIES_TYRANITAR}}, + [SPECIES_TREECKO] = {{EVO_LEVEL, 16, SPECIES_GROVYLE}}, + [SPECIES_GROVYLE] = {{EVO_LEVEL, 36, SPECIES_SCEPTILE}}, + [SPECIES_TORCHIC] = {{EVO_LEVEL, 16, SPECIES_COMBUSKEN}}, + [SPECIES_COMBUSKEN] = {{EVO_LEVEL, 36, SPECIES_BLAZIKEN}}, + [SPECIES_MUDKIP] = {{EVO_LEVEL, 16, SPECIES_MARSHTOMP}}, + [SPECIES_MARSHTOMP] = {{EVO_LEVEL, 36, SPECIES_SWAMPERT}}, + [SPECIES_POOCHYENA] = {{EVO_LEVEL, 18, SPECIES_MIGHTYENA}}, + [SPECIES_ZIGZAGOON] = {{EVO_LEVEL, 20, SPECIES_LINOONE}}, + [SPECIES_WURMPLE] = {{EVO_LEVEL_SILCOON, 7, SPECIES_SILCOON}, + {EVO_LEVEL_CASCOON, 7, SPECIES_CASCOON}}, + [SPECIES_SILCOON] = {{EVO_LEVEL, 10, SPECIES_BEAUTIFLY}}, + [SPECIES_CASCOON] = {{EVO_LEVEL, 10, SPECIES_DUSTOX}}, + [SPECIES_LOTAD] = {{EVO_LEVEL, 14, SPECIES_LOMBRE}}, + [SPECIES_LOMBRE] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_LUDICOLO}}, + [SPECIES_SEEDOT] = {{EVO_LEVEL, 14, SPECIES_NUZLEAF}}, + [SPECIES_NUZLEAF] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SHIFTRY}}, + [SPECIES_NINCADA] = {{EVO_LEVEL_NINJASK, 20, SPECIES_NINJASK}, + {EVO_LEVEL_SHEDINJA, 20, SPECIES_SHEDINJA}}, + [SPECIES_TAILLOW] = {{EVO_LEVEL, 22, SPECIES_SWELLOW}}, + [SPECIES_SHROOMISH] = {{EVO_LEVEL, 23, SPECIES_BRELOOM}}, + [SPECIES_WINGULL] = {{EVO_LEVEL, 25, SPECIES_PELIPPER}}, + [SPECIES_SURSKIT] = {{EVO_LEVEL, 22, SPECIES_MASQUERAIN}}, + [SPECIES_WAILMER] = {{EVO_LEVEL, 40, SPECIES_WAILORD}}, + [SPECIES_SKITTY] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_DELCATTY}}, + [SPECIES_BALTOY] = {{EVO_LEVEL, 36, SPECIES_CLAYDOL}}, + [SPECIES_BARBOACH] = {{EVO_LEVEL, 30, SPECIES_WHISCASH}}, + [SPECIES_CORPHISH] = {{EVO_LEVEL, 30, SPECIES_CRAWDAUNT}}, + [SPECIES_FEEBAS] = {{EVO_BEAUTY, 170, SPECIES_MILOTIC}}, + [SPECIES_CARVANHA] = {{EVO_LEVEL, 30, SPECIES_SHARPEDO}}, + [SPECIES_TRAPINCH] = {{EVO_LEVEL, 35, SPECIES_VIBRAVA}}, + [SPECIES_VIBRAVA] = {{EVO_LEVEL, 45, SPECIES_FLYGON}}, + [SPECIES_MAKUHITA] = {{EVO_LEVEL, 24, SPECIES_HARIYAMA}}, + [SPECIES_ELECTRIKE] = {{EVO_LEVEL, 26, SPECIES_MANECTRIC}}, + [SPECIES_NUMEL] = {{EVO_LEVEL, 33, SPECIES_CAMERUPT}}, + [SPECIES_SPHEAL] = {{EVO_LEVEL, 32, SPECIES_SEALEO}}, + [SPECIES_SEALEO] = {{EVO_LEVEL, 44, SPECIES_WALREIN}}, + [SPECIES_CACNEA] = {{EVO_LEVEL, 32, SPECIES_CACTURNE}}, + [SPECIES_SNORUNT] = {{EVO_LEVEL, 42, SPECIES_GLALIE}}, + [SPECIES_AZURILL] = {{EVO_FRIENDSHIP, 0, SPECIES_MARILL}}, + [SPECIES_SPOINK] = {{EVO_LEVEL, 32, SPECIES_GRUMPIG}}, + [SPECIES_MEDITITE] = {{EVO_LEVEL, 37, SPECIES_MEDICHAM}}, + [SPECIES_SWABLU] = {{EVO_LEVEL, 35, SPECIES_ALTARIA}}, + [SPECIES_WYNAUT] = {{EVO_LEVEL, 15, SPECIES_WOBBUFFET}}, + [SPECIES_DUSKULL] = {{EVO_LEVEL, 37, SPECIES_DUSCLOPS}}, + [SPECIES_SLAKOTH] = {{EVO_LEVEL, 18, SPECIES_VIGOROTH}}, + [SPECIES_VIGOROTH] = {{EVO_LEVEL, 36, SPECIES_SLAKING}}, + [SPECIES_GULPIN] = {{EVO_LEVEL, 26, SPECIES_SWALOT}}, + [SPECIES_WHISMUR] = {{EVO_LEVEL, 20, SPECIES_LOUDRED}}, + [SPECIES_LOUDRED] = {{EVO_LEVEL, 40, SPECIES_EXPLOUD}}, + [SPECIES_CLAMPERL] = {{EVO_TRADE_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL}, + {EVO_TRADE_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS}}, + [SPECIES_SHUPPET] = {{EVO_LEVEL, 37, SPECIES_BANETTE}}, + [SPECIES_ARON] = {{EVO_LEVEL, 32, SPECIES_LAIRON}}, + [SPECIES_LAIRON] = {{EVO_LEVEL, 42, SPECIES_AGGRON}}, + [SPECIES_LILEEP] = {{EVO_LEVEL, 40, SPECIES_CRADILY}}, + [SPECIES_ANORITH] = {{EVO_LEVEL, 40, SPECIES_ARMALDO}}, + [SPECIES_RALTS] = {{EVO_LEVEL, 20, SPECIES_KIRLIA}}, + [SPECIES_KIRLIA] = {{EVO_LEVEL, 30, SPECIES_GARDEVOIR}}, + [SPECIES_BAGON] = {{EVO_LEVEL, 30, SPECIES_SHELGON}}, + [SPECIES_SHELGON] = {{EVO_LEVEL, 50, SPECIES_SALAMENCE}}, + [SPECIES_BELDUM] = {{EVO_LEVEL, 20, SPECIES_METANG}}, + [SPECIES_METANG] = {{EVO_LEVEL, 45, SPECIES_METAGROSS}}, +}; + +#endif //POKEEMERALD_EVOLUTION_H diff --git a/src/data/pokemon/experience_tables.h b/src/data/pokemon/experience_tables.h new file mode 100644 index 000000000..58474b6f1 --- /dev/null +++ b/src/data/pokemon/experience_tables.h @@ -0,0 +1,849 @@ +#ifndef POKEEMERALD_EXPERIENCE_TABLES_H +#define POKEEMERALD_EXPERIENCE_TABLES_H + +#define SQUARE(n)(n * n) +#define CUBE(n)(n * n * n) + +#define EXP_SLOW(n)((5 * CUBE(n)) / 4) // (5 * (n)^3) / 4 +#define EXP_FAST(n)((4 * CUBE(n)) / 5) // (4 * (n)^3) / 5 +#define EXP_MEDIUM_FAST(n)(CUBE(n)) // (n)^3 +#define EXP_MEDIUM_SLOW(n)((6 * CUBE(n)) / 5 - (15 * SQUARE(n)) + (100 * n) - 140) // (6 * (n)^3) / 5 - (15 * (n)^2) + (100 * n) - 140 +#define EXP_ERRATIC(n) \ + (n <= 50) ? ((100 - n) * CUBE(n) / 50) \ + :(n <= 68) ? ((150 - n) * CUBE(n) / 100) \ + :(n <= 98) ? (((1911 - 10 * n) / 3) * CUBE(n) / 500) \ + : ((160 - n) * CUBE(n) / 100) +#define EXP_FLUCTUATING(n) \ + (n <= 15) ? (((n + 1) / 3 + 24) * CUBE(n) / 50) \ + :(n <= 36) ? ((n + 14) * CUBE(n) / 50) \ + : (((n / 2) + 32) * CUBE(n) / 50) + +const u32 gExperienceTables[][MAX_MON_LEVEL + 1] = +{ + { // Medium Fast + 0, // 0 + 1, // 1 + EXP_MEDIUM_FAST(2), + EXP_MEDIUM_FAST(3), + EXP_MEDIUM_FAST(4), + EXP_MEDIUM_FAST(5), + EXP_MEDIUM_FAST(6), + EXP_MEDIUM_FAST(7), + EXP_MEDIUM_FAST(8), + EXP_MEDIUM_FAST(9), + EXP_MEDIUM_FAST(10), + EXP_MEDIUM_FAST(11), + EXP_MEDIUM_FAST(12), + EXP_MEDIUM_FAST(13), + EXP_MEDIUM_FAST(14), + EXP_MEDIUM_FAST(15), + EXP_MEDIUM_FAST(16), + EXP_MEDIUM_FAST(17), + EXP_MEDIUM_FAST(18), + EXP_MEDIUM_FAST(19), + EXP_MEDIUM_FAST(20), + EXP_MEDIUM_FAST(21), + EXP_MEDIUM_FAST(22), + EXP_MEDIUM_FAST(23), + EXP_MEDIUM_FAST(24), + EXP_MEDIUM_FAST(25), + EXP_MEDIUM_FAST(26), + EXP_MEDIUM_FAST(27), + EXP_MEDIUM_FAST(28), + EXP_MEDIUM_FAST(29), + EXP_MEDIUM_FAST(30), + EXP_MEDIUM_FAST(31), + EXP_MEDIUM_FAST(32), + EXP_MEDIUM_FAST(33), + EXP_MEDIUM_FAST(34), + EXP_MEDIUM_FAST(35), + EXP_MEDIUM_FAST(36), + EXP_MEDIUM_FAST(37), + EXP_MEDIUM_FAST(38), + EXP_MEDIUM_FAST(39), + EXP_MEDIUM_FAST(40), + EXP_MEDIUM_FAST(41), + EXP_MEDIUM_FAST(42), + EXP_MEDIUM_FAST(43), + EXP_MEDIUM_FAST(44), + EXP_MEDIUM_FAST(45), + EXP_MEDIUM_FAST(46), + EXP_MEDIUM_FAST(47), + EXP_MEDIUM_FAST(48), + EXP_MEDIUM_FAST(49), + EXP_MEDIUM_FAST(50), + EXP_MEDIUM_FAST(51), + EXP_MEDIUM_FAST(52), + EXP_MEDIUM_FAST(53), + EXP_MEDIUM_FAST(54), + EXP_MEDIUM_FAST(55), + EXP_MEDIUM_FAST(56), + EXP_MEDIUM_FAST(57), + EXP_MEDIUM_FAST(58), + EXP_MEDIUM_FAST(59), + EXP_MEDIUM_FAST(60), + EXP_MEDIUM_FAST(61), + EXP_MEDIUM_FAST(62), + EXP_MEDIUM_FAST(63), + EXP_MEDIUM_FAST(64), + EXP_MEDIUM_FAST(65), + EXP_MEDIUM_FAST(66), + EXP_MEDIUM_FAST(67), + EXP_MEDIUM_FAST(68), + EXP_MEDIUM_FAST(69), + EXP_MEDIUM_FAST(70), + EXP_MEDIUM_FAST(71), + EXP_MEDIUM_FAST(72), + EXP_MEDIUM_FAST(73), + EXP_MEDIUM_FAST(74), + EXP_MEDIUM_FAST(75), + EXP_MEDIUM_FAST(76), + EXP_MEDIUM_FAST(77), + EXP_MEDIUM_FAST(78), + EXP_MEDIUM_FAST(79), + EXP_MEDIUM_FAST(80), + EXP_MEDIUM_FAST(81), + EXP_MEDIUM_FAST(82), + EXP_MEDIUM_FAST(83), + EXP_MEDIUM_FAST(84), + EXP_MEDIUM_FAST(85), + EXP_MEDIUM_FAST(86), + EXP_MEDIUM_FAST(87), + EXP_MEDIUM_FAST(88), + EXP_MEDIUM_FAST(89), + EXP_MEDIUM_FAST(90), + EXP_MEDIUM_FAST(91), + EXP_MEDIUM_FAST(92), + EXP_MEDIUM_FAST(93), + EXP_MEDIUM_FAST(94), + EXP_MEDIUM_FAST(95), + EXP_MEDIUM_FAST(96), + EXP_MEDIUM_FAST(97), + EXP_MEDIUM_FAST(98), + EXP_MEDIUM_FAST(99), + EXP_MEDIUM_FAST(100), + }, + { // Erratic + 0, // 0 + 1, // 1 + EXP_ERRATIC(2), + EXP_ERRATIC(3), + EXP_ERRATIC(4), + EXP_ERRATIC(5), + EXP_ERRATIC(6), + EXP_ERRATIC(7), + EXP_ERRATIC(8), + EXP_ERRATIC(9), + EXP_ERRATIC(10), + EXP_ERRATIC(11), + EXP_ERRATIC(12), + EXP_ERRATIC(13), + EXP_ERRATIC(14), + EXP_ERRATIC(15), + EXP_ERRATIC(16), + EXP_ERRATIC(17), + EXP_ERRATIC(18), + EXP_ERRATIC(19), + EXP_ERRATIC(20), + EXP_ERRATIC(21), + EXP_ERRATIC(22), + EXP_ERRATIC(23), + EXP_ERRATIC(24), + EXP_ERRATIC(25), + EXP_ERRATIC(26), + EXP_ERRATIC(27), + EXP_ERRATIC(28), + EXP_ERRATIC(29), + EXP_ERRATIC(30), + EXP_ERRATIC(31), + EXP_ERRATIC(32), + EXP_ERRATIC(33), + EXP_ERRATIC(34), + EXP_ERRATIC(35), + EXP_ERRATIC(36), + EXP_ERRATIC(37), + EXP_ERRATIC(38), + EXP_ERRATIC(39), + EXP_ERRATIC(40), + EXP_ERRATIC(41), + EXP_ERRATIC(42), + EXP_ERRATIC(43), + EXP_ERRATIC(44), + EXP_ERRATIC(45), + EXP_ERRATIC(46), + EXP_ERRATIC(47), + EXP_ERRATIC(48), + EXP_ERRATIC(49), + EXP_ERRATIC(50), + EXP_ERRATIC(51), + EXP_ERRATIC(52), + EXP_ERRATIC(53), + EXP_ERRATIC(54), + EXP_ERRATIC(55), + EXP_ERRATIC(56), + EXP_ERRATIC(57), + EXP_ERRATIC(58), + EXP_ERRATIC(59), + EXP_ERRATIC(60), + EXP_ERRATIC(61), + EXP_ERRATIC(62), + EXP_ERRATIC(63), + EXP_ERRATIC(64), + EXP_ERRATIC(65), + EXP_ERRATIC(66), + EXP_ERRATIC(67), + EXP_ERRATIC(68), + EXP_ERRATIC(69), + EXP_ERRATIC(70), + EXP_ERRATIC(71), + EXP_ERRATIC(72), + EXP_ERRATIC(73), + EXP_ERRATIC(74), + EXP_ERRATIC(75), + EXP_ERRATIC(76), + EXP_ERRATIC(77), + EXP_ERRATIC(78), + EXP_ERRATIC(79), + EXP_ERRATIC(80), + EXP_ERRATIC(81), + EXP_ERRATIC(82), + EXP_ERRATIC(83), + EXP_ERRATIC(84), + EXP_ERRATIC(85), + EXP_ERRATIC(86), + EXP_ERRATIC(87), + EXP_ERRATIC(88), + EXP_ERRATIC(89), + EXP_ERRATIC(90), + EXP_ERRATIC(91), + EXP_ERRATIC(92), + EXP_ERRATIC(93), + EXP_ERRATIC(94), + EXP_ERRATIC(95), + EXP_ERRATIC(96), + EXP_ERRATIC(97), + EXP_ERRATIC(98), + EXP_ERRATIC(99), + EXP_ERRATIC(100), + }, + { // Fluctuating + 0, // 0 + 1, // 1 + EXP_FLUCTUATING(2), + EXP_FLUCTUATING(3), + EXP_FLUCTUATING(4), + EXP_FLUCTUATING(5), + EXP_FLUCTUATING(6), + EXP_FLUCTUATING(7), + EXP_FLUCTUATING(8), + EXP_FLUCTUATING(9), + EXP_FLUCTUATING(10), + EXP_FLUCTUATING(11), + EXP_FLUCTUATING(12), + EXP_FLUCTUATING(13), + EXP_FLUCTUATING(14), + EXP_FLUCTUATING(15), + EXP_FLUCTUATING(16), + EXP_FLUCTUATING(17), + EXP_FLUCTUATING(18), + EXP_FLUCTUATING(19), + EXP_FLUCTUATING(20), + EXP_FLUCTUATING(21), + EXP_FLUCTUATING(22), + EXP_FLUCTUATING(23), + EXP_FLUCTUATING(24), + EXP_FLUCTUATING(25), + EXP_FLUCTUATING(26), + EXP_FLUCTUATING(27), + EXP_FLUCTUATING(28), + EXP_FLUCTUATING(29), + EXP_FLUCTUATING(30), + EXP_FLUCTUATING(31), + EXP_FLUCTUATING(32), + EXP_FLUCTUATING(33), + EXP_FLUCTUATING(34), + EXP_FLUCTUATING(35), + EXP_FLUCTUATING(36), + EXP_FLUCTUATING(37), + EXP_FLUCTUATING(38), + EXP_FLUCTUATING(39), + EXP_FLUCTUATING(40), + EXP_FLUCTUATING(41), + EXP_FLUCTUATING(42), + EXP_FLUCTUATING(43), + EXP_FLUCTUATING(44), + EXP_FLUCTUATING(45), + EXP_FLUCTUATING(46), + EXP_FLUCTUATING(47), + EXP_FLUCTUATING(48), + EXP_FLUCTUATING(49), + EXP_FLUCTUATING(50), + EXP_FLUCTUATING(51), + EXP_FLUCTUATING(52), + EXP_FLUCTUATING(53), + EXP_FLUCTUATING(54), + EXP_FLUCTUATING(55), + EXP_FLUCTUATING(56), + EXP_FLUCTUATING(57), + EXP_FLUCTUATING(58), + EXP_FLUCTUATING(59), + EXP_FLUCTUATING(60), + EXP_FLUCTUATING(61), + EXP_FLUCTUATING(62), + EXP_FLUCTUATING(63), + EXP_FLUCTUATING(64), + EXP_FLUCTUATING(65), + EXP_FLUCTUATING(66), + EXP_FLUCTUATING(67), + EXP_FLUCTUATING(68), + EXP_FLUCTUATING(69), + EXP_FLUCTUATING(70), + EXP_FLUCTUATING(71), + EXP_FLUCTUATING(72), + EXP_FLUCTUATING(73), + EXP_FLUCTUATING(74), + EXP_FLUCTUATING(75), + EXP_FLUCTUATING(76), + EXP_FLUCTUATING(77), + EXP_FLUCTUATING(78), + EXP_FLUCTUATING(79), + EXP_FLUCTUATING(80), + EXP_FLUCTUATING(81), + EXP_FLUCTUATING(82), + EXP_FLUCTUATING(83), + EXP_FLUCTUATING(84), + EXP_FLUCTUATING(85), + EXP_FLUCTUATING(86), + EXP_FLUCTUATING(87), + EXP_FLUCTUATING(88), + EXP_FLUCTUATING(89), + EXP_FLUCTUATING(90), + EXP_FLUCTUATING(91), + EXP_FLUCTUATING(92), + EXP_FLUCTUATING(93), + EXP_FLUCTUATING(94), + EXP_FLUCTUATING(95), + EXP_FLUCTUATING(96), + EXP_FLUCTUATING(97), + EXP_FLUCTUATING(98), + EXP_FLUCTUATING(99), + EXP_FLUCTUATING(100), + }, + { // Medium Slow + 0, // 0 + 1, // 1 + EXP_MEDIUM_SLOW(2), + EXP_MEDIUM_SLOW(3), + EXP_MEDIUM_SLOW(4), + EXP_MEDIUM_SLOW(5), + EXP_MEDIUM_SLOW(6), + EXP_MEDIUM_SLOW(7), + EXP_MEDIUM_SLOW(8), + EXP_MEDIUM_SLOW(9), + EXP_MEDIUM_SLOW(10), + EXP_MEDIUM_SLOW(11), + EXP_MEDIUM_SLOW(12), + EXP_MEDIUM_SLOW(13), + EXP_MEDIUM_SLOW(14), + EXP_MEDIUM_SLOW(15), + EXP_MEDIUM_SLOW(16), + EXP_MEDIUM_SLOW(17), + EXP_MEDIUM_SLOW(18), + EXP_MEDIUM_SLOW(19), + EXP_MEDIUM_SLOW(20), + EXP_MEDIUM_SLOW(21), + EXP_MEDIUM_SLOW(22), + EXP_MEDIUM_SLOW(23), + EXP_MEDIUM_SLOW(24), + EXP_MEDIUM_SLOW(25), + EXP_MEDIUM_SLOW(26), + EXP_MEDIUM_SLOW(27), + EXP_MEDIUM_SLOW(28), + EXP_MEDIUM_SLOW(29), + EXP_MEDIUM_SLOW(30), + EXP_MEDIUM_SLOW(31), + EXP_MEDIUM_SLOW(32), + EXP_MEDIUM_SLOW(33), + EXP_MEDIUM_SLOW(34), + EXP_MEDIUM_SLOW(35), + EXP_MEDIUM_SLOW(36), + EXP_MEDIUM_SLOW(37), + EXP_MEDIUM_SLOW(38), + EXP_MEDIUM_SLOW(39), + EXP_MEDIUM_SLOW(40), + EXP_MEDIUM_SLOW(41), + EXP_MEDIUM_SLOW(42), + EXP_MEDIUM_SLOW(43), + EXP_MEDIUM_SLOW(44), + EXP_MEDIUM_SLOW(45), + EXP_MEDIUM_SLOW(46), + EXP_MEDIUM_SLOW(47), + EXP_MEDIUM_SLOW(48), + EXP_MEDIUM_SLOW(49), + EXP_MEDIUM_SLOW(50), + EXP_MEDIUM_SLOW(51), + EXP_MEDIUM_SLOW(52), + EXP_MEDIUM_SLOW(53), + EXP_MEDIUM_SLOW(54), + EXP_MEDIUM_SLOW(55), + EXP_MEDIUM_SLOW(56), + EXP_MEDIUM_SLOW(57), + EXP_MEDIUM_SLOW(58), + EXP_MEDIUM_SLOW(59), + EXP_MEDIUM_SLOW(60), + EXP_MEDIUM_SLOW(61), + EXP_MEDIUM_SLOW(62), + EXP_MEDIUM_SLOW(63), + EXP_MEDIUM_SLOW(64), + EXP_MEDIUM_SLOW(65), + EXP_MEDIUM_SLOW(66), + EXP_MEDIUM_SLOW(67), + EXP_MEDIUM_SLOW(68), + EXP_MEDIUM_SLOW(69), + EXP_MEDIUM_SLOW(70), + EXP_MEDIUM_SLOW(71), + EXP_MEDIUM_SLOW(72), + EXP_MEDIUM_SLOW(73), + EXP_MEDIUM_SLOW(74), + EXP_MEDIUM_SLOW(75), + EXP_MEDIUM_SLOW(76), + EXP_MEDIUM_SLOW(77), + EXP_MEDIUM_SLOW(78), + EXP_MEDIUM_SLOW(79), + EXP_MEDIUM_SLOW(80), + EXP_MEDIUM_SLOW(81), + EXP_MEDIUM_SLOW(82), + EXP_MEDIUM_SLOW(83), + EXP_MEDIUM_SLOW(84), + EXP_MEDIUM_SLOW(85), + EXP_MEDIUM_SLOW(86), + EXP_MEDIUM_SLOW(87), + EXP_MEDIUM_SLOW(88), + EXP_MEDIUM_SLOW(89), + EXP_MEDIUM_SLOW(90), + EXP_MEDIUM_SLOW(91), + EXP_MEDIUM_SLOW(92), + EXP_MEDIUM_SLOW(93), + EXP_MEDIUM_SLOW(94), + EXP_MEDIUM_SLOW(95), + EXP_MEDIUM_SLOW(96), + EXP_MEDIUM_SLOW(97), + EXP_MEDIUM_SLOW(98), + EXP_MEDIUM_SLOW(99), + EXP_MEDIUM_SLOW(100), + }, + { // Fast + 0, // 0 + 1, // 1 + EXP_FAST(2), + EXP_FAST(3), + EXP_FAST(4), + EXP_FAST(5), + EXP_FAST(6), + EXP_FAST(7), + EXP_FAST(8), + EXP_FAST(9), + EXP_FAST(10), + EXP_FAST(11), + EXP_FAST(12), + EXP_FAST(13), + EXP_FAST(14), + EXP_FAST(15), + EXP_FAST(16), + EXP_FAST(17), + EXP_FAST(18), + EXP_FAST(19), + EXP_FAST(20), + EXP_FAST(21), + EXP_FAST(22), + EXP_FAST(23), + EXP_FAST(24), + EXP_FAST(25), + EXP_FAST(26), + EXP_FAST(27), + EXP_FAST(28), + EXP_FAST(29), + EXP_FAST(30), + EXP_FAST(31), + EXP_FAST(32), + EXP_FAST(33), + EXP_FAST(34), + EXP_FAST(35), + EXP_FAST(36), + EXP_FAST(37), + EXP_FAST(38), + EXP_FAST(39), + EXP_FAST(40), + EXP_FAST(41), + EXP_FAST(42), + EXP_FAST(43), + EXP_FAST(44), + EXP_FAST(45), + EXP_FAST(46), + EXP_FAST(47), + EXP_FAST(48), + EXP_FAST(49), + EXP_FAST(50), + EXP_FAST(51), + EXP_FAST(52), + EXP_FAST(53), + EXP_FAST(54), + EXP_FAST(55), + EXP_FAST(56), + EXP_FAST(57), + EXP_FAST(58), + EXP_FAST(59), + EXP_FAST(60), + EXP_FAST(61), + EXP_FAST(62), + EXP_FAST(63), + EXP_FAST(64), + EXP_FAST(65), + EXP_FAST(66), + EXP_FAST(67), + EXP_FAST(68), + EXP_FAST(69), + EXP_FAST(70), + EXP_FAST(71), + EXP_FAST(72), + EXP_FAST(73), + EXP_FAST(74), + EXP_FAST(75), + EXP_FAST(76), + EXP_FAST(77), + EXP_FAST(78), + EXP_FAST(79), + EXP_FAST(80), + EXP_FAST(81), + EXP_FAST(82), + EXP_FAST(83), + EXP_FAST(84), + EXP_FAST(85), + EXP_FAST(86), + EXP_FAST(87), + EXP_FAST(88), + EXP_FAST(89), + EXP_FAST(90), + EXP_FAST(91), + EXP_FAST(92), + EXP_FAST(93), + EXP_FAST(94), + EXP_FAST(95), + EXP_FAST(96), + EXP_FAST(97), + EXP_FAST(98), + EXP_FAST(99), + EXP_FAST(100), + }, + { // Slow + 0, // 0 + 1, // 1 + EXP_SLOW(2), + EXP_SLOW(3), + EXP_SLOW(4), + EXP_SLOW(5), + EXP_SLOW(6), + EXP_SLOW(7), + EXP_SLOW(8), + EXP_SLOW(9), + EXP_SLOW(10), + EXP_SLOW(11), + EXP_SLOW(12), + EXP_SLOW(13), + EXP_SLOW(14), + EXP_SLOW(15), + EXP_SLOW(16), + EXP_SLOW(17), + EXP_SLOW(18), + EXP_SLOW(19), + EXP_SLOW(20), + EXP_SLOW(21), + EXP_SLOW(22), + EXP_SLOW(23), + EXP_SLOW(24), + EXP_SLOW(25), + EXP_SLOW(26), + EXP_SLOW(27), + EXP_SLOW(28), + EXP_SLOW(29), + EXP_SLOW(30), + EXP_SLOW(31), + EXP_SLOW(32), + EXP_SLOW(33), + EXP_SLOW(34), + EXP_SLOW(35), + EXP_SLOW(36), + EXP_SLOW(37), + EXP_SLOW(38), + EXP_SLOW(39), + EXP_SLOW(40), + EXP_SLOW(41), + EXP_SLOW(42), + EXP_SLOW(43), + EXP_SLOW(44), + EXP_SLOW(45), + EXP_SLOW(46), + EXP_SLOW(47), + EXP_SLOW(48), + EXP_SLOW(49), + EXP_SLOW(50), + EXP_SLOW(51), + EXP_SLOW(52), + EXP_SLOW(53), + EXP_SLOW(54), + EXP_SLOW(55), + EXP_SLOW(56), + EXP_SLOW(57), + EXP_SLOW(58), + EXP_SLOW(59), + EXP_SLOW(60), + EXP_SLOW(61), + EXP_SLOW(62), + EXP_SLOW(63), + EXP_SLOW(64), + EXP_SLOW(65), + EXP_SLOW(66), + EXP_SLOW(67), + EXP_SLOW(68), + EXP_SLOW(69), + EXP_SLOW(70), + EXP_SLOW(71), + EXP_SLOW(72), + EXP_SLOW(73), + EXP_SLOW(74), + EXP_SLOW(75), + EXP_SLOW(76), + EXP_SLOW(77), + EXP_SLOW(78), + EXP_SLOW(79), + EXP_SLOW(80), + EXP_SLOW(81), + EXP_SLOW(82), + EXP_SLOW(83), + EXP_SLOW(84), + EXP_SLOW(85), + EXP_SLOW(86), + EXP_SLOW(87), + EXP_SLOW(88), + EXP_SLOW(89), + EXP_SLOW(90), + EXP_SLOW(91), + EXP_SLOW(92), + EXP_SLOW(93), + EXP_SLOW(94), + EXP_SLOW(95), + EXP_SLOW(96), + EXP_SLOW(97), + EXP_SLOW(98), + EXP_SLOW(99), + EXP_SLOW(100), + }, + { // Medium Fast copy 2 (unused? to-do: investigate) + 0, // 0 + 1, // 1 + EXP_MEDIUM_FAST(2), + EXP_MEDIUM_FAST(3), + EXP_MEDIUM_FAST(4), + EXP_MEDIUM_FAST(5), + EXP_MEDIUM_FAST(6), + EXP_MEDIUM_FAST(7), + EXP_MEDIUM_FAST(8), + EXP_MEDIUM_FAST(9), + EXP_MEDIUM_FAST(10), + EXP_MEDIUM_FAST(11), + EXP_MEDIUM_FAST(12), + EXP_MEDIUM_FAST(13), + EXP_MEDIUM_FAST(14), + EXP_MEDIUM_FAST(15), + EXP_MEDIUM_FAST(16), + EXP_MEDIUM_FAST(17), + EXP_MEDIUM_FAST(18), + EXP_MEDIUM_FAST(19), + EXP_MEDIUM_FAST(20), + EXP_MEDIUM_FAST(21), + EXP_MEDIUM_FAST(22), + EXP_MEDIUM_FAST(23), + EXP_MEDIUM_FAST(24), + EXP_MEDIUM_FAST(25), + EXP_MEDIUM_FAST(26), + EXP_MEDIUM_FAST(27), + EXP_MEDIUM_FAST(28), + EXP_MEDIUM_FAST(29), + EXP_MEDIUM_FAST(30), + EXP_MEDIUM_FAST(31), + EXP_MEDIUM_FAST(32), + EXP_MEDIUM_FAST(33), + EXP_MEDIUM_FAST(34), + EXP_MEDIUM_FAST(35), + EXP_MEDIUM_FAST(36), + EXP_MEDIUM_FAST(37), + EXP_MEDIUM_FAST(38), + EXP_MEDIUM_FAST(39), + EXP_MEDIUM_FAST(40), + EXP_MEDIUM_FAST(41), + EXP_MEDIUM_FAST(42), + EXP_MEDIUM_FAST(43), + EXP_MEDIUM_FAST(44), + EXP_MEDIUM_FAST(45), + EXP_MEDIUM_FAST(46), + EXP_MEDIUM_FAST(47), + EXP_MEDIUM_FAST(48), + EXP_MEDIUM_FAST(49), + EXP_MEDIUM_FAST(50), + EXP_MEDIUM_FAST(51), + EXP_MEDIUM_FAST(52), + EXP_MEDIUM_FAST(53), + EXP_MEDIUM_FAST(54), + EXP_MEDIUM_FAST(55), + EXP_MEDIUM_FAST(56), + EXP_MEDIUM_FAST(57), + EXP_MEDIUM_FAST(58), + EXP_MEDIUM_FAST(59), + EXP_MEDIUM_FAST(60), + EXP_MEDIUM_FAST(61), + EXP_MEDIUM_FAST(62), + EXP_MEDIUM_FAST(63), + EXP_MEDIUM_FAST(64), + EXP_MEDIUM_FAST(65), + EXP_MEDIUM_FAST(66), + EXP_MEDIUM_FAST(67), + EXP_MEDIUM_FAST(68), + EXP_MEDIUM_FAST(69), + EXP_MEDIUM_FAST(70), + EXP_MEDIUM_FAST(71), + EXP_MEDIUM_FAST(72), + EXP_MEDIUM_FAST(73), + EXP_MEDIUM_FAST(74), + EXP_MEDIUM_FAST(75), + EXP_MEDIUM_FAST(76), + EXP_MEDIUM_FAST(77), + EXP_MEDIUM_FAST(78), + EXP_MEDIUM_FAST(79), + EXP_MEDIUM_FAST(80), + EXP_MEDIUM_FAST(81), + EXP_MEDIUM_FAST(82), + EXP_MEDIUM_FAST(83), + EXP_MEDIUM_FAST(84), + EXP_MEDIUM_FAST(85), + EXP_MEDIUM_FAST(86), + EXP_MEDIUM_FAST(87), + EXP_MEDIUM_FAST(88), + EXP_MEDIUM_FAST(89), + EXP_MEDIUM_FAST(90), + EXP_MEDIUM_FAST(91), + EXP_MEDIUM_FAST(92), + EXP_MEDIUM_FAST(93), + EXP_MEDIUM_FAST(94), + EXP_MEDIUM_FAST(95), + EXP_MEDIUM_FAST(96), + EXP_MEDIUM_FAST(97), + EXP_MEDIUM_FAST(98), + EXP_MEDIUM_FAST(99), + EXP_MEDIUM_FAST(100), + }, + { // Medium Fast copy 3 (unused? to-do: investigate) + 0, // 0 + 1, // 1 + EXP_MEDIUM_FAST(2), + EXP_MEDIUM_FAST(3), + EXP_MEDIUM_FAST(4), + EXP_MEDIUM_FAST(5), + EXP_MEDIUM_FAST(6), + EXP_MEDIUM_FAST(7), + EXP_MEDIUM_FAST(8), + EXP_MEDIUM_FAST(9), + EXP_MEDIUM_FAST(10), + EXP_MEDIUM_FAST(11), + EXP_MEDIUM_FAST(12), + EXP_MEDIUM_FAST(13), + EXP_MEDIUM_FAST(14), + EXP_MEDIUM_FAST(15), + EXP_MEDIUM_FAST(16), + EXP_MEDIUM_FAST(17), + EXP_MEDIUM_FAST(18), + EXP_MEDIUM_FAST(19), + EXP_MEDIUM_FAST(20), + EXP_MEDIUM_FAST(21), + EXP_MEDIUM_FAST(22), + EXP_MEDIUM_FAST(23), + EXP_MEDIUM_FAST(24), + EXP_MEDIUM_FAST(25), + EXP_MEDIUM_FAST(26), + EXP_MEDIUM_FAST(27), + EXP_MEDIUM_FAST(28), + EXP_MEDIUM_FAST(29), + EXP_MEDIUM_FAST(30), + EXP_MEDIUM_FAST(31), + EXP_MEDIUM_FAST(32), + EXP_MEDIUM_FAST(33), + EXP_MEDIUM_FAST(34), + EXP_MEDIUM_FAST(35), + EXP_MEDIUM_FAST(36), + EXP_MEDIUM_FAST(37), + EXP_MEDIUM_FAST(38), + EXP_MEDIUM_FAST(39), + EXP_MEDIUM_FAST(40), + EXP_MEDIUM_FAST(41), + EXP_MEDIUM_FAST(42), + EXP_MEDIUM_FAST(43), + EXP_MEDIUM_FAST(44), + EXP_MEDIUM_FAST(45), + EXP_MEDIUM_FAST(46), + EXP_MEDIUM_FAST(47), + EXP_MEDIUM_FAST(48), + EXP_MEDIUM_FAST(49), + EXP_MEDIUM_FAST(50), + EXP_MEDIUM_FAST(51), + EXP_MEDIUM_FAST(52), + EXP_MEDIUM_FAST(53), + EXP_MEDIUM_FAST(54), + EXP_MEDIUM_FAST(55), + EXP_MEDIUM_FAST(56), + EXP_MEDIUM_FAST(57), + EXP_MEDIUM_FAST(58), + EXP_MEDIUM_FAST(59), + EXP_MEDIUM_FAST(60), + EXP_MEDIUM_FAST(61), + EXP_MEDIUM_FAST(62), + EXP_MEDIUM_FAST(63), + EXP_MEDIUM_FAST(64), + EXP_MEDIUM_FAST(65), + EXP_MEDIUM_FAST(66), + EXP_MEDIUM_FAST(67), + EXP_MEDIUM_FAST(68), + EXP_MEDIUM_FAST(69), + EXP_MEDIUM_FAST(70), + EXP_MEDIUM_FAST(71), + EXP_MEDIUM_FAST(72), + EXP_MEDIUM_FAST(73), + EXP_MEDIUM_FAST(74), + EXP_MEDIUM_FAST(75), + EXP_MEDIUM_FAST(76), + EXP_MEDIUM_FAST(77), + EXP_MEDIUM_FAST(78), + EXP_MEDIUM_FAST(79), + EXP_MEDIUM_FAST(80), + EXP_MEDIUM_FAST(81), + EXP_MEDIUM_FAST(82), + EXP_MEDIUM_FAST(83), + EXP_MEDIUM_FAST(84), + EXP_MEDIUM_FAST(85), + EXP_MEDIUM_FAST(86), + EXP_MEDIUM_FAST(87), + EXP_MEDIUM_FAST(88), + EXP_MEDIUM_FAST(89), + EXP_MEDIUM_FAST(90), + EXP_MEDIUM_FAST(91), + EXP_MEDIUM_FAST(92), + EXP_MEDIUM_FAST(93), + EXP_MEDIUM_FAST(94), + EXP_MEDIUM_FAST(95), + EXP_MEDIUM_FAST(96), + EXP_MEDIUM_FAST(97), + EXP_MEDIUM_FAST(98), + EXP_MEDIUM_FAST(99), + EXP_MEDIUM_FAST(100), + } +}; + +#endif //POKEEMERALD_EXPERIENCE_TABLES_H diff --git a/src/data/pokemon/item_effects.h b/src/data/pokemon/item_effects.h new file mode 100644 index 000000000..6ba0d694e --- /dev/null +++ b/src/data/pokemon/item_effects.h @@ -0,0 +1,241 @@ +#ifndef GUARD_ITEM_EFFECTS_H +#define GUARD_ITEM_EFFECTS_H + +const u8 gItemEffect_Potion[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 20}; +const u8 gItemEffect_Antidote[] = {0x00, 0x00, 0x00, 0x10, 0x00, 0x00}; +const u8 gItemEffect_BurnHeal[] = {0x00, 0x00, 0x00, 0x08, 0x00, 0x00}; +const u8 gItemEffect_IceHeal[] = {0x00, 0x00, 0x00, 0x04, 0x00, 0x00}; +const u8 gItemEffect_Awakening[] = {0x00, 0x00, 0x00, 0x20, 0x00, 0x00}; +const u8 gItemEffect_ParalyzeHeal[] = {0x00, 0x00, 0x00, 0x02, 0x00, 0x00}; +const u8 gItemEffect_FullRestore[] = {0x00, 0x00, 0x00, 0x3f, 0x04, 0x00, 0xff}; +const u8 gItemEffect_MaxPotion[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xff}; +const u8 gItemEffect_HyperPotion[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 200}; +const u8 gItemEffect_SuperPotion[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 50}; +const u8 gItemEffect_FullHeal[] = {0x00, 0x00, 0x00, 0x3f, 0x00, 0x00}; +const u8 gItemEffect_Revive[] = {0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0xfe}; +const u8 gItemEffect_MaxRevive[] = {0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0xff}; +const u8 gItemEffect_FreshWater[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 50}; +const u8 gItemEffect_SodaPop[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 60}; +const u8 gItemEffect_Lemonade[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 80}; +const u8 gItemEffect_MoomooMilk[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 100}; +const u8 gItemEffect_EnergyPowder[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0xe0, 50, 0xfb, 0xfb, 0xf6}; +const u8 gItemEffect_EnergyRoot[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0xe0, 200, 0xf6, 0xf6, 0xf1}; +const u8 gItemEffect_HealPowder[] = {0x00, 0x00, 0x00, 0x3f, 0x00, 0xe0, 0xfb, 0xfb, 0xf6}; +const u8 gItemEffect_RevivalHerb[] = {0x00, 0x00, 0x00, 0x00, 0x44, 0xe0, 0xff, 0xf1, 0xf1, 0xec}; +const u8 gItemEffect_Ether[] = {0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x0a}; +const u8 gItemEffect_MaxEther[] = {0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x7f}; +const u8 gItemEffect_Elixir[] = {0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0a}; +const u8 gItemEffect_MaxElixir[] = {0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7f}; +const u8 gItemEffect_LavaCookie[] = {0x00, 0x00, 0x00, 0x3f, 0x00, 0x00}; +const u8 gItemEffect_BlueFlute[] = {0x00, 0x00, 0x00, 0x20, 0x00, 0x00}; +const u8 gItemEffect_YellowFlute[] = {0x00, 0x00, 0x00, 0x01, 0x00, 0x00}; +const u8 gItemEffect_RedFlute[] = {0x80, 0x00, 0x00, 0x00, 0x00, 0x00}; +const u8 gItemEffect_BerryJuice[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 20}; +const u8 gItemEffect_SacredAsh[] = {0x40, 0x00, 0x00, 0x00, 0x44, 0x00, 0xff}; +const u8 gItemEffect_HPUp[] = {0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x0a, 0x05, 0x03, 0x02}; +const u8 gItemEffect_Protein[] = {0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0x0a, 0x05, 0x03, 0x02}; +const u8 gItemEffect_Iron[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x0a, 0x05, 0x03, 0x02}; +const u8 gItemEffect_Carbos[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x0a, 0x05, 0x03, 0x02}; +const u8 gItemEffect_Calcium[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x0a, 0x05, 0x03, 0x02}; +const u8 gItemEffect_RareCandy[] = {0x00, 0x00, 0x00, 0x40, 0x44, 0xe0, 253, 0x05, 0x03, 0x02}; +const u8 gItemEffect_PPUp[] = {0x00, 0x00, 0x00, 0x00, 0x20, 0xe0, 0x05, 0x03, 0x02}; +const u8 gItemEffect_Zinc[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x0a, 0x05, 0x03, 0x02}; +const u8 gItemEffect_PPMax[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x05, 0x03, 0x02}; +const u8 gItemEffect_GuardSpec[] = {0x00, 0x00, 0x00, 0x80, 0x00, 0x60, 0x01, 0x01}; +const u8 gItemEffect_DireHit[] = {0x20, 0x00, 0x00, 0x00, 0x00, 0x60, 0x01, 0x01}; +const u8 gItemEffect_XAttack[] = {0x01, 0x00, 0x00, 0x00, 0x00, 0x60, 0x01, 0x01}; +const u8 gItemEffect_XDefend[] = {0x00, 0x10, 0x00, 0x00, 0x00, 0x60, 0x01, 0x01}; +const u8 gItemEffect_XSpeed[] = {0x00, 0x01, 0x00, 0x00, 0x00, 0x60, 0x01, 0x01}; +const u8 gItemEffect_XAccuracy[] = {0x00, 0x00, 0x10, 0x00, 0x00, 0x60, 0x01, 0x01}; +const u8 gItemEffect_XSpecial[] = {0x00, 0x00, 0x01, 0x00, 0x00, 0x60, 0x01, 0x01}; +const u8 gItemEffect_SunStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00}; +const u8 gItemEffect_MoonStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00}; +const u8 gItemEffect_FireStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00}; +const u8 gItemEffect_ThunderStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00}; +const u8 gItemEffect_WaterStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00}; +const u8 gItemEffect_LeafStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00}; +const u8 gItemEffect_CheriBerry[] = {0x00, 0x00, 0x00, 0x02, 0x00, 0x00}; +const u8 gItemEffect_ChestoBerry[] = {0x00, 0x00, 0x00, 0x20, 0x00, 0x00}; +const u8 gItemEffect_PechaBerry[] = {0x00, 0x00, 0x00, 0x10, 0x00, 0x00}; +const u8 gItemEffect_RawstBerry[] = {0x00, 0x00, 0x00, 0x08, 0x00, 0x00}; +const u8 gItemEffect_AspearBerry[] = {0x00, 0x00, 0x00, 0x04, 0x00, 0x00}; +const u8 gItemEffect_LeppaBerry[] = {0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x0a}; +const u8 gItemEffect_OranBerry[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 10}; +const u8 gItemEffect_PersimBerry[] = {0x00, 0x00, 0x00, 0x01, 0x00, 0x00}; +const u8 gItemEffect_LumBerry[] = {0x00, 0x00, 0x00, 0x3f, 0x00, 0x00}; +const u8 gItemEffect_SitrusBerry[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 30}; +const u8 gItemEffect_PomegBerry[] = {0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0xf6, 0x0a, 0x05, 0x02}; +const u8 gItemEffect_KelpsyBerry[] = {0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xf6, 0x0a, 0x05, 0x02}; +const u8 gItemEffect_QualotBerry[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xf6, 0x0a, 0x05, 0x02}; +const u8 gItemEffect_HondrewBerry[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xf6, 0x0a, 0x05, 0x02}; +const u8 gItemEffect_GrepaBerry[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0xf6, 0x0a, 0x05, 0x02}; +const u8 gItemEffect_TamatoBerry[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0xf6, 0x0a, 0x05, 0x02}; + +const u8 *const gItemEffectTable[] = +{ + gItemEffect_Potion, + gItemEffect_Antidote, + gItemEffect_BurnHeal, + gItemEffect_IceHeal, + gItemEffect_Awakening, + gItemEffect_ParalyzeHeal, + gItemEffect_FullRestore, + gItemEffect_MaxPotion, + gItemEffect_HyperPotion, + gItemEffect_SuperPotion, + gItemEffect_FullHeal, + gItemEffect_Revive, + gItemEffect_MaxRevive, + gItemEffect_FreshWater, + gItemEffect_SodaPop, + gItemEffect_Lemonade, + gItemEffect_MoomooMilk, + gItemEffect_EnergyPowder, + gItemEffect_EnergyRoot, + gItemEffect_HealPowder, + gItemEffect_RevivalHerb, + gItemEffect_Ether, + gItemEffect_MaxEther, + gItemEffect_Elixir, + gItemEffect_MaxElixir, + gItemEffect_LavaCookie, + gItemEffect_BlueFlute, + gItemEffect_YellowFlute, + gItemEffect_RedFlute, + NULL, + NULL, + gItemEffect_BerryJuice, + gItemEffect_SacredAsh, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + gItemEffect_HPUp, + gItemEffect_Protein, + gItemEffect_Iron, + gItemEffect_Carbos, + gItemEffect_Calcium, + gItemEffect_RareCandy, + gItemEffect_PPUp, + gItemEffect_Zinc, + gItemEffect_PPMax, + NULL, + gItemEffect_GuardSpec, + gItemEffect_DireHit, + gItemEffect_XAttack, + gItemEffect_XDefend, + gItemEffect_XSpeed, + gItemEffect_XAccuracy, + gItemEffect_XSpecial, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + gItemEffect_SunStone, + gItemEffect_MoonStone, + gItemEffect_FireStone, + gItemEffect_ThunderStone, + gItemEffect_WaterStone, + gItemEffect_LeafStone, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + gItemEffect_CheriBerry, + gItemEffect_ChestoBerry, + gItemEffect_PechaBerry, + gItemEffect_RawstBerry, + gItemEffect_AspearBerry, + gItemEffect_LeppaBerry, + gItemEffect_OranBerry, + gItemEffect_PersimBerry, + gItemEffect_LumBerry, + gItemEffect_SitrusBerry, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + gItemEffect_PomegBerry, + gItemEffect_KelpsyBerry, + gItemEffect_QualotBerry, + gItemEffect_HondrewBerry, + gItemEffect_GrepaBerry, + gItemEffect_TamatoBerry, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +#endif //GUARD_ITEM_EFFECTS_H diff --git a/src/data/pokemon/level_up_learnset_pointers.h b/src/data/pokemon/level_up_learnset_pointers.h new file mode 100644 index 000000000..0f648526c --- /dev/null +++ b/src/data/pokemon/level_up_learnset_pointers.h @@ -0,0 +1,420 @@ +#ifndef POKEEMERALD_LEVEL_UP_LEARNSET_POINTERS_H +#define POKEEMERALD_LEVEL_UP_LEARNSET_POINTERS_H + +const u16 *const gLevelUpLearnsets[NUM_SPECIES] = +{ + [SPECIES_NONE] = sBulbasaurLevelUpLearnset, + [SPECIES_BULBASAUR] = sBulbasaurLevelUpLearnset, + [SPECIES_IVYSAUR] = sIvysaurLevelUpLearnset, + [SPECIES_VENUSAUR] = sVenusaurLevelUpLearnset, + [SPECIES_CHARMANDER] = sCharmanderLevelUpLearnset, + [SPECIES_CHARMELEON] = sCharmeleonLevelUpLearnset, + [SPECIES_CHARIZARD] = sCharizardLevelUpLearnset, + [SPECIES_SQUIRTLE] = sSquirtleLevelUpLearnset, + [SPECIES_WARTORTLE] = sWartortleLevelUpLearnset, + [SPECIES_BLASTOISE] = sBlastoiseLevelUpLearnset, + [SPECIES_CATERPIE] = sCaterpieLevelUpLearnset, + [SPECIES_METAPOD] = sMetapodLevelUpLearnset, + [SPECIES_BUTTERFREE] = sButterfreeLevelUpLearnset, + [SPECIES_WEEDLE] = sWeedleLevelUpLearnset, + [SPECIES_KAKUNA] = sKakunaLevelUpLearnset, + [SPECIES_BEEDRILL] = sBeedrillLevelUpLearnset, + [SPECIES_PIDGEY] = sPidgeyLevelUpLearnset, + [SPECIES_PIDGEOTTO] = sPidgeottoLevelUpLearnset, + [SPECIES_PIDGEOT] = sPidgeotLevelUpLearnset, + [SPECIES_RATTATA] = sRattataLevelUpLearnset, + [SPECIES_RATICATE] = sRaticateLevelUpLearnset, + [SPECIES_SPEAROW] = sSpearowLevelUpLearnset, + [SPECIES_FEAROW] = sFearowLevelUpLearnset, + [SPECIES_EKANS] = sEkansLevelUpLearnset, + [SPECIES_ARBOK] = sArbokLevelUpLearnset, + [SPECIES_PIKACHU] = sPikachuLevelUpLearnset, + [SPECIES_RAICHU] = sRaichuLevelUpLearnset, + [SPECIES_SANDSHREW] = sSandshrewLevelUpLearnset, + [SPECIES_SANDSLASH] = sSandslashLevelUpLearnset, + [SPECIES_NIDORAN_F] = sNidoranFLevelUpLearnset, + [SPECIES_NIDORINA] = sNidorinaLevelUpLearnset, + [SPECIES_NIDOQUEEN] = sNidoqueenLevelUpLearnset, + [SPECIES_NIDORAN_M] = sNidoranMLevelUpLearnset, + [SPECIES_NIDORINO] = sNidorinoLevelUpLearnset, + [SPECIES_NIDOKING] = sNidokingLevelUpLearnset, + [SPECIES_CLEFAIRY] = sClefairyLevelUpLearnset, + [SPECIES_CLEFABLE] = sClefableLevelUpLearnset, + [SPECIES_VULPIX] = sVulpixLevelUpLearnset, + [SPECIES_NINETALES] = sNinetalesLevelUpLearnset, + [SPECIES_JIGGLYPUFF] = sJigglypuffLevelUpLearnset, + [SPECIES_WIGGLYTUFF] = sWigglytuffLevelUpLearnset, + [SPECIES_ZUBAT] = sZubatLevelUpLearnset, + [SPECIES_GOLBAT] = sGolbatLevelUpLearnset, + [SPECIES_ODDISH] = sOddishLevelUpLearnset, + [SPECIES_GLOOM] = sGloomLevelUpLearnset, + [SPECIES_VILEPLUME] = sVileplumeLevelUpLearnset, + [SPECIES_PARAS] = sParasLevelUpLearnset, + [SPECIES_PARASECT] = sParasectLevelUpLearnset, + [SPECIES_VENONAT] = sVenonatLevelUpLearnset, + [SPECIES_VENOMOTH] = sVenomothLevelUpLearnset, + [SPECIES_DIGLETT] = sDiglettLevelUpLearnset, + [SPECIES_DUGTRIO] = sDugtrioLevelUpLearnset, + [SPECIES_MEOWTH] = sMeowthLevelUpLearnset, + [SPECIES_PERSIAN] = sPersianLevelUpLearnset, + [SPECIES_PSYDUCK] = sPsyduckLevelUpLearnset, + [SPECIES_GOLDUCK] = sGolduckLevelUpLearnset, + [SPECIES_MANKEY] = sMankeyLevelUpLearnset, + [SPECIES_PRIMEAPE] = sPrimeapeLevelUpLearnset, + [SPECIES_GROWLITHE] = sGrowlitheLevelUpLearnset, + [SPECIES_ARCANINE] = sArcanineLevelUpLearnset, + [SPECIES_POLIWAG] = sPoliwagLevelUpLearnset, + [SPECIES_POLIWHIRL] = sPoliwhirlLevelUpLearnset, + [SPECIES_POLIWRATH] = sPoliwrathLevelUpLearnset, + [SPECIES_ABRA] = sAbraLevelUpLearnset, + [SPECIES_KADABRA] = sKadabraLevelUpLearnset, + [SPECIES_ALAKAZAM] = sAlakazamLevelUpLearnset, + [SPECIES_MACHOP] = sMachopLevelUpLearnset, + [SPECIES_MACHOKE] = sMachokeLevelUpLearnset, + [SPECIES_MACHAMP] = sMachampLevelUpLearnset, + [SPECIES_BELLSPROUT] = sBellsproutLevelUpLearnset, + [SPECIES_WEEPINBELL] = sWeepinbellLevelUpLearnset, + [SPECIES_VICTREEBEL] = sVictreebelLevelUpLearnset, + [SPECIES_TENTACOOL] = sTentacoolLevelUpLearnset, + [SPECIES_TENTACRUEL] = sTentacruelLevelUpLearnset, + [SPECIES_GEODUDE] = sGeodudeLevelUpLearnset, + [SPECIES_GRAVELER] = sGravelerLevelUpLearnset, + [SPECIES_GOLEM] = sGolemLevelUpLearnset, + [SPECIES_PONYTA] = sPonytaLevelUpLearnset, + [SPECIES_RAPIDASH] = sRapidashLevelUpLearnset, + [SPECIES_SLOWPOKE] = sSlowpokeLevelUpLearnset, + [SPECIES_SLOWBRO] = sSlowbroLevelUpLearnset, + [SPECIES_MAGNEMITE] = sMagnemiteLevelUpLearnset, + [SPECIES_MAGNETON] = sMagnetonLevelUpLearnset, + [SPECIES_FARFETCHD] = sFarfetchdLevelUpLearnset, + [SPECIES_DODUO] = sDoduoLevelUpLearnset, + [SPECIES_DODRIO] = sDodrioLevelUpLearnset, + [SPECIES_SEEL] = sSeelLevelUpLearnset, + [SPECIES_DEWGONG] = sDewgongLevelUpLearnset, + [SPECIES_GRIMER] = sGrimerLevelUpLearnset, + [SPECIES_MUK] = sMukLevelUpLearnset, + [SPECIES_SHELLDER] = sShellderLevelUpLearnset, + [SPECIES_CLOYSTER] = sCloysterLevelUpLearnset, + [SPECIES_GASTLY] = sGastlyLevelUpLearnset, + [SPECIES_HAUNTER] = sHaunterLevelUpLearnset, + [SPECIES_GENGAR] = sGengarLevelUpLearnset, + [SPECIES_ONIX] = sOnixLevelUpLearnset, + [SPECIES_DROWZEE] = sDrowzeeLevelUpLearnset, + [SPECIES_HYPNO] = sHypnoLevelUpLearnset, + [SPECIES_KRABBY] = sKrabbyLevelUpLearnset, + [SPECIES_KINGLER] = sKinglerLevelUpLearnset, + [SPECIES_VOLTORB] = sVoltorbLevelUpLearnset, + [SPECIES_ELECTRODE] = sElectrodeLevelUpLearnset, + [SPECIES_EXEGGCUTE] = sExeggcuteLevelUpLearnset, + [SPECIES_EXEGGUTOR] = sExeggutorLevelUpLearnset, + [SPECIES_CUBONE] = sCuboneLevelUpLearnset, + [SPECIES_MAROWAK] = sMarowakLevelUpLearnset, + [SPECIES_HITMONLEE] = sHitmonleeLevelUpLearnset, + [SPECIES_HITMONCHAN] = sHitmonchanLevelUpLearnset, + [SPECIES_LICKITUNG] = sLickitungLevelUpLearnset, + [SPECIES_KOFFING] = sKoffingLevelUpLearnset, + [SPECIES_WEEZING] = sWeezingLevelUpLearnset, + [SPECIES_RHYHORN] = sRhyhornLevelUpLearnset, + [SPECIES_RHYDON] = sRhydonLevelUpLearnset, + [SPECIES_CHANSEY] = sChanseyLevelUpLearnset, + [SPECIES_TANGELA] = sTangelaLevelUpLearnset, + [SPECIES_KANGASKHAN] = sKangaskhanLevelUpLearnset, + [SPECIES_HORSEA] = sHorseaLevelUpLearnset, + [SPECIES_SEADRA] = sSeadraLevelUpLearnset, + [SPECIES_GOLDEEN] = sGoldeenLevelUpLearnset, + [SPECIES_SEAKING] = sSeakingLevelUpLearnset, + [SPECIES_STARYU] = sStaryuLevelUpLearnset, + [SPECIES_STARMIE] = sStarmieLevelUpLearnset, + [SPECIES_MR_MIME] = sMrmimeLevelUpLearnset, + [SPECIES_SCYTHER] = sScytherLevelUpLearnset, + [SPECIES_JYNX] = sJynxLevelUpLearnset, + [SPECIES_ELECTABUZZ] = sElectabuzzLevelUpLearnset, + [SPECIES_MAGMAR] = sMagmarLevelUpLearnset, + [SPECIES_PINSIR] = sPinsirLevelUpLearnset, + [SPECIES_TAUROS] = sTaurosLevelUpLearnset, + [SPECIES_MAGIKARP] = sMagikarpLevelUpLearnset, + [SPECIES_GYARADOS] = sGyaradosLevelUpLearnset, + [SPECIES_LAPRAS] = sLaprasLevelUpLearnset, + [SPECIES_DITTO] = sDittoLevelUpLearnset, + [SPECIES_EEVEE] = sEeveeLevelUpLearnset, + [SPECIES_VAPOREON] = sVaporeonLevelUpLearnset, + [SPECIES_JOLTEON] = sJolteonLevelUpLearnset, + [SPECIES_FLAREON] = sFlareonLevelUpLearnset, + [SPECIES_PORYGON] = sPorygonLevelUpLearnset, + [SPECIES_OMANYTE] = sOmanyteLevelUpLearnset, + [SPECIES_OMASTAR] = sOmastarLevelUpLearnset, + [SPECIES_KABUTO] = sKabutoLevelUpLearnset, + [SPECIES_KABUTOPS] = sKabutopsLevelUpLearnset, + [SPECIES_AERODACTYL] = sAerodactylLevelUpLearnset, + [SPECIES_SNORLAX] = sSnorlaxLevelUpLearnset, + [SPECIES_ARTICUNO] = sArticunoLevelUpLearnset, + [SPECIES_ZAPDOS] = sZapdosLevelUpLearnset, + [SPECIES_MOLTRES] = sMoltresLevelUpLearnset, + [SPECIES_DRATINI] = sDratiniLevelUpLearnset, + [SPECIES_DRAGONAIR] = sDragonairLevelUpLearnset, + [SPECIES_DRAGONITE] = sDragoniteLevelUpLearnset, + [SPECIES_MEWTWO] = sMewtwoLevelUpLearnset, + [SPECIES_MEW] = sMewLevelUpLearnset, + [SPECIES_CHIKORITA] = sChikoritaLevelUpLearnset, + [SPECIES_BAYLEEF] = sBayleefLevelUpLearnset, + [SPECIES_MEGANIUM] = sMeganiumLevelUpLearnset, + [SPECIES_CYNDAQUIL] = sCyndaquilLevelUpLearnset, + [SPECIES_QUILAVA] = sQuilavaLevelUpLearnset, + [SPECIES_TYPHLOSION] = sTyphlosionLevelUpLearnset, + [SPECIES_TOTODILE] = sTotodileLevelUpLearnset, + [SPECIES_CROCONAW] = sCroconawLevelUpLearnset, + [SPECIES_FERALIGATR] = sFeraligatrLevelUpLearnset, + [SPECIES_SENTRET] = sSentretLevelUpLearnset, + [SPECIES_FURRET] = sFurretLevelUpLearnset, + [SPECIES_HOOTHOOT] = sHoothootLevelUpLearnset, + [SPECIES_NOCTOWL] = sNoctowlLevelUpLearnset, + [SPECIES_LEDYBA] = sLedybaLevelUpLearnset, + [SPECIES_LEDIAN] = sLedianLevelUpLearnset, + [SPECIES_SPINARAK] = sSpinarakLevelUpLearnset, + [SPECIES_ARIADOS] = sAriadosLevelUpLearnset, + [SPECIES_CROBAT] = sCrobatLevelUpLearnset, + [SPECIES_CHINCHOU] = sChinchouLevelUpLearnset, + [SPECIES_LANTURN] = sLanturnLevelUpLearnset, + [SPECIES_PICHU] = sPichuLevelUpLearnset, + [SPECIES_CLEFFA] = sCleffaLevelUpLearnset, + [SPECIES_IGGLYBUFF] = sIgglybuffLevelUpLearnset, + [SPECIES_TOGEPI] = sTogepiLevelUpLearnset, + [SPECIES_TOGETIC] = sTogeticLevelUpLearnset, + [SPECIES_NATU] = sNatuLevelUpLearnset, + [SPECIES_XATU] = sXatuLevelUpLearnset, + [SPECIES_MAREEP] = sMareepLevelUpLearnset, + [SPECIES_FLAAFFY] = sFlaaffyLevelUpLearnset, + [SPECIES_AMPHAROS] = sAmpharosLevelUpLearnset, + [SPECIES_BELLOSSOM] = sBellossomLevelUpLearnset, + [SPECIES_MARILL] = sMarillLevelUpLearnset, + [SPECIES_AZUMARILL] = sAzumarillLevelUpLearnset, + [SPECIES_SUDOWOODO] = sSudowoodoLevelUpLearnset, + [SPECIES_POLITOED] = sPolitoedLevelUpLearnset, + [SPECIES_HOPPIP] = sHoppipLevelUpLearnset, + [SPECIES_SKIPLOOM] = sSkiploomLevelUpLearnset, + [SPECIES_JUMPLUFF] = sJumpluffLevelUpLearnset, + [SPECIES_AIPOM] = sAipomLevelUpLearnset, + [SPECIES_SUNKERN] = sSunkernLevelUpLearnset, + [SPECIES_SUNFLORA] = sSunfloraLevelUpLearnset, + [SPECIES_YANMA] = sYanmaLevelUpLearnset, + [SPECIES_WOOPER] = sWooperLevelUpLearnset, + [SPECIES_QUAGSIRE] = sQuagsireLevelUpLearnset, + [SPECIES_ESPEON] = sEspeonLevelUpLearnset, + [SPECIES_UMBREON] = sUmbreonLevelUpLearnset, + [SPECIES_MURKROW] = sMurkrowLevelUpLearnset, + [SPECIES_SLOWKING] = sSlowkingLevelUpLearnset, + [SPECIES_MISDREAVUS] = sMisdreavusLevelUpLearnset, + [SPECIES_UNOWN] = sUnownLevelUpLearnset, + [SPECIES_WOBBUFFET] = sWobbuffetLevelUpLearnset, + [SPECIES_GIRAFARIG] = sGirafarigLevelUpLearnset, + [SPECIES_PINECO] = sPinecoLevelUpLearnset, + [SPECIES_FORRETRESS] = sForretressLevelUpLearnset, + [SPECIES_DUNSPARCE] = sDunsparceLevelUpLearnset, + [SPECIES_GLIGAR] = sGligarLevelUpLearnset, + [SPECIES_STEELIX] = sSteelixLevelUpLearnset, + [SPECIES_SNUBBULL] = sSnubbullLevelUpLearnset, + [SPECIES_GRANBULL] = sGranbullLevelUpLearnset, + [SPECIES_QWILFISH] = sQwilfishLevelUpLearnset, + [SPECIES_SCIZOR] = sScizorLevelUpLearnset, + [SPECIES_SHUCKLE] = sShuckleLevelUpLearnset, + [SPECIES_HERACROSS] = sHeracrossLevelUpLearnset, + [SPECIES_SNEASEL] = sSneaselLevelUpLearnset, + [SPECIES_TEDDIURSA] = sTeddiursaLevelUpLearnset, + [SPECIES_URSARING] = sUrsaringLevelUpLearnset, + [SPECIES_SLUGMA] = sSlugmaLevelUpLearnset, + [SPECIES_MAGCARGO] = sMagcargoLevelUpLearnset, + [SPECIES_SWINUB] = sSwinubLevelUpLearnset, + [SPECIES_PILOSWINE] = sPiloswineLevelUpLearnset, + [SPECIES_CORSOLA] = sCorsolaLevelUpLearnset, + [SPECIES_REMORAID] = sRemoraidLevelUpLearnset, + [SPECIES_OCTILLERY] = sOctilleryLevelUpLearnset, + [SPECIES_DELIBIRD] = sDelibirdLevelUpLearnset, + [SPECIES_MANTINE] = sMantineLevelUpLearnset, + [SPECIES_SKARMORY] = sSkarmoryLevelUpLearnset, + [SPECIES_HOUNDOUR] = sHoundourLevelUpLearnset, + [SPECIES_HOUNDOOM] = sHoundoomLevelUpLearnset, + [SPECIES_KINGDRA] = sKingdraLevelUpLearnset, + [SPECIES_PHANPY] = sPhanpyLevelUpLearnset, + [SPECIES_DONPHAN] = sDonphanLevelUpLearnset, + [SPECIES_PORYGON2] = sPorygon2LevelUpLearnset, + [SPECIES_STANTLER] = sStantlerLevelUpLearnset, + [SPECIES_SMEARGLE] = sSmeargleLevelUpLearnset, + [SPECIES_TYROGUE] = sTyrogueLevelUpLearnset, + [SPECIES_HITMONTOP] = sHitmontopLevelUpLearnset, + [SPECIES_SMOOCHUM] = sSmoochumLevelUpLearnset, + [SPECIES_ELEKID] = sElekidLevelUpLearnset, + [SPECIES_MAGBY] = sMagbyLevelUpLearnset, + [SPECIES_MILTANK] = sMiltankLevelUpLearnset, + [SPECIES_BLISSEY] = sBlisseyLevelUpLearnset, + [SPECIES_RAIKOU] = sRaikouLevelUpLearnset, + [SPECIES_ENTEI] = sEnteiLevelUpLearnset, + [SPECIES_SUICUNE] = sSuicuneLevelUpLearnset, + [SPECIES_LARVITAR] = sLarvitarLevelUpLearnset, + [SPECIES_PUPITAR] = sPupitarLevelUpLearnset, + [SPECIES_TYRANITAR] = sTyranitarLevelUpLearnset, + [SPECIES_LUGIA] = sLugiaLevelUpLearnset, + [SPECIES_HO_OH] = sHoOhLevelUpLearnset, + [SPECIES_CELEBI] = sCelebiLevelUpLearnset, + [SPECIES_OLD_UNOWN_B] = sSpecies252LevelUpLearnset, + [SPECIES_OLD_UNOWN_C] = sSpecies253LevelUpLearnset, + [SPECIES_OLD_UNOWN_D] = sSpecies254LevelUpLearnset, + [SPECIES_OLD_UNOWN_E] = sSpecies255LevelUpLearnset, + [SPECIES_OLD_UNOWN_F] = sSpecies256LevelUpLearnset, + [SPECIES_OLD_UNOWN_G] = sSpecies257LevelUpLearnset, + [SPECIES_OLD_UNOWN_H] = sSpecies258LevelUpLearnset, + [SPECIES_OLD_UNOWN_I] = sSpecies259LevelUpLearnset, + [SPECIES_OLD_UNOWN_J] = sSpecies260LevelUpLearnset, + [SPECIES_OLD_UNOWN_K] = sSpecies261LevelUpLearnset, + [SPECIES_OLD_UNOWN_L] = sSpecies262LevelUpLearnset, + [SPECIES_OLD_UNOWN_M] = sSpecies263LevelUpLearnset, + [SPECIES_OLD_UNOWN_N] = sSpecies264LevelUpLearnset, + [SPECIES_OLD_UNOWN_O] = sSpecies265LevelUpLearnset, + [SPECIES_OLD_UNOWN_P] = sSpecies266LevelUpLearnset, + [SPECIES_OLD_UNOWN_Q] = sSpecies267LevelUpLearnset, + [SPECIES_OLD_UNOWN_R] = sSpecies268LevelUpLearnset, + [SPECIES_OLD_UNOWN_S] = sSpecies269LevelUpLearnset, + [SPECIES_OLD_UNOWN_T] = sSpecies270LevelUpLearnset, + [SPECIES_OLD_UNOWN_U] = sSpecies271LevelUpLearnset, + [SPECIES_OLD_UNOWN_V] = sSpecies272LevelUpLearnset, + [SPECIES_OLD_UNOWN_W] = sSpecies273LevelUpLearnset, + [SPECIES_OLD_UNOWN_X] = sSpecies274LevelUpLearnset, + [SPECIES_OLD_UNOWN_Y] = sSpecies275LevelUpLearnset, + [SPECIES_OLD_UNOWN_Z] = sSpecies276LevelUpLearnset, + [SPECIES_TREECKO] = sTreeckoLevelUpLearnset, + [SPECIES_GROVYLE] = sGrovyleLevelUpLearnset, + [SPECIES_SCEPTILE] = sSceptileLevelUpLearnset, + [SPECIES_TORCHIC] = sTorchicLevelUpLearnset, + [SPECIES_COMBUSKEN] = sCombuskenLevelUpLearnset, + [SPECIES_BLAZIKEN] = sBlazikenLevelUpLearnset, + [SPECIES_MUDKIP] = sMudkipLevelUpLearnset, + [SPECIES_MARSHTOMP] = sMarshtompLevelUpLearnset, + [SPECIES_SWAMPERT] = sSwampertLevelUpLearnset, + [SPECIES_POOCHYENA] = sPoochyenaLevelUpLearnset, + [SPECIES_MIGHTYENA] = sMightyenaLevelUpLearnset, + [SPECIES_ZIGZAGOON] = sZigzagoonLevelUpLearnset, + [SPECIES_LINOONE] = sLinooneLevelUpLearnset, + [SPECIES_WURMPLE] = sWurmpleLevelUpLearnset, + [SPECIES_SILCOON] = sSilcoonLevelUpLearnset, + [SPECIES_BEAUTIFLY] = sBeautiflyLevelUpLearnset, + [SPECIES_CASCOON] = sCascoonLevelUpLearnset, + [SPECIES_DUSTOX] = sDustoxLevelUpLearnset, + [SPECIES_LOTAD] = sLotadLevelUpLearnset, + [SPECIES_LOMBRE] = sLombreLevelUpLearnset, + [SPECIES_LUDICOLO] = sLudicoloLevelUpLearnset, + [SPECIES_SEEDOT] = sSeedotLevelUpLearnset, + [SPECIES_NUZLEAF] = sNuzleafLevelUpLearnset, + [SPECIES_SHIFTRY] = sShiftryLevelUpLearnset, + [SPECIES_NINCADA] = sNincadaLevelUpLearnset, + [SPECIES_NINJASK] = sNinjaskLevelUpLearnset, + [SPECIES_SHEDINJA] = sShedinjaLevelUpLearnset, + [SPECIES_TAILLOW] = sTaillowLevelUpLearnset, + [SPECIES_SWELLOW] = sSwellowLevelUpLearnset, + [SPECIES_SHROOMISH] = sShroomishLevelUpLearnset, + [SPECIES_BRELOOM] = sBreloomLevelUpLearnset, + [SPECIES_SPINDA] = sSpindaLevelUpLearnset, + [SPECIES_WINGULL] = sWingullLevelUpLearnset, + [SPECIES_PELIPPER] = sPelipperLevelUpLearnset, + [SPECIES_SURSKIT] = sSurskitLevelUpLearnset, + [SPECIES_MASQUERAIN] = sMasquerainLevelUpLearnset, + [SPECIES_WAILMER] = sWailmerLevelUpLearnset, + [SPECIES_WAILORD] = sWailordLevelUpLearnset, + [SPECIES_SKITTY] = sSkittyLevelUpLearnset, + [SPECIES_DELCATTY] = sDelcattyLevelUpLearnset, + [SPECIES_KECLEON] = sKecleonLevelUpLearnset, + [SPECIES_BALTOY] = sBaltoyLevelUpLearnset, + [SPECIES_CLAYDOL] = sClaydolLevelUpLearnset, + [SPECIES_NOSEPASS] = sNosepassLevelUpLearnset, + [SPECIES_TORKOAL] = sTorkoalLevelUpLearnset, + [SPECIES_SABLEYE] = sSableyeLevelUpLearnset, + [SPECIES_BARBOACH] = sBarboachLevelUpLearnset, + [SPECIES_WHISCASH] = sWhiscashLevelUpLearnset, + [SPECIES_LUVDISC] = sLuvdiscLevelUpLearnset, + [SPECIES_CORPHISH] = sCorphishLevelUpLearnset, + [SPECIES_CRAWDAUNT] = sCrawdauntLevelUpLearnset, + [SPECIES_FEEBAS] = sFeebasLevelUpLearnset, + [SPECIES_MILOTIC] = sMiloticLevelUpLearnset, + [SPECIES_CARVANHA] = sCarvanhaLevelUpLearnset, + [SPECIES_SHARPEDO] = sSharpedoLevelUpLearnset, + [SPECIES_TRAPINCH] = sTrapinchLevelUpLearnset, + [SPECIES_VIBRAVA] = sVibravaLevelUpLearnset, + [SPECIES_FLYGON] = sFlygonLevelUpLearnset, + [SPECIES_MAKUHITA] = sMakuhitaLevelUpLearnset, + [SPECIES_HARIYAMA] = sHariyamaLevelUpLearnset, + [SPECIES_ELECTRIKE] = sElectrikeLevelUpLearnset, + [SPECIES_MANECTRIC] = sManectricLevelUpLearnset, + [SPECIES_NUMEL] = sNumelLevelUpLearnset, + [SPECIES_CAMERUPT] = sCameruptLevelUpLearnset, + [SPECIES_SPHEAL] = sSphealLevelUpLearnset, + [SPECIES_SEALEO] = sSealeoLevelUpLearnset, + [SPECIES_WALREIN] = sWalreinLevelUpLearnset, + [SPECIES_CACNEA] = sCacneaLevelUpLearnset, + [SPECIES_CACTURNE] = sCacturneLevelUpLearnset, + [SPECIES_SNORUNT] = sSnoruntLevelUpLearnset, + [SPECIES_GLALIE] = sGlalieLevelUpLearnset, + [SPECIES_LUNATONE] = sLunatoneLevelUpLearnset, + [SPECIES_SOLROCK] = sSolrockLevelUpLearnset, + [SPECIES_AZURILL] = sAzurillLevelUpLearnset, + [SPECIES_SPOINK] = sSpoinkLevelUpLearnset, + [SPECIES_GRUMPIG] = sGrumpigLevelUpLearnset, + [SPECIES_PLUSLE] = sPlusleLevelUpLearnset, + [SPECIES_MINUN] = sMinunLevelUpLearnset, + [SPECIES_MAWILE] = sMawileLevelUpLearnset, + [SPECIES_MEDITITE] = sMedititeLevelUpLearnset, + [SPECIES_MEDICHAM] = sMedichamLevelUpLearnset, + [SPECIES_SWABLU] = sSwabluLevelUpLearnset, + [SPECIES_ALTARIA] = sAltariaLevelUpLearnset, + [SPECIES_WYNAUT] = sWynautLevelUpLearnset, + [SPECIES_DUSKULL] = sDuskullLevelUpLearnset, + [SPECIES_DUSCLOPS] = sDusclopsLevelUpLearnset, + [SPECIES_ROSELIA] = sRoseliaLevelUpLearnset, + [SPECIES_SLAKOTH] = sSlakothLevelUpLearnset, + [SPECIES_VIGOROTH] = sVigorothLevelUpLearnset, + [SPECIES_SLAKING] = sSlakingLevelUpLearnset, + [SPECIES_GULPIN] = sGulpinLevelUpLearnset, + [SPECIES_SWALOT] = sSwalotLevelUpLearnset, + [SPECIES_TROPIUS] = sTropiusLevelUpLearnset, + [SPECIES_WHISMUR] = sWhismurLevelUpLearnset, + [SPECIES_LOUDRED] = sLoudredLevelUpLearnset, + [SPECIES_EXPLOUD] = sExploudLevelUpLearnset, + [SPECIES_CLAMPERL] = sClamperlLevelUpLearnset, + [SPECIES_HUNTAIL] = sHuntailLevelUpLearnset, + [SPECIES_GOREBYSS] = sGorebyssLevelUpLearnset, + [SPECIES_ABSOL] = sAbsolLevelUpLearnset, + [SPECIES_SHUPPET] = sShuppetLevelUpLearnset, + [SPECIES_BANETTE] = sBanetteLevelUpLearnset, + [SPECIES_SEVIPER] = sSeviperLevelUpLearnset, + [SPECIES_ZANGOOSE] = sZangooseLevelUpLearnset, + [SPECIES_RELICANTH] = sRelicanthLevelUpLearnset, + [SPECIES_ARON] = sAronLevelUpLearnset, + [SPECIES_LAIRON] = sLaironLevelUpLearnset, + [SPECIES_AGGRON] = sAggronLevelUpLearnset, + [SPECIES_CASTFORM] = sCastformLevelUpLearnset, + [SPECIES_VOLBEAT] = sVolbeatLevelUpLearnset, + [SPECIES_ILLUMISE] = sIllumiseLevelUpLearnset, + [SPECIES_LILEEP] = sLileepLevelUpLearnset, + [SPECIES_CRADILY] = sCradilyLevelUpLearnset, + [SPECIES_ANORITH] = sAnorithLevelUpLearnset, + [SPECIES_ARMALDO] = sArmaldoLevelUpLearnset, + [SPECIES_RALTS] = sRaltsLevelUpLearnset, + [SPECIES_KIRLIA] = sKirliaLevelUpLearnset, + [SPECIES_GARDEVOIR] = sGardevoirLevelUpLearnset, + [SPECIES_BAGON] = sBagonLevelUpLearnset, + [SPECIES_SHELGON] = sShelgonLevelUpLearnset, + [SPECIES_SALAMENCE] = sSalamenceLevelUpLearnset, + [SPECIES_BELDUM] = sBeldumLevelUpLearnset, + [SPECIES_METANG] = sMetangLevelUpLearnset, + [SPECIES_METAGROSS] = sMetagrossLevelUpLearnset, + [SPECIES_REGIROCK] = sRegirockLevelUpLearnset, + [SPECIES_REGICE] = sRegiceLevelUpLearnset, + [SPECIES_REGISTEEL] = sRegisteelLevelUpLearnset, + [SPECIES_KYOGRE] = sKyogreLevelUpLearnset, + [SPECIES_GROUDON] = sGroudonLevelUpLearnset, + [SPECIES_RAYQUAZA] = sRayquazaLevelUpLearnset, + [SPECIES_LATIAS] = sLatiasLevelUpLearnset, + [SPECIES_LATIOS] = sLatiosLevelUpLearnset, + [SPECIES_JIRACHI] = sJirachiLevelUpLearnset, + [SPECIES_DEOXYS] = sDeoxysLevelUpLearnset, + [SPECIES_CHIMECHO] = sChimechoLevelUpLearnset, +}; + +#endif //POKEEMERALD_LEVEL_UP_LEARNSET_POINTERS_H diff --git a/src/data/pokemon/level_up_learnsets.h b/src/data/pokemon/level_up_learnsets.h new file mode 100644 index 000000000..062873aee --- /dev/null +++ b/src/data/pokemon/level_up_learnsets.h @@ -0,0 +1,5623 @@ +#ifndef POKEEMERALD_LEVEL_UP_LEARNSETS_H +#define POKEEMERALD_LEVEL_UP_LEARNSETS_H + +#define LEVEL_UP_MOVE(lvl, move) ((lvl << 9) | move) +#define LEVEL_UP_END 0xffff + +static const u16 sBulbasaurLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(10, MOVE_VINE_WHIP), + LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(20, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(25, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(32, MOVE_GROWTH), + LEVEL_UP_MOVE(39, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(46, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +static const u16 sIvysaurLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 4, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(10, MOVE_VINE_WHIP), + LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(22, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(29, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(38, MOVE_GROWTH), + LEVEL_UP_MOVE(47, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(56, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +static const u16 sVenusaurLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 1, MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 4, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(10, MOVE_VINE_WHIP), + LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(22, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(29, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(41, MOVE_GROWTH), + LEVEL_UP_MOVE(53, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(65, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +static const u16 sCharmanderLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_EMBER), + LEVEL_UP_MOVE(13, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(19, MOVE_RAGE), + LEVEL_UP_MOVE(25, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(31, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(37, MOVE_SLASH), + LEVEL_UP_MOVE(43, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(49, MOVE_FIRE_SPIN), + LEVEL_UP_END +}; + +static const u16 sCharmeleonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 7, MOVE_EMBER), + LEVEL_UP_MOVE(13, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(20, MOVE_RAGE), + LEVEL_UP_MOVE(27, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(34, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(41, MOVE_SLASH), + LEVEL_UP_MOVE(48, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(55, MOVE_FIRE_SPIN), + LEVEL_UP_END +}; + +static const u16 sCharizardLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 7, MOVE_EMBER), + LEVEL_UP_MOVE(13, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(20, MOVE_RAGE), + LEVEL_UP_MOVE(27, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(34, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(36, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(44, MOVE_SLASH), + LEVEL_UP_MOVE(54, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(64, MOVE_FIRE_SPIN), + LEVEL_UP_END +}; + +static const u16 sSquirtleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7, MOVE_BUBBLE), + LEVEL_UP_MOVE(10, MOVE_WITHDRAW), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(18, MOVE_BITE), + LEVEL_UP_MOVE(23, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(28, MOVE_PROTECT), + LEVEL_UP_MOVE(33, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(40, MOVE_SKULL_BASH), + LEVEL_UP_MOVE(47, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const u16 sWartortleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7, MOVE_BUBBLE), + LEVEL_UP_MOVE(10, MOVE_WITHDRAW), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(19, MOVE_BITE), + LEVEL_UP_MOVE(25, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(31, MOVE_PROTECT), + LEVEL_UP_MOVE(37, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(45, MOVE_SKULL_BASH), + LEVEL_UP_MOVE(53, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const u16 sBlastoiseLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7, MOVE_BUBBLE), + LEVEL_UP_MOVE(10, MOVE_WITHDRAW), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(19, MOVE_BITE), + LEVEL_UP_MOVE(25, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(31, MOVE_PROTECT), + LEVEL_UP_MOVE(42, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(55, MOVE_SKULL_BASH), + LEVEL_UP_MOVE(68, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const u16 sCaterpieLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), + LEVEL_UP_END +}; + +static const u16 sMetapodLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_END +}; + +static const u16 sButterfreeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE(10, MOVE_CONFUSION), + LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(14, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(18, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(23, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(28, MOVE_GUST), + LEVEL_UP_MOVE(34, MOVE_PSYBEAM), + LEVEL_UP_MOVE(40, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(47, MOVE_SILVER_WIND), + LEVEL_UP_END +}; + +static const u16 sWeedleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), + LEVEL_UP_END +}; + +static const u16 sKakunaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_END +}; + +static const u16 sBeedrillLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(10, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(15, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(20, MOVE_TWINEEDLE), + LEVEL_UP_MOVE(25, MOVE_RAGE), + LEVEL_UP_MOVE(30, MOVE_PURSUIT), + LEVEL_UP_MOVE(35, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(40, MOVE_AGILITY), + LEVEL_UP_MOVE(45, MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +static const u16 sPidgeyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_GUST), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(19, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(25, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(31, MOVE_FEATHER_DANCE), + LEVEL_UP_MOVE(39, MOVE_AGILITY), + LEVEL_UP_MOVE(47, MOVE_MIRROR_MOVE), + LEVEL_UP_END +}; + +static const u16 sPidgeottoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_GUST), + LEVEL_UP_MOVE( 5, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_GUST), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(20, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(27, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(34, MOVE_FEATHER_DANCE), + LEVEL_UP_MOVE(43, MOVE_AGILITY), + LEVEL_UP_MOVE(52, MOVE_MIRROR_MOVE), + LEVEL_UP_END +}; + +static const u16 sPidgeotLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_GUST), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 5, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_GUST), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(20, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(27, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(34, MOVE_FEATHER_DANCE), + LEVEL_UP_MOVE(48, MOVE_AGILITY), + LEVEL_UP_MOVE(62, MOVE_MIRROR_MOVE), + LEVEL_UP_END +}; + +static const u16 sRattataLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_HYPER_FANG), + LEVEL_UP_MOVE(20, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(27, MOVE_PURSUIT), + LEVEL_UP_MOVE(34, MOVE_SUPER_FANG), + LEVEL_UP_MOVE(41, MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +static const u16 sRaticateLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_HYPER_FANG), + LEVEL_UP_MOVE(20, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(30, MOVE_PURSUIT), + LEVEL_UP_MOVE(40, MOVE_SUPER_FANG), + LEVEL_UP_MOVE(50, MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +static const u16 sSpearowLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_LEER), + LEVEL_UP_MOVE(13, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(19, MOVE_PURSUIT), + LEVEL_UP_MOVE(25, MOVE_AERIAL_ACE), + LEVEL_UP_MOVE(31, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(37, MOVE_DRILL_PECK), + LEVEL_UP_MOVE(43, MOVE_AGILITY), + LEVEL_UP_END +}; + +static const u16 sFearowLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 7, MOVE_LEER), + LEVEL_UP_MOVE(13, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(26, MOVE_PURSUIT), + LEVEL_UP_MOVE(32, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(40, MOVE_DRILL_PECK), + LEVEL_UP_MOVE(47, MOVE_AGILITY), + LEVEL_UP_END +}; + +static const u16 sEkansLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 8, MOVE_POISON_STING), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(20, MOVE_GLARE), + LEVEL_UP_MOVE(25, MOVE_SCREECH), + LEVEL_UP_MOVE(32, MOVE_ACID), + LEVEL_UP_MOVE(37, MOVE_STOCKPILE), + LEVEL_UP_MOVE(37, MOVE_SWALLOW), + LEVEL_UP_MOVE(37, MOVE_SPIT_UP), + LEVEL_UP_MOVE(44, MOVE_HAZE), + LEVEL_UP_END +}; + +static const u16 sArbokLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 8, MOVE_POISON_STING), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(20, MOVE_GLARE), + LEVEL_UP_MOVE(28, MOVE_SCREECH), + LEVEL_UP_MOVE(38, MOVE_ACID), + LEVEL_UP_MOVE(46, MOVE_STOCKPILE), + LEVEL_UP_MOVE(46, MOVE_SWALLOW), + LEVEL_UP_MOVE(46, MOVE_SPIT_UP), + LEVEL_UP_MOVE(56, MOVE_HAZE), + LEVEL_UP_END +}; + +static const u16 sPikachuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(11, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(15, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(20, MOVE_SLAM), + LEVEL_UP_MOVE(26, MOVE_THUNDERBOLT), + LEVEL_UP_MOVE(33, MOVE_AGILITY), + LEVEL_UP_MOVE(41, MOVE_THUNDER), + LEVEL_UP_MOVE(50, MOVE_LIGHT_SCREEN), + LEVEL_UP_END +}; + +static const u16 sRaichuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_THUNDERBOLT), + LEVEL_UP_END +}; + +static const u16 sSandshrewLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 6, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(11, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_POISON_STING), + LEVEL_UP_MOVE(23, MOVE_SLASH), + LEVEL_UP_MOVE(30, MOVE_SWIFT), + LEVEL_UP_MOVE(37, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(45, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(53, MOVE_SANDSTORM), + LEVEL_UP_END +}; + +static const u16 sSandslashLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 6, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(11, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_POISON_STING), + LEVEL_UP_MOVE(24, MOVE_SLASH), + LEVEL_UP_MOVE(33, MOVE_SWIFT), + LEVEL_UP_MOVE(42, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(52, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(62, MOVE_SANDSTORM), + LEVEL_UP_END +}; + +static const u16 sNidoranFLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 8, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(12, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(17, MOVE_POISON_STING), + LEVEL_UP_MOVE(20, MOVE_BITE), + LEVEL_UP_MOVE(23, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(30, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(38, MOVE_FLATTER), + LEVEL_UP_MOVE(47, MOVE_CRUNCH), + LEVEL_UP_END +}; + +static const u16 sNidorinaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 8, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(12, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(18, MOVE_POISON_STING), + LEVEL_UP_MOVE(22, MOVE_BITE), + LEVEL_UP_MOVE(26, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(34, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(43, MOVE_FLATTER), + LEVEL_UP_MOVE(53, MOVE_CRUNCH), + LEVEL_UP_END +}; + +static const u16 sNidoqueenLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE(23, MOVE_BODY_SLAM), + LEVEL_UP_END +}; + +static const u16 sNidoranMLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 8, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(12, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(17, MOVE_POISON_STING), + LEVEL_UP_MOVE(20, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE(23, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(30, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(38, MOVE_FLATTER), + LEVEL_UP_MOVE(47, MOVE_HORN_DRILL), + LEVEL_UP_END +}; + +static const u16 sNidorinoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 8, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(12, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(18, MOVE_POISON_STING), + LEVEL_UP_MOVE(22, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE(26, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(34, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(43, MOVE_FLATTER), + LEVEL_UP_MOVE(53, MOVE_HORN_DRILL), + LEVEL_UP_END +}; + +static const u16 sNidokingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE(23, MOVE_THRASH), + LEVEL_UP_END +}; + +static const u16 sClefairyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 5, MOVE_ENCORE), + LEVEL_UP_MOVE( 9, MOVE_SING), + LEVEL_UP_MOVE(13, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(17, MOVE_FOLLOW_ME), + LEVEL_UP_MOVE(21, MOVE_MINIMIZE), + LEVEL_UP_MOVE(25, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(29, MOVE_METRONOME), + LEVEL_UP_MOVE(33, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(37, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(41, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(45, MOVE_METEOR_MASH), + LEVEL_UP_END +}; + +static const u16 sClefableLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE( 1, MOVE_MINIMIZE), + LEVEL_UP_MOVE( 1, MOVE_METRONOME), + LEVEL_UP_END +}; + +static const u16 sVulpixLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9, MOVE_ROAR), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(17, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(21, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(25, MOVE_IMPRISON), + LEVEL_UP_MOVE(29, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(33, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(37, MOVE_GRUDGE), + LEVEL_UP_MOVE(41, MOVE_FIRE_SPIN), + LEVEL_UP_END +}; + +static const u16 sNinetalesLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 1, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(45, MOVE_FIRE_SPIN), + LEVEL_UP_END +}; + +static const u16 sJigglypuffLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 9, MOVE_POUND), + LEVEL_UP_MOVE(14, MOVE_DISABLE), + LEVEL_UP_MOVE(19, MOVE_ROLLOUT), + LEVEL_UP_MOVE(24, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(29, MOVE_REST), + LEVEL_UP_MOVE(34, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(39, MOVE_MIMIC), + LEVEL_UP_MOVE(44, MOVE_HYPER_VOICE), + LEVEL_UP_MOVE(49, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const u16 sWigglytuffLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), + LEVEL_UP_END +}; + +static const u16 sZubatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 6, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(16, MOVE_BITE), + LEVEL_UP_MOVE(21, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(26, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(31, MOVE_AIR_CUTTER), + LEVEL_UP_MOVE(36, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(41, MOVE_POISON_FANG), + LEVEL_UP_MOVE(46, MOVE_HAZE), + LEVEL_UP_END +}; + +static const u16 sGolbatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 1, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 6, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(16, MOVE_BITE), + LEVEL_UP_MOVE(21, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(28, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(35, MOVE_AIR_CUTTER), + LEVEL_UP_MOVE(42, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(49, MOVE_POISON_FANG), + LEVEL_UP_MOVE(56, MOVE_HAZE), + LEVEL_UP_END +}; + +static const u16 sOddishLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 7, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(14, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(16, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(18, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(23, MOVE_ACID), + LEVEL_UP_MOVE(32, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(39, MOVE_PETAL_DANCE), + LEVEL_UP_END +}; + +static const u16 sGloomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 1, MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 7, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(14, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(16, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(18, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(24, MOVE_ACID), + LEVEL_UP_MOVE(35, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(44, MOVE_PETAL_DANCE), + LEVEL_UP_END +}; + +static const u16 sVileplumeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_AROMATHERAPY), + LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 1, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(44, MOVE_PETAL_DANCE), + LEVEL_UP_END +}; + +static const u16 sParasLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 7, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(19, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE(25, MOVE_SPORE), + LEVEL_UP_MOVE(31, MOVE_SLASH), + LEVEL_UP_MOVE(37, MOVE_GROWTH), + LEVEL_UP_MOVE(43, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(49, MOVE_AROMATHERAPY), + LEVEL_UP_END +}; + +static const u16 sParasectLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 1, MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 7, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(19, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE(27, MOVE_SPORE), + LEVEL_UP_MOVE(35, MOVE_SLASH), + LEVEL_UP_MOVE(43, MOVE_GROWTH), + LEVEL_UP_MOVE(51, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(59, MOVE_AROMATHERAPY), + LEVEL_UP_END +}; + +static const u16 sVenonatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), + LEVEL_UP_MOVE( 9, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(17, MOVE_CONFUSION), + LEVEL_UP_MOVE(20, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(25, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE(28, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(33, MOVE_PSYBEAM), + LEVEL_UP_MOVE(36, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(41, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +static const u16 sVenomothLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SILVER_WIND), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 9, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(17, MOVE_CONFUSION), + LEVEL_UP_MOVE(20, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(25, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE(28, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(31, MOVE_GUST), + LEVEL_UP_MOVE(36, MOVE_PSYBEAM), + LEVEL_UP_MOVE(42, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(52, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +static const u16 sDiglettLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 5, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(17, MOVE_DIG), + LEVEL_UP_MOVE(25, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(33, MOVE_SLASH), + LEVEL_UP_MOVE(41, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(49, MOVE_FISSURE), + LEVEL_UP_END +}; + +static const u16 sDugtrioLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 5, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(17, MOVE_DIG), + LEVEL_UP_MOVE(25, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(26, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(38, MOVE_SLASH), + LEVEL_UP_MOVE(51, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(64, MOVE_FISSURE), + LEVEL_UP_END +}; + +static const u16 sMeowthLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE(11, MOVE_BITE), + LEVEL_UP_MOVE(20, MOVE_PAY_DAY), + LEVEL_UP_MOVE(28, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(35, MOVE_SCREECH), + LEVEL_UP_MOVE(41, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(46, MOVE_SLASH), + LEVEL_UP_MOVE(50, MOVE_FAKE_OUT), + LEVEL_UP_END +}; + +static const u16 sPersianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE(11, MOVE_BITE), + LEVEL_UP_MOVE(20, MOVE_PAY_DAY), + LEVEL_UP_MOVE(29, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(38, MOVE_SCREECH), + LEVEL_UP_MOVE(46, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(53, MOVE_SLASH), + LEVEL_UP_MOVE(59, MOVE_FAKE_OUT), + LEVEL_UP_END +}; + +static const u16 sPsyduckLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_DISABLE), + LEVEL_UP_MOVE(16, MOVE_CONFUSION), + LEVEL_UP_MOVE(23, MOVE_SCREECH), + LEVEL_UP_MOVE(31, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(40, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const u16 sGolduckLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_DISABLE), + LEVEL_UP_MOVE(16, MOVE_CONFUSION), + LEVEL_UP_MOVE(23, MOVE_SCREECH), + LEVEL_UP_MOVE(31, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(44, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(58, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const u16 sMankeyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 9, MOVE_LOW_KICK), + LEVEL_UP_MOVE(15, MOVE_KARATE_CHOP), + LEVEL_UP_MOVE(21, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(27, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(33, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(39, MOVE_CROSS_CHOP), + LEVEL_UP_MOVE(45, MOVE_SCREECH), + LEVEL_UP_MOVE(51, MOVE_THRASH), + LEVEL_UP_END +}; + +static const u16 sPrimeapeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_LOW_KICK), + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 9, MOVE_LOW_KICK), + LEVEL_UP_MOVE(15, MOVE_KARATE_CHOP), + LEVEL_UP_MOVE(21, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(27, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(28, MOVE_RAGE), + LEVEL_UP_MOVE(36, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(45, MOVE_CROSS_CHOP), + LEVEL_UP_MOVE(54, MOVE_SCREECH), + LEVEL_UP_MOVE(63, MOVE_THRASH), + LEVEL_UP_END +}; + +static const u16 sGrowlitheLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_ROAR), + LEVEL_UP_MOVE( 7, MOVE_EMBER), + LEVEL_UP_MOVE(13, MOVE_LEER), + LEVEL_UP_MOVE(19, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(31, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE(37, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(43, MOVE_AGILITY), + LEVEL_UP_MOVE(49, MOVE_FLAMETHROWER), + LEVEL_UP_END +}; + +static const u16 sArcanineLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_ROAR), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(49, MOVE_EXTREME_SPEED), + LEVEL_UP_END +}; + +static const u16 sPoliwagLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 7, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(19, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(25, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(31, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(37, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(43, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const u16 sPoliwhirlLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(19, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(27, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(35, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(43, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(51, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const u16 sPoliwrathLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE( 1, MOVE_SUBMISSION), + LEVEL_UP_MOVE(35, MOVE_SUBMISSION), + LEVEL_UP_MOVE(51, MOVE_MIND_READER), + LEVEL_UP_END +}; + +static const u16 sAbraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TELEPORT), + LEVEL_UP_END +}; + +static const u16 sKadabraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TELEPORT), + LEVEL_UP_MOVE( 1, MOVE_KINESIS), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE(16, MOVE_CONFUSION), + LEVEL_UP_MOVE(18, MOVE_DISABLE), + LEVEL_UP_MOVE(21, MOVE_PSYBEAM), + LEVEL_UP_MOVE(23, MOVE_REFLECT), + LEVEL_UP_MOVE(25, MOVE_RECOVER), + LEVEL_UP_MOVE(30, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(33, MOVE_ROLE_PLAY), + LEVEL_UP_MOVE(36, MOVE_PSYCHIC), + LEVEL_UP_MOVE(43, MOVE_TRICK), + LEVEL_UP_END +}; + +static const u16 sAlakazamLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TELEPORT), + LEVEL_UP_MOVE( 1, MOVE_KINESIS), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE(16, MOVE_CONFUSION), + LEVEL_UP_MOVE(18, MOVE_DISABLE), + LEVEL_UP_MOVE(21, MOVE_PSYBEAM), + LEVEL_UP_MOVE(23, MOVE_REFLECT), + LEVEL_UP_MOVE(25, MOVE_RECOVER), + LEVEL_UP_MOVE(30, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(33, MOVE_CALM_MIND), + LEVEL_UP_MOVE(36, MOVE_PSYCHIC), + LEVEL_UP_MOVE(43, MOVE_TRICK), + LEVEL_UP_END +}; + +static const u16 sMachopLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LOW_KICK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(13, MOVE_KARATE_CHOP), + LEVEL_UP_MOVE(19, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(22, MOVE_FORESIGHT), + LEVEL_UP_MOVE(25, MOVE_REVENGE), + LEVEL_UP_MOVE(31, MOVE_VITAL_THROW), + LEVEL_UP_MOVE(37, MOVE_SUBMISSION), + LEVEL_UP_MOVE(40, MOVE_CROSS_CHOP), + LEVEL_UP_MOVE(43, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(49, MOVE_DYNAMIC_PUNCH), + LEVEL_UP_END +}; + +static const u16 sMachokeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LOW_KICK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(13, MOVE_KARATE_CHOP), + LEVEL_UP_MOVE(19, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(22, MOVE_FORESIGHT), + LEVEL_UP_MOVE(25, MOVE_REVENGE), + LEVEL_UP_MOVE(33, MOVE_VITAL_THROW), + LEVEL_UP_MOVE(41, MOVE_SUBMISSION), + LEVEL_UP_MOVE(46, MOVE_CROSS_CHOP), + LEVEL_UP_MOVE(51, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(59, MOVE_DYNAMIC_PUNCH), + LEVEL_UP_END +}; + +static const u16 sMachampLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LOW_KICK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(13, MOVE_KARATE_CHOP), + LEVEL_UP_MOVE(19, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(22, MOVE_FORESIGHT), + LEVEL_UP_MOVE(25, MOVE_REVENGE), + LEVEL_UP_MOVE(33, MOVE_VITAL_THROW), + LEVEL_UP_MOVE(41, MOVE_SUBMISSION), + LEVEL_UP_MOVE(46, MOVE_CROSS_CHOP), + LEVEL_UP_MOVE(51, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(59, MOVE_DYNAMIC_PUNCH), + LEVEL_UP_END +}; + +static const u16 sBellsproutLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 6, MOVE_GROWTH), + LEVEL_UP_MOVE(11, MOVE_WRAP), + LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(17, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(19, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(23, MOVE_ACID), + LEVEL_UP_MOVE(30, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(37, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(45, MOVE_SLAM), + LEVEL_UP_END +}; + +static const u16 sWeepinbellLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 1, MOVE_GROWTH), + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 6, MOVE_GROWTH), + LEVEL_UP_MOVE(11, MOVE_WRAP), + LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(17, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(19, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(24, MOVE_ACID), + LEVEL_UP_MOVE(33, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(42, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(54, MOVE_SLAM), + LEVEL_UP_END +}; + +static const u16 sVictreebelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 1, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 1, MOVE_RAZOR_LEAF), + LEVEL_UP_END +}; + +static const u16 sTentacoolLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 6, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(12, MOVE_CONSTRICT), + LEVEL_UP_MOVE(19, MOVE_ACID), + LEVEL_UP_MOVE(25, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(30, MOVE_WRAP), + LEVEL_UP_MOVE(36, MOVE_BARRIER), + LEVEL_UP_MOVE(43, MOVE_SCREECH), + LEVEL_UP_MOVE(49, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const u16 sTentacruelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 6, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(12, MOVE_CONSTRICT), + LEVEL_UP_MOVE(19, MOVE_ACID), + LEVEL_UP_MOVE(25, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(30, MOVE_WRAP), + LEVEL_UP_MOVE(38, MOVE_BARRIER), + LEVEL_UP_MOVE(47, MOVE_SCREECH), + LEVEL_UP_MOVE(55, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const u16 sGeodudeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(11, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(16, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(21, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(26, MOVE_ROLLOUT), + LEVEL_UP_MOVE(31, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(36, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(41, MOVE_EXPLOSION), + LEVEL_UP_MOVE(46, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const u16 sGravelerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(11, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(16, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(21, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(29, MOVE_ROLLOUT), + LEVEL_UP_MOVE(37, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(45, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(53, MOVE_EXPLOSION), + LEVEL_UP_MOVE(62, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const u16 sGolemLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(11, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(16, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(21, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(29, MOVE_ROLLOUT), + LEVEL_UP_MOVE(37, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(45, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(53, MOVE_EXPLOSION), + LEVEL_UP_MOVE(62, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const u16 sPonytaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(14, MOVE_EMBER), + LEVEL_UP_MOVE(19, MOVE_STOMP), + LEVEL_UP_MOVE(25, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(38, MOVE_AGILITY), + LEVEL_UP_MOVE(45, MOVE_BOUNCE), + LEVEL_UP_MOVE(53, MOVE_FIRE_BLAST), + LEVEL_UP_END +}; + +static const u16 sRapidashLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 5, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(14, MOVE_EMBER), + LEVEL_UP_MOVE(19, MOVE_STOMP), + LEVEL_UP_MOVE(25, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(38, MOVE_AGILITY), + LEVEL_UP_MOVE(40, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(50, MOVE_BOUNCE), + LEVEL_UP_MOVE(63, MOVE_FIRE_BLAST), + LEVEL_UP_END +}; + +static const u16 sSlowpokeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CURSE), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 6, MOVE_GROWL), + LEVEL_UP_MOVE(15, MOVE_WATER_GUN), + LEVEL_UP_MOVE(20, MOVE_CONFUSION), + LEVEL_UP_MOVE(29, MOVE_DISABLE), + LEVEL_UP_MOVE(34, MOVE_HEADBUTT), + LEVEL_UP_MOVE(43, MOVE_AMNESIA), + LEVEL_UP_MOVE(48, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +static const u16 sSlowbroLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CURSE), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 6, MOVE_GROWL), + LEVEL_UP_MOVE(15, MOVE_WATER_GUN), + LEVEL_UP_MOVE(20, MOVE_CONFUSION), + LEVEL_UP_MOVE(29, MOVE_DISABLE), + LEVEL_UP_MOVE(34, MOVE_HEADBUTT), + LEVEL_UP_MOVE(37, MOVE_WITHDRAW), + LEVEL_UP_MOVE(46, MOVE_AMNESIA), + LEVEL_UP_MOVE(54, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +static const u16 sMagnemiteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_METAL_SOUND), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 6, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(11, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(16, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE(21, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(26, MOVE_SPARK), + LEVEL_UP_MOVE(32, MOVE_LOCK_ON), + LEVEL_UP_MOVE(38, MOVE_SWIFT), + LEVEL_UP_MOVE(44, MOVE_SCREECH), + LEVEL_UP_MOVE(50, MOVE_ZAP_CANNON), + LEVEL_UP_END +}; + +static const u16 sMagnetonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_METAL_SOUND), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 6, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(11, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(16, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE(21, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(26, MOVE_SPARK), + LEVEL_UP_MOVE(35, MOVE_LOCK_ON), + LEVEL_UP_MOVE(44, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE(53, MOVE_SCREECH), + LEVEL_UP_MOVE(62, MOVE_ZAP_CANNON), + LEVEL_UP_END +}; + +static const u16 sFarfetchdLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 6, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(11, MOVE_LEER), + LEVEL_UP_MOVE(16, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(21, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(26, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(31, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(36, MOVE_AGILITY), + LEVEL_UP_MOVE(41, MOVE_SLASH), + LEVEL_UP_MOVE(46, MOVE_FALSE_SWIPE), + LEVEL_UP_END +}; + +static const u16 sDoduoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_PURSUIT), + LEVEL_UP_MOVE(13, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(21, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE(25, MOVE_RAGE), + LEVEL_UP_MOVE(33, MOVE_UPROAR), + LEVEL_UP_MOVE(37, MOVE_DRILL_PECK), + LEVEL_UP_MOVE(45, MOVE_AGILITY), + LEVEL_UP_END +}; + +static const u16 sDodrioLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_PURSUIT), + LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_PURSUIT), + LEVEL_UP_MOVE(13, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(21, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE(25, MOVE_RAGE), + LEVEL_UP_MOVE(38, MOVE_UPROAR), + LEVEL_UP_MOVE(47, MOVE_DRILL_PECK), + LEVEL_UP_MOVE(60, MOVE_AGILITY), + LEVEL_UP_END +}; + +static const u16 sSeelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 9, MOVE_GROWL), + LEVEL_UP_MOVE(17, MOVE_ICY_WIND), + LEVEL_UP_MOVE(21, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(29, MOVE_REST), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(41, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(49, MOVE_SAFEGUARD), + LEVEL_UP_END +}; + +static const u16 sDewgongLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_ICY_WIND), + LEVEL_UP_MOVE( 1, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE( 9, MOVE_GROWL), + LEVEL_UP_MOVE(17, MOVE_ICY_WIND), + LEVEL_UP_MOVE(21, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(29, MOVE_REST), + LEVEL_UP_MOVE(34, MOVE_SHEER_COLD), + LEVEL_UP_MOVE(42, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(51, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(64, MOVE_SAFEGUARD), + LEVEL_UP_END +}; + +static const u16 sGrimerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 4, MOVE_HARDEN), + LEVEL_UP_MOVE( 8, MOVE_DISABLE), + LEVEL_UP_MOVE(13, MOVE_SLUDGE), + LEVEL_UP_MOVE(19, MOVE_MINIMIZE), + LEVEL_UP_MOVE(26, MOVE_SCREECH), + LEVEL_UP_MOVE(34, MOVE_ACID_ARMOR), + LEVEL_UP_MOVE(43, MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE(53, MOVE_MEMENTO), + LEVEL_UP_END +}; + +static const u16 sMukLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 4, MOVE_HARDEN), + LEVEL_UP_MOVE( 8, MOVE_DISABLE), + LEVEL_UP_MOVE(13, MOVE_SLUDGE), + LEVEL_UP_MOVE(19, MOVE_MINIMIZE), + LEVEL_UP_MOVE(26, MOVE_SCREECH), + LEVEL_UP_MOVE(34, MOVE_ACID_ARMOR), + LEVEL_UP_MOVE(47, MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE(61, MOVE_MEMENTO), + LEVEL_UP_END +}; + +static const u16 sShellderLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE( 9, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(17, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(25, MOVE_PROTECT), + LEVEL_UP_MOVE(33, MOVE_LEER), + LEVEL_UP_MOVE(41, MOVE_CLAMP), + LEVEL_UP_MOVE(49, MOVE_ICE_BEAM), + LEVEL_UP_END +}; + +static const u16 sCloysterLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE( 1, MOVE_PROTECT), + LEVEL_UP_MOVE(33, MOVE_SPIKES), + LEVEL_UP_MOVE(41, MOVE_SPIKE_CANNON), + LEVEL_UP_END +}; + +static const u16 sGastlyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 8, MOVE_SPITE), + LEVEL_UP_MOVE(13, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(16, MOVE_CURSE), + LEVEL_UP_MOVE(21, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(28, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(33, MOVE_DREAM_EATER), + LEVEL_UP_MOVE(36, MOVE_DESTINY_BOND), + LEVEL_UP_END +}; + +static const u16 sHaunterLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 1, MOVE_SPITE), + LEVEL_UP_MOVE( 8, MOVE_SPITE), + LEVEL_UP_MOVE(13, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(16, MOVE_CURSE), + LEVEL_UP_MOVE(21, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(25, MOVE_SHADOW_PUNCH), + LEVEL_UP_MOVE(31, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(39, MOVE_DREAM_EATER), + LEVEL_UP_MOVE(48, MOVE_DESTINY_BOND), + LEVEL_UP_END +}; + +static const u16 sGengarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 1, MOVE_SPITE), + LEVEL_UP_MOVE( 8, MOVE_SPITE), + LEVEL_UP_MOVE(13, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(16, MOVE_CURSE), + LEVEL_UP_MOVE(21, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(25, MOVE_SHADOW_PUNCH), + LEVEL_UP_MOVE(31, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(39, MOVE_DREAM_EATER), + LEVEL_UP_MOVE(48, MOVE_DESTINY_BOND), + LEVEL_UP_END +}; + +static const u16 sOnixLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 9, MOVE_BIND), + LEVEL_UP_MOVE(13, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(21, MOVE_HARDEN), + LEVEL_UP_MOVE(25, MOVE_RAGE), + LEVEL_UP_MOVE(33, MOVE_SANDSTORM), + LEVEL_UP_MOVE(37, MOVE_SLAM), + LEVEL_UP_MOVE(45, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(49, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const u16 sDrowzeeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(10, MOVE_DISABLE), + LEVEL_UP_MOVE(18, MOVE_CONFUSION), + LEVEL_UP_MOVE(25, MOVE_HEADBUTT), + LEVEL_UP_MOVE(31, MOVE_POISON_GAS), + LEVEL_UP_MOVE(36, MOVE_MEDITATE), + LEVEL_UP_MOVE(40, MOVE_PSYCHIC), + LEVEL_UP_MOVE(43, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(45, MOVE_FUTURE_SIGHT), + LEVEL_UP_END +}; + +static const u16 sHypnoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE(10, MOVE_DISABLE), + LEVEL_UP_MOVE(18, MOVE_CONFUSION), + LEVEL_UP_MOVE(25, MOVE_HEADBUTT), + LEVEL_UP_MOVE(33, MOVE_POISON_GAS), + LEVEL_UP_MOVE(40, MOVE_MEDITATE), + LEVEL_UP_MOVE(49, MOVE_PSYCHIC), + LEVEL_UP_MOVE(55, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(60, MOVE_FUTURE_SIGHT), + LEVEL_UP_END +}; + +static const u16 sKrabbyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 5, MOVE_LEER), + LEVEL_UP_MOVE(12, MOVE_VICE_GRIP), + LEVEL_UP_MOVE(16, MOVE_HARDEN), + LEVEL_UP_MOVE(23, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(27, MOVE_STOMP), + LEVEL_UP_MOVE(34, MOVE_GUILLOTINE), + LEVEL_UP_MOVE(41, MOVE_PROTECT), + LEVEL_UP_MOVE(45, MOVE_CRABHAMMER), + LEVEL_UP_END +}; + +static const u16 sKinglerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_VICE_GRIP), + LEVEL_UP_MOVE( 5, MOVE_LEER), + LEVEL_UP_MOVE(12, MOVE_VICE_GRIP), + LEVEL_UP_MOVE(16, MOVE_HARDEN), + LEVEL_UP_MOVE(23, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(27, MOVE_STOMP), + LEVEL_UP_MOVE(38, MOVE_GUILLOTINE), + LEVEL_UP_MOVE(49, MOVE_PROTECT), + LEVEL_UP_MOVE(57, MOVE_CRABHAMMER), + LEVEL_UP_END +}; + +static const u16 sVoltorbLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CHARGE), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 8, MOVE_SCREECH), + LEVEL_UP_MOVE(15, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE(21, MOVE_SPARK), + LEVEL_UP_MOVE(27, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(32, MOVE_ROLLOUT), + LEVEL_UP_MOVE(37, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(42, MOVE_SWIFT), + LEVEL_UP_MOVE(46, MOVE_EXPLOSION), + LEVEL_UP_MOVE(49, MOVE_MIRROR_COAT), + LEVEL_UP_END +}; + +static const u16 sElectrodeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CHARGE), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 1, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE( 8, MOVE_SCREECH), + LEVEL_UP_MOVE(15, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE(21, MOVE_SPARK), + LEVEL_UP_MOVE(27, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(34, MOVE_ROLLOUT), + LEVEL_UP_MOVE(41, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(48, MOVE_SWIFT), + LEVEL_UP_MOVE(54, MOVE_EXPLOSION), + LEVEL_UP_MOVE(59, MOVE_MIRROR_COAT), + LEVEL_UP_END +}; + +static const u16 sExeggcuteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BARRAGE), + LEVEL_UP_MOVE( 1, MOVE_UPROAR), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 7, MOVE_REFLECT), + LEVEL_UP_MOVE(13, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(19, MOVE_CONFUSION), + LEVEL_UP_MOVE(25, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(31, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(37, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(43, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +static const u16 sExeggutorLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BARRAGE), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE(19, MOVE_STOMP), + LEVEL_UP_MOVE(31, MOVE_EGG_BOMB), + LEVEL_UP_END +}; + +static const u16 sCuboneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9, MOVE_BONE_CLUB), + LEVEL_UP_MOVE(13, MOVE_HEADBUTT), + LEVEL_UP_MOVE(17, MOVE_LEER), + LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(25, MOVE_BONEMERANG), + LEVEL_UP_MOVE(29, MOVE_RAGE), + LEVEL_UP_MOVE(33, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(37, MOVE_THRASH), + LEVEL_UP_MOVE(41, MOVE_BONE_RUSH), + LEVEL_UP_MOVE(45, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const u16 sMarowakLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_BONE_CLUB), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9, MOVE_BONE_CLUB), + LEVEL_UP_MOVE(13, MOVE_HEADBUTT), + LEVEL_UP_MOVE(17, MOVE_LEER), + LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(25, MOVE_BONEMERANG), + LEVEL_UP_MOVE(32, MOVE_RAGE), + LEVEL_UP_MOVE(39, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(46, MOVE_THRASH), + LEVEL_UP_MOVE(53, MOVE_BONE_RUSH), + LEVEL_UP_MOVE(61, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const u16 sHitmonleeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_REVENGE), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 6, MOVE_MEDITATE), + LEVEL_UP_MOVE(11, MOVE_ROLLING_KICK), + LEVEL_UP_MOVE(16, MOVE_JUMP_KICK), + LEVEL_UP_MOVE(20, MOVE_BRICK_BREAK), + LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(26, MOVE_HI_JUMP_KICK), + LEVEL_UP_MOVE(31, MOVE_MIND_READER), + LEVEL_UP_MOVE(36, MOVE_FORESIGHT), + LEVEL_UP_MOVE(41, MOVE_ENDURE), + LEVEL_UP_MOVE(46, MOVE_MEGA_KICK), + LEVEL_UP_MOVE(51, MOVE_REVERSAL), + LEVEL_UP_END +}; + +static const u16 sHitmonchanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_REVENGE), + LEVEL_UP_MOVE( 1, MOVE_COMET_PUNCH), + LEVEL_UP_MOVE( 7, MOVE_AGILITY), + LEVEL_UP_MOVE(13, MOVE_PURSUIT), + LEVEL_UP_MOVE(20, MOVE_MACH_PUNCH), + LEVEL_UP_MOVE(26, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE(26, MOVE_ICE_PUNCH), + LEVEL_UP_MOVE(26, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE(32, MOVE_SKY_UPPERCUT), + LEVEL_UP_MOVE(38, MOVE_MEGA_PUNCH), + LEVEL_UP_MOVE(44, MOVE_DETECT), + LEVEL_UP_MOVE(50, MOVE_COUNTER), + LEVEL_UP_END +}; + +static const u16 sLickitungLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 7, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(12, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(18, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(23, MOVE_STOMP), + LEVEL_UP_MOVE(29, MOVE_WRAP), + LEVEL_UP_MOVE(34, MOVE_DISABLE), + LEVEL_UP_MOVE(40, MOVE_SLAM), + LEVEL_UP_MOVE(45, MOVE_SCREECH), + LEVEL_UP_MOVE(51, MOVE_REFRESH), + LEVEL_UP_END +}; + +static const u16 sKoffingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 9, MOVE_SMOG), + LEVEL_UP_MOVE(17, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(21, MOVE_SLUDGE), + LEVEL_UP_MOVE(25, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(33, MOVE_HAZE), + LEVEL_UP_MOVE(41, MOVE_EXPLOSION), + LEVEL_UP_MOVE(45, MOVE_DESTINY_BOND), + LEVEL_UP_MOVE(49, MOVE_MEMENTO), + LEVEL_UP_END +}; + +static const u16 sWeezingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SMOG), + LEVEL_UP_MOVE( 1, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE( 9, MOVE_SMOG), + LEVEL_UP_MOVE(17, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(21, MOVE_SLUDGE), + LEVEL_UP_MOVE(25, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(33, MOVE_HAZE), + LEVEL_UP_MOVE(44, MOVE_EXPLOSION), + LEVEL_UP_MOVE(51, MOVE_DESTINY_BOND), + LEVEL_UP_MOVE(58, MOVE_MEMENTO), + LEVEL_UP_END +}; + +static const u16 sRhyhornLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_STOMP), + LEVEL_UP_MOVE(15, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(24, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(29, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(38, MOVE_HORN_DRILL), + LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(52, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(57, MOVE_MEGAHORN), + LEVEL_UP_END +}; + +static const u16 sRhydonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_STOMP), + LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(10, MOVE_STOMP), + LEVEL_UP_MOVE(15, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(24, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(29, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(38, MOVE_HORN_DRILL), + LEVEL_UP_MOVE(46, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(58, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(66, MOVE_MEGAHORN), + LEVEL_UP_END +}; + +static const u16 sChanseyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9, MOVE_REFRESH), + LEVEL_UP_MOVE(13, MOVE_SOFT_BOILED), + LEVEL_UP_MOVE(17, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(23, MOVE_MINIMIZE), + LEVEL_UP_MOVE(29, MOVE_SING), + LEVEL_UP_MOVE(35, MOVE_EGG_BOMB), + LEVEL_UP_MOVE(41, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(49, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const u16 sTangelaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_INGRAIN), + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 4, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(10, MOVE_ABSORB), + LEVEL_UP_MOVE(13, MOVE_GROWTH), + LEVEL_UP_MOVE(19, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(22, MOVE_VINE_WHIP), + LEVEL_UP_MOVE(28, MOVE_BIND), + LEVEL_UP_MOVE(31, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(37, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(40, MOVE_SLAM), + LEVEL_UP_MOVE(46, MOVE_TICKLE), + LEVEL_UP_END +}; + +static const u16 sKangaskhanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_COMET_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_BITE), + LEVEL_UP_MOVE(13, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(25, MOVE_MEGA_PUNCH), + LEVEL_UP_MOVE(31, MOVE_RAGE), + LEVEL_UP_MOVE(37, MOVE_ENDURE), + LEVEL_UP_MOVE(43, MOVE_DIZZY_PUNCH), + LEVEL_UP_MOVE(49, MOVE_REVERSAL), + LEVEL_UP_END +}; + +static const u16 sHorseaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 8, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(15, MOVE_LEER), + LEVEL_UP_MOVE(22, MOVE_WATER_GUN), + LEVEL_UP_MOVE(29, MOVE_TWISTER), + LEVEL_UP_MOVE(36, MOVE_AGILITY), + LEVEL_UP_MOVE(43, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(50, MOVE_DRAGON_DANCE), + LEVEL_UP_END +}; + +static const u16 sSeadraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 8, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(15, MOVE_LEER), + LEVEL_UP_MOVE(22, MOVE_WATER_GUN), + LEVEL_UP_MOVE(29, MOVE_TWISTER), + LEVEL_UP_MOVE(40, MOVE_AGILITY), + LEVEL_UP_MOVE(51, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(62, MOVE_DRAGON_DANCE), + LEVEL_UP_END +}; + +static const u16 sGoldeenLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(10, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(15, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE(24, MOVE_FLAIL), + LEVEL_UP_MOVE(29, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(38, MOVE_WATERFALL), + LEVEL_UP_MOVE(43, MOVE_HORN_DRILL), + LEVEL_UP_MOVE(52, MOVE_AGILITY), + LEVEL_UP_END +}; + +static const u16 sSeakingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(10, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(15, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE(24, MOVE_FLAIL), + LEVEL_UP_MOVE(29, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(41, MOVE_WATERFALL), + LEVEL_UP_MOVE(49, MOVE_HORN_DRILL), + LEVEL_UP_MOVE(61, MOVE_AGILITY), + LEVEL_UP_END +}; + +static const u16 sStaryuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 6, MOVE_WATER_GUN), + LEVEL_UP_MOVE(10, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(15, MOVE_RECOVER), + LEVEL_UP_MOVE(19, MOVE_CAMOUFLAGE), + LEVEL_UP_MOVE(24, MOVE_SWIFT), + LEVEL_UP_MOVE(28, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(33, MOVE_MINIMIZE), + LEVEL_UP_MOVE(37, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(42, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(46, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const u16 sStarmieLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 1, MOVE_RECOVER), + LEVEL_UP_MOVE( 1, MOVE_SWIFT), + LEVEL_UP_MOVE(33, MOVE_CONFUSE_RAY), + LEVEL_UP_END +}; + +static const u16 sMrmimeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BARRIER), + LEVEL_UP_MOVE( 5, MOVE_CONFUSION), + LEVEL_UP_MOVE( 9, MOVE_SUBSTITUTE), + LEVEL_UP_MOVE(13, MOVE_MEDITATE), + LEVEL_UP_MOVE(17, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(21, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(21, MOVE_REFLECT), + LEVEL_UP_MOVE(25, MOVE_ENCORE), + LEVEL_UP_MOVE(29, MOVE_PSYBEAM), + LEVEL_UP_MOVE(33, MOVE_RECYCLE), + LEVEL_UP_MOVE(37, MOVE_TRICK), + LEVEL_UP_MOVE(41, MOVE_ROLE_PLAY), + LEVEL_UP_MOVE(45, MOVE_PSYCHIC), + LEVEL_UP_MOVE(49, MOVE_BATON_PASS), + LEVEL_UP_MOVE(53, MOVE_SAFEGUARD), + LEVEL_UP_END +}; + +static const u16 sScytherLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 6, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(11, MOVE_PURSUIT), + LEVEL_UP_MOVE(16, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(21, MOVE_AGILITY), + LEVEL_UP_MOVE(26, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(31, MOVE_SLASH), + LEVEL_UP_MOVE(36, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(41, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(46, MOVE_FURY_CUTTER), + LEVEL_UP_END +}; + +static const u16 sJynxLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 1, MOVE_LOVELY_KISS), + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 9, MOVE_LOVELY_KISS), + LEVEL_UP_MOVE(13, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(21, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(25, MOVE_ICE_PUNCH), + LEVEL_UP_MOVE(35, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(41, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(51, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(57, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(67, MOVE_BLIZZARD), + LEVEL_UP_END +}; + +static const u16 sElectabuzzLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE( 9, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE(17, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(25, MOVE_SWIFT), + LEVEL_UP_MOVE(36, MOVE_SCREECH), + LEVEL_UP_MOVE(47, MOVE_THUNDERBOLT), + LEVEL_UP_MOVE(58, MOVE_THUNDER), + LEVEL_UP_END +}; + +static const u16 sMagmarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SMOG), + LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 7, MOVE_LEER), + LEVEL_UP_MOVE(13, MOVE_SMOG), + LEVEL_UP_MOVE(19, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE(25, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(33, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(41, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(49, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(57, MOVE_FIRE_BLAST), + LEVEL_UP_END +}; + +static const u16 sPinsirLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_VICE_GRIP), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 7, MOVE_BIND), + LEVEL_UP_MOVE(13, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(19, MOVE_HARDEN), + LEVEL_UP_MOVE(25, MOVE_REVENGE), + LEVEL_UP_MOVE(31, MOVE_BRICK_BREAK), + LEVEL_UP_MOVE(37, MOVE_GUILLOTINE), + LEVEL_UP_MOVE(43, MOVE_SUBMISSION), + LEVEL_UP_MOVE(49, MOVE_SWORDS_DANCE), + LEVEL_UP_END +}; + +static const u16 sTaurosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8, MOVE_RAGE), + LEVEL_UP_MOVE(13, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE(19, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(26, MOVE_PURSUIT), + LEVEL_UP_MOVE(34, MOVE_REST), + LEVEL_UP_MOVE(43, MOVE_THRASH), + LEVEL_UP_MOVE(53, MOVE_TAKE_DOWN), + LEVEL_UP_END +}; + +static const u16 sMagikarpLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE(15, MOVE_TACKLE), + LEVEL_UP_MOVE(30, MOVE_FLAIL), + LEVEL_UP_END +}; + +static const u16 sGyaradosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THRASH), + LEVEL_UP_MOVE(20, MOVE_BITE), + LEVEL_UP_MOVE(25, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(30, MOVE_LEER), + LEVEL_UP_MOVE(35, MOVE_TWISTER), + LEVEL_UP_MOVE(40, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(45, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(50, MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE(55, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +static const u16 sLaprasLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 7, MOVE_MIST), + LEVEL_UP_MOVE(13, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(19, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(25, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(31, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(37, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(43, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(49, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(55, MOVE_SHEER_COLD), + LEVEL_UP_END +}; + +static const u16 sDittoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TRANSFORM), + LEVEL_UP_END +}; + +static const u16 sEeveeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_GROWL), + LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(30, MOVE_BITE), + LEVEL_UP_MOVE(36, MOVE_BATON_PASS), + LEVEL_UP_MOVE(42, MOVE_TAKE_DOWN), + LEVEL_UP_END +}; + +static const u16 sVaporeonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_WATER_GUN), + LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(30, MOVE_BITE), + LEVEL_UP_MOVE(36, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(42, MOVE_HAZE), + LEVEL_UP_MOVE(47, MOVE_ACID_ARMOR), + LEVEL_UP_MOVE(52, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const u16 sJolteonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(30, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(36, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(42, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(47, MOVE_AGILITY), + LEVEL_UP_MOVE(52, MOVE_THUNDER), + LEVEL_UP_END +}; + +static const u16 sFlareonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_EMBER), + LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(30, MOVE_BITE), + LEVEL_UP_MOVE(36, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(42, MOVE_SMOG), + LEVEL_UP_MOVE(47, MOVE_LEER), + LEVEL_UP_MOVE(52, MOVE_FLAMETHROWER), + LEVEL_UP_END +}; + +static const u16 sPorygonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONVERSION_2), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_CONVERSION), + LEVEL_UP_MOVE( 9, MOVE_AGILITY), + LEVEL_UP_MOVE(12, MOVE_PSYBEAM), + LEVEL_UP_MOVE(20, MOVE_RECOVER), + LEVEL_UP_MOVE(24, MOVE_SHARPEN), + LEVEL_UP_MOVE(32, MOVE_LOCK_ON), + LEVEL_UP_MOVE(36, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE(44, MOVE_RECYCLE), + LEVEL_UP_MOVE(48, MOVE_ZAP_CANNON), + LEVEL_UP_END +}; + +static const u16 sOmanyteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(19, MOVE_WATER_GUN), + LEVEL_UP_MOVE(25, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(31, MOVE_LEER), + LEVEL_UP_MOVE(37, MOVE_PROTECT), + LEVEL_UP_MOVE(43, MOVE_TICKLE), + LEVEL_UP_MOVE(49, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(55, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const u16 sOmastarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(19, MOVE_WATER_GUN), + LEVEL_UP_MOVE(25, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(31, MOVE_LEER), + LEVEL_UP_MOVE(37, MOVE_PROTECT), + LEVEL_UP_MOVE(40, MOVE_SPIKE_CANNON), + LEVEL_UP_MOVE(46, MOVE_TICKLE), + LEVEL_UP_MOVE(55, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(65, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const u16 sKabutoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE(13, MOVE_ABSORB), + LEVEL_UP_MOVE(19, MOVE_LEER), + LEVEL_UP_MOVE(25, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(31, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(37, MOVE_ENDURE), + LEVEL_UP_MOVE(43, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(49, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(55, MOVE_ANCIENT_POWER), + LEVEL_UP_END +}; + +static const u16 sKabutopsLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE(13, MOVE_ABSORB), + LEVEL_UP_MOVE(19, MOVE_LEER), + LEVEL_UP_MOVE(25, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(31, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(37, MOVE_ENDURE), + LEVEL_UP_MOVE(40, MOVE_SLASH), + LEVEL_UP_MOVE(46, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(55, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(65, MOVE_ANCIENT_POWER), + LEVEL_UP_END +}; + +static const u16 sAerodactylLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 8, MOVE_AGILITY), + LEVEL_UP_MOVE(15, MOVE_BITE), + LEVEL_UP_MOVE(22, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(29, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(36, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(50, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +static const u16 sSnorlaxLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 6, MOVE_AMNESIA), + LEVEL_UP_MOVE(10, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(15, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(19, MOVE_HEADBUTT), + LEVEL_UP_MOVE(24, MOVE_YAWN), + LEVEL_UP_MOVE(28, MOVE_REST), + LEVEL_UP_MOVE(28, MOVE_SNORE), + LEVEL_UP_MOVE(33, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(37, MOVE_BLOCK), + LEVEL_UP_MOVE(42, MOVE_COVET), + LEVEL_UP_MOVE(46, MOVE_ROLLOUT), + LEVEL_UP_MOVE(51, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +static const u16 sArticunoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GUST), + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(13, MOVE_MIST), + LEVEL_UP_MOVE(25, MOVE_AGILITY), + LEVEL_UP_MOVE(37, MOVE_MIND_READER), + LEVEL_UP_MOVE(49, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(61, MOVE_REFLECT), + LEVEL_UP_MOVE(73, MOVE_BLIZZARD), + LEVEL_UP_MOVE(85, MOVE_SHEER_COLD), + LEVEL_UP_END +}; + +static const u16 sZapdosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(13, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(25, MOVE_AGILITY), + LEVEL_UP_MOVE(37, MOVE_DETECT), + LEVEL_UP_MOVE(49, MOVE_DRILL_PECK), + LEVEL_UP_MOVE(61, MOVE_CHARGE), + LEVEL_UP_MOVE(73, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(85, MOVE_THUNDER), + LEVEL_UP_END +}; + +static const u16 sMoltresLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE(13, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(25, MOVE_AGILITY), + LEVEL_UP_MOVE(37, MOVE_ENDURE), + LEVEL_UP_MOVE(49, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(61, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(73, MOVE_HEAT_WAVE), + LEVEL_UP_MOVE(85, MOVE_SKY_ATTACK), + LEVEL_UP_END +}; + +static const u16 sDratiniLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 8, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(15, MOVE_TWISTER), + LEVEL_UP_MOVE(22, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(29, MOVE_SLAM), + LEVEL_UP_MOVE(36, MOVE_AGILITY), + LEVEL_UP_MOVE(43, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(50, MOVE_OUTRAGE), + LEVEL_UP_MOVE(57, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +static const u16 sDragonairLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 1, MOVE_TWISTER), + LEVEL_UP_MOVE( 8, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(15, MOVE_TWISTER), + LEVEL_UP_MOVE(22, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(29, MOVE_SLAM), + LEVEL_UP_MOVE(38, MOVE_AGILITY), + LEVEL_UP_MOVE(47, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(56, MOVE_OUTRAGE), + LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +static const u16 sDragoniteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 1, MOVE_TWISTER), + LEVEL_UP_MOVE( 8, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(15, MOVE_TWISTER), + LEVEL_UP_MOVE(22, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(29, MOVE_SLAM), + LEVEL_UP_MOVE(38, MOVE_AGILITY), + LEVEL_UP_MOVE(47, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(55, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(61, MOVE_OUTRAGE), + LEVEL_UP_MOVE(75, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +static const u16 sMewtwoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE(11, MOVE_BARRIER), + LEVEL_UP_MOVE(22, MOVE_SWIFT), + LEVEL_UP_MOVE(33, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(44, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(55, MOVE_MIST), + LEVEL_UP_MOVE(66, MOVE_PSYCHIC), + LEVEL_UP_MOVE(77, MOVE_AMNESIA), + LEVEL_UP_MOVE(88, MOVE_RECOVER), + LEVEL_UP_MOVE(99, MOVE_SAFEGUARD), + LEVEL_UP_END +}; + +static const u16 sMewLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE(10, MOVE_TRANSFORM), + LEVEL_UP_MOVE(20, MOVE_MEGA_PUNCH), + LEVEL_UP_MOVE(30, MOVE_METRONOME), + LEVEL_UP_MOVE(40, MOVE_PSYCHIC), + LEVEL_UP_MOVE(50, MOVE_ANCIENT_POWER), + LEVEL_UP_END +}; + +static const u16 sChikoritaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 8, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(12, MOVE_REFLECT), + LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(22, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(29, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(36, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(43, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(50, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +static const u16 sBayleefLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE( 1, MOVE_REFLECT), + LEVEL_UP_MOVE( 8, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(12, MOVE_REFLECT), + LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(23, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(31, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(39, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(47, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(55, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +static const u16 sMeganiumLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE( 1, MOVE_REFLECT), + LEVEL_UP_MOVE( 8, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(12, MOVE_REFLECT), + LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(23, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(31, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(41, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(51, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(61, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +static const u16 sCyndaquilLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 6, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(12, MOVE_EMBER), + LEVEL_UP_MOVE(19, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(27, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE(36, MOVE_SWIFT), + LEVEL_UP_MOVE(46, MOVE_FLAMETHROWER), + LEVEL_UP_END +}; + +static const u16 sQuilavaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 6, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(12, MOVE_EMBER), + LEVEL_UP_MOVE(21, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(31, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE(42, MOVE_SWIFT), + LEVEL_UP_MOVE(54, MOVE_FLAMETHROWER), + LEVEL_UP_END +}; + +static const u16 sTyphlosionLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 6, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(12, MOVE_EMBER), + LEVEL_UP_MOVE(21, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(31, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE(45, MOVE_SWIFT), + LEVEL_UP_MOVE(60, MOVE_FLAMETHROWER), + LEVEL_UP_END +}; + +static const u16 sTotodileLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_RAGE), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(20, MOVE_BITE), + LEVEL_UP_MOVE(27, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(35, MOVE_SLASH), + LEVEL_UP_MOVE(43, MOVE_SCREECH), + LEVEL_UP_MOVE(52, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const u16 sCroconawLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 7, MOVE_RAGE), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(21, MOVE_BITE), + LEVEL_UP_MOVE(28, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(37, MOVE_SLASH), + LEVEL_UP_MOVE(45, MOVE_SCREECH), + LEVEL_UP_MOVE(55, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const u16 sFeraligatrLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_RAGE), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(21, MOVE_BITE), + LEVEL_UP_MOVE(28, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(38, MOVE_SLASH), + LEVEL_UP_MOVE(47, MOVE_SCREECH), + LEVEL_UP_MOVE(58, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const u16 sSentretLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(12, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(17, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(24, MOVE_SLAM), + LEVEL_UP_MOVE(31, MOVE_FOLLOW_ME), + LEVEL_UP_MOVE(40, MOVE_REST), + LEVEL_UP_MOVE(49, MOVE_AMNESIA), + LEVEL_UP_END +}; + +static const u16 sFurretLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(12, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(19, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(28, MOVE_SLAM), + LEVEL_UP_MOVE(37, MOVE_FOLLOW_ME), + LEVEL_UP_MOVE(48, MOVE_REST), + LEVEL_UP_MOVE(59, MOVE_AMNESIA), + LEVEL_UP_END +}; + +static const u16 sHoothootLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 6, MOVE_FORESIGHT), + LEVEL_UP_MOVE(11, MOVE_PECK), + LEVEL_UP_MOVE(16, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(22, MOVE_REFLECT), + LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(34, MOVE_CONFUSION), + LEVEL_UP_MOVE(48, MOVE_DREAM_EATER), + LEVEL_UP_END +}; + +static const u16 sNoctowlLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 6, MOVE_FORESIGHT), + LEVEL_UP_MOVE(11, MOVE_PECK), + LEVEL_UP_MOVE(16, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(25, MOVE_REFLECT), + LEVEL_UP_MOVE(33, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(41, MOVE_CONFUSION), + LEVEL_UP_MOVE(57, MOVE_DREAM_EATER), + LEVEL_UP_END +}; + +static const u16 sLedybaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 8, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(15, MOVE_COMET_PUNCH), + LEVEL_UP_MOVE(22, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(22, MOVE_REFLECT), + LEVEL_UP_MOVE(22, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(29, MOVE_BATON_PASS), + LEVEL_UP_MOVE(36, MOVE_SWIFT), + LEVEL_UP_MOVE(43, MOVE_AGILITY), + LEVEL_UP_MOVE(50, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const u16 sLedianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 8, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(15, MOVE_COMET_PUNCH), + LEVEL_UP_MOVE(24, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(24, MOVE_REFLECT), + LEVEL_UP_MOVE(24, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(33, MOVE_BATON_PASS), + LEVEL_UP_MOVE(42, MOVE_SWIFT), + LEVEL_UP_MOVE(51, MOVE_AGILITY), + LEVEL_UP_MOVE(60, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const u16 sSpinarakLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), + LEVEL_UP_MOVE( 6, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(11, MOVE_CONSTRICT), + LEVEL_UP_MOVE(17, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(23, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE(30, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(37, MOVE_SPIDER_WEB), + LEVEL_UP_MOVE(45, MOVE_AGILITY), + LEVEL_UP_MOVE(53, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +static const u16 sAriadosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), + LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 6, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(11, MOVE_CONSTRICT), + LEVEL_UP_MOVE(17, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(25, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE(34, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(43, MOVE_SPIDER_WEB), + LEVEL_UP_MOVE(53, MOVE_AGILITY), + LEVEL_UP_MOVE(63, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +static const u16 sCrobatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 1, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 6, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(16, MOVE_BITE), + LEVEL_UP_MOVE(21, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(28, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(35, MOVE_AIR_CUTTER), + LEVEL_UP_MOVE(42, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(49, MOVE_POISON_FANG), + LEVEL_UP_MOVE(56, MOVE_HAZE), + LEVEL_UP_END +}; + +static const u16 sChinchouLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(13, MOVE_FLAIL), + LEVEL_UP_MOVE(17, MOVE_WATER_GUN), + LEVEL_UP_MOVE(25, MOVE_SPARK), + LEVEL_UP_MOVE(29, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(41, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(49, MOVE_CHARGE), + LEVEL_UP_END +}; + +static const u16 sLanturnLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(13, MOVE_FLAIL), + LEVEL_UP_MOVE(17, MOVE_WATER_GUN), + LEVEL_UP_MOVE(25, MOVE_SPARK), + LEVEL_UP_MOVE(32, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(61, MOVE_CHARGE), + LEVEL_UP_END +}; + +static const u16 sPichuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(11, MOVE_SWEET_KISS), + LEVEL_UP_END +}; + +static const u16 sCleffaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 4, MOVE_ENCORE), + LEVEL_UP_MOVE( 8, MOVE_SING), + LEVEL_UP_MOVE(13, MOVE_SWEET_KISS), + LEVEL_UP_END +}; + +static const u16 sIgglybuffLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 9, MOVE_POUND), + LEVEL_UP_MOVE(14, MOVE_SWEET_KISS), + LEVEL_UP_END +}; + +static const u16 sTogepiLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 6, MOVE_METRONOME), + LEVEL_UP_MOVE(11, MOVE_SWEET_KISS), + LEVEL_UP_MOVE(16, MOVE_YAWN), + LEVEL_UP_MOVE(21, MOVE_ENCORE), + LEVEL_UP_MOVE(26, MOVE_FOLLOW_ME), + LEVEL_UP_MOVE(31, MOVE_WISH), + LEVEL_UP_MOVE(36, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(41, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const u16 sTogeticLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 6, MOVE_METRONOME), + LEVEL_UP_MOVE(11, MOVE_SWEET_KISS), + LEVEL_UP_MOVE(16, MOVE_YAWN), + LEVEL_UP_MOVE(21, MOVE_ENCORE), + LEVEL_UP_MOVE(26, MOVE_FOLLOW_ME), + LEVEL_UP_MOVE(31, MOVE_WISH), + LEVEL_UP_MOVE(36, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(41, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const u16 sNatuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE(10, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(20, MOVE_TELEPORT), + LEVEL_UP_MOVE(30, MOVE_WISH), + LEVEL_UP_MOVE(30, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(40, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(50, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +static const u16 sXatuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE(10, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(20, MOVE_TELEPORT), + LEVEL_UP_MOVE(35, MOVE_WISH), + LEVEL_UP_MOVE(35, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(50, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(65, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +static const u16 sMareepLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(16, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(23, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(30, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(37, MOVE_THUNDER), + LEVEL_UP_END +}; + +static const u16 sFlaaffyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 9, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(18, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(27, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(36, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(45, MOVE_THUNDER), + LEVEL_UP_END +}; + +static const u16 sAmpharosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 9, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(18, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(27, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(30, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE(42, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(57, MOVE_THUNDER), + LEVEL_UP_END +}; + +static const u16 sBellossomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 1, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE(44, MOVE_PETAL_DANCE), + LEVEL_UP_MOVE(55, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +static const u16 sMarillLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 3, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(15, MOVE_ROLLOUT), + LEVEL_UP_MOVE(21, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(28, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(36, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(45, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const u16 sAzumarillLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 3, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(15, MOVE_ROLLOUT), + LEVEL_UP_MOVE(24, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(34, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(45, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(57, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const u16 sSudowoodoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 1, MOVE_MIMIC), + LEVEL_UP_MOVE( 9, MOVE_FLAIL), + LEVEL_UP_MOVE(17, MOVE_LOW_KICK), + LEVEL_UP_MOVE(25, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(33, MOVE_BLOCK), + LEVEL_UP_MOVE(41, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(49, MOVE_SLAM), + LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const u16 sPolitoedLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE( 1, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(35, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(51, MOVE_SWAGGER), + LEVEL_UP_END +}; + +static const u16 sHoppipLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 5, MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_TACKLE), + LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(15, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(17, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(20, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(25, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(30, MOVE_MEGA_DRAIN), + LEVEL_UP_END +}; + +static const u16 sSkiploomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 1, MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_TACKLE), + LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(15, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(17, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(22, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(29, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(36, MOVE_MEGA_DRAIN), + LEVEL_UP_END +}; + +static const u16 sJumpluffLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 1, MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_TACKLE), + LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(15, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(17, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(22, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(33, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(44, MOVE_MEGA_DRAIN), + LEVEL_UP_END +}; + +static const u16 sAipomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 6, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(13, MOVE_ASTONISH), + LEVEL_UP_MOVE(18, MOVE_BATON_PASS), + LEVEL_UP_MOVE(25, MOVE_TICKLE), + LEVEL_UP_MOVE(31, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(38, MOVE_SWIFT), + LEVEL_UP_MOVE(43, MOVE_SCREECH), + LEVEL_UP_MOVE(50, MOVE_AGILITY), + LEVEL_UP_END +}; + +static const u16 sSunkernLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 6, MOVE_GROWTH), + LEVEL_UP_MOVE(13, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(18, MOVE_INGRAIN), + LEVEL_UP_MOVE(25, MOVE_ENDEAVOR), + LEVEL_UP_MOVE(30, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(37, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(42, MOVE_GIGA_DRAIN), + LEVEL_UP_END +}; + +static const u16 sSunfloraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 6, MOVE_GROWTH), + LEVEL_UP_MOVE(13, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(18, MOVE_INGRAIN), + LEVEL_UP_MOVE(25, MOVE_BULLET_SEED), + LEVEL_UP_MOVE(30, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(37, MOVE_PETAL_DANCE), + LEVEL_UP_MOVE(42, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +static const u16 sYanmaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(19, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE(25, MOVE_DETECT), + LEVEL_UP_MOVE(31, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(37, MOVE_UPROAR), + LEVEL_UP_MOVE(43, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(49, MOVE_SCREECH), + LEVEL_UP_END +}; + +static const u16 sWooperLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(11, MOVE_SLAM), + LEVEL_UP_MOVE(16, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(21, MOVE_AMNESIA), + LEVEL_UP_MOVE(31, MOVE_YAWN), + LEVEL_UP_MOVE(36, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(41, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(51, MOVE_MIST), + LEVEL_UP_MOVE(51, MOVE_HAZE), + LEVEL_UP_END +}; + +static const u16 sQuagsireLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(11, MOVE_SLAM), + LEVEL_UP_MOVE(16, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(23, MOVE_AMNESIA), + LEVEL_UP_MOVE(35, MOVE_YAWN), + LEVEL_UP_MOVE(42, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(49, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(61, MOVE_MIST), + LEVEL_UP_MOVE(61, MOVE_HAZE), + LEVEL_UP_END +}; + +static const u16 sEspeonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_CONFUSION), + LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(30, MOVE_SWIFT), + LEVEL_UP_MOVE(36, MOVE_PSYBEAM), + LEVEL_UP_MOVE(42, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(47, MOVE_PSYCHIC), + LEVEL_UP_MOVE(52, MOVE_MORNING_SUN), + LEVEL_UP_END +}; + +static const u16 sUmbreonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_PURSUIT), + LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(30, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(36, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(42, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(47, MOVE_SCREECH), + LEVEL_UP_MOVE(52, MOVE_MOONLIGHT), + LEVEL_UP_END +}; + +static const u16 sMurkrowLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 9, MOVE_ASTONISH), + LEVEL_UP_MOVE(14, MOVE_PURSUIT), + LEVEL_UP_MOVE(22, MOVE_HAZE), + LEVEL_UP_MOVE(27, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(35, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(40, MOVE_TAUNT), + LEVEL_UP_MOVE(48, MOVE_MEAN_LOOK), + LEVEL_UP_END +}; + +static const u16 sSlowkingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CURSE), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 6, MOVE_GROWL), + LEVEL_UP_MOVE(15, MOVE_WATER_GUN), + LEVEL_UP_MOVE(20, MOVE_CONFUSION), + LEVEL_UP_MOVE(29, MOVE_DISABLE), + LEVEL_UP_MOVE(34, MOVE_HEADBUTT), + LEVEL_UP_MOVE(43, MOVE_SWAGGER), + LEVEL_UP_MOVE(48, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +static const u16 sMisdreavusLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), + LEVEL_UP_MOVE( 6, MOVE_SPITE), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(17, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(23, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(30, MOVE_PSYBEAM), + LEVEL_UP_MOVE(37, MOVE_PAIN_SPLIT), + LEVEL_UP_MOVE(45, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(53, MOVE_GRUDGE), + LEVEL_UP_END +}; + +static const u16 sUnownLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HIDDEN_POWER), + LEVEL_UP_END +}; + +static const u16 sWobbuffetLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_COUNTER), + LEVEL_UP_MOVE( 1, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE( 1, MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 1, MOVE_DESTINY_BOND), + LEVEL_UP_END +}; + +static const u16 sGirafarigLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_ASTONISH), + LEVEL_UP_MOVE(13, MOVE_CONFUSION), + LEVEL_UP_MOVE(19, MOVE_STOMP), + LEVEL_UP_MOVE(25, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(31, MOVE_AGILITY), + LEVEL_UP_MOVE(37, MOVE_BATON_PASS), + LEVEL_UP_MOVE(43, MOVE_PSYBEAM), + LEVEL_UP_MOVE(49, MOVE_CRUNCH), + LEVEL_UP_END +}; + +static const u16 sPinecoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_PROTECT), + LEVEL_UP_MOVE( 8, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(15, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(22, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(29, MOVE_BIDE), + LEVEL_UP_MOVE(36, MOVE_EXPLOSION), + LEVEL_UP_MOVE(43, MOVE_SPIKES), + LEVEL_UP_MOVE(50, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const u16 sForretressLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_PROTECT), + LEVEL_UP_MOVE( 1, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE( 8, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(15, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(22, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(29, MOVE_BIDE), + LEVEL_UP_MOVE(39, MOVE_EXPLOSION), + LEVEL_UP_MOVE(49, MOVE_SPIKES), + LEVEL_UP_MOVE(59, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const u16 sDunsparceLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(11, MOVE_YAWN), + LEVEL_UP_MOVE(14, MOVE_GLARE), + LEVEL_UP_MOVE(21, MOVE_SPITE), + LEVEL_UP_MOVE(24, MOVE_PURSUIT), + LEVEL_UP_MOVE(31, MOVE_SCREECH), + LEVEL_UP_MOVE(34, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(41, MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +static const u16 sGligarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 6, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(13, MOVE_HARDEN), + LEVEL_UP_MOVE(20, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(28, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(36, MOVE_SLASH), + LEVEL_UP_MOVE(44, MOVE_SCREECH), + LEVEL_UP_MOVE(52, MOVE_GUILLOTINE), + LEVEL_UP_END +}; + +static const u16 sSteelixLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 9, MOVE_BIND), + LEVEL_UP_MOVE(13, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(21, MOVE_HARDEN), + LEVEL_UP_MOVE(25, MOVE_RAGE), + LEVEL_UP_MOVE(33, MOVE_SANDSTORM), + LEVEL_UP_MOVE(37, MOVE_SLAM), + LEVEL_UP_MOVE(45, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(49, MOVE_CRUNCH), + LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const u16 sSnubbullLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8, MOVE_CHARM), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(19, MOVE_LICK), + LEVEL_UP_MOVE(26, MOVE_ROAR), + LEVEL_UP_MOVE(34, MOVE_RAGE), + LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(53, MOVE_CRUNCH), + LEVEL_UP_END +}; + +static const u16 sGranbullLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8, MOVE_CHARM), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(19, MOVE_LICK), + LEVEL_UP_MOVE(28, MOVE_ROAR), + LEVEL_UP_MOVE(38, MOVE_RAGE), + LEVEL_UP_MOVE(49, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(61, MOVE_CRUNCH), + LEVEL_UP_END +}; + +static const u16 sQwilfishLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPIKES), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE(10, MOVE_HARDEN), + LEVEL_UP_MOVE(10, MOVE_MINIMIZE), + LEVEL_UP_MOVE(19, MOVE_WATER_GUN), + LEVEL_UP_MOVE(28, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(46, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const u16 sScizorLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 6, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(11, MOVE_PURSUIT), + LEVEL_UP_MOVE(16, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(21, MOVE_AGILITY), + LEVEL_UP_MOVE(26, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(31, MOVE_SLASH), + LEVEL_UP_MOVE(36, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(41, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(46, MOVE_FURY_CUTTER), + LEVEL_UP_END +}; + +static const u16 sShuckleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE( 9, MOVE_WRAP), + LEVEL_UP_MOVE(14, MOVE_ENCORE), + LEVEL_UP_MOVE(23, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(28, MOVE_BIDE), + LEVEL_UP_MOVE(37, MOVE_REST), + LEVEL_UP_END +}; + +static const u16 sHeracrossLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 6, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE(11, MOVE_ENDURE), + LEVEL_UP_MOVE(17, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(23, MOVE_BRICK_BREAK), + LEVEL_UP_MOVE(30, MOVE_COUNTER), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(45, MOVE_REVERSAL), + LEVEL_UP_MOVE(53, MOVE_MEGAHORN), + LEVEL_UP_END +}; + +static const u16 sSneaselLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_TAUNT), + LEVEL_UP_MOVE( 8, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(15, MOVE_SCREECH), + LEVEL_UP_MOVE(22, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(29, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(36, MOVE_AGILITY), + LEVEL_UP_MOVE(43, MOVE_ICY_WIND), + LEVEL_UP_MOVE(50, MOVE_SLASH), + LEVEL_UP_MOVE(57, MOVE_BEAT_UP), + LEVEL_UP_MOVE(64, MOVE_METAL_CLAW), + LEVEL_UP_END +}; + +static const u16 sTeddiursaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_LICK), + LEVEL_UP_MOVE(13, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(19, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(25, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(31, MOVE_REST), + LEVEL_UP_MOVE(37, MOVE_SLASH), + LEVEL_UP_MOVE(43, MOVE_SNORE), + LEVEL_UP_MOVE(49, MOVE_THRASH), + LEVEL_UP_END +}; + +static const u16 sUrsaringLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 1, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 7, MOVE_LICK), + LEVEL_UP_MOVE(13, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(19, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(25, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(31, MOVE_REST), + LEVEL_UP_MOVE(37, MOVE_SLASH), + LEVEL_UP_MOVE(43, MOVE_SNORE), + LEVEL_UP_MOVE(49, MOVE_THRASH), + LEVEL_UP_END +}; + +static const u16 sSlugmaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_SMOG), + LEVEL_UP_MOVE( 8, MOVE_EMBER), + LEVEL_UP_MOVE(15, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(22, MOVE_HARDEN), + LEVEL_UP_MOVE(29, MOVE_AMNESIA), + LEVEL_UP_MOVE(36, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(43, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(50, MOVE_BODY_SLAM), + LEVEL_UP_END +}; + +static const u16 sMagcargoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_SMOG), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 8, MOVE_EMBER), + LEVEL_UP_MOVE(15, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(22, MOVE_HARDEN), + LEVEL_UP_MOVE(29, MOVE_AMNESIA), + LEVEL_UP_MOVE(36, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(48, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(60, MOVE_BODY_SLAM), + LEVEL_UP_END +}; + +static const u16 sSwinubLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(10, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(19, MOVE_ENDURE), + LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(37, MOVE_MIST), + LEVEL_UP_MOVE(46, MOVE_BLIZZARD), + LEVEL_UP_MOVE(55, MOVE_AMNESIA), + LEVEL_UP_END +}; + +static const u16 sPiloswineLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_ENDURE), + LEVEL_UP_MOVE(10, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(19, MOVE_ENDURE), + LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(33, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(42, MOVE_MIST), + LEVEL_UP_MOVE(56, MOVE_BLIZZARD), + LEVEL_UP_MOVE(70, MOVE_AMNESIA), + LEVEL_UP_END +}; + +static const u16 sCorsolaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 6, MOVE_HARDEN), + LEVEL_UP_MOVE(12, MOVE_BUBBLE), + LEVEL_UP_MOVE(17, MOVE_RECOVER), + LEVEL_UP_MOVE(17, MOVE_REFRESH), + LEVEL_UP_MOVE(23, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(28, MOVE_SPIKE_CANNON), + LEVEL_UP_MOVE(34, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(39, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE(45, MOVE_ANCIENT_POWER), + LEVEL_UP_END +}; + +static const u16 sRemoraidLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE(11, MOVE_LOCK_ON), + LEVEL_UP_MOVE(22, MOVE_PSYBEAM), + LEVEL_UP_MOVE(22, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(22, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(33, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(44, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(55, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +static const u16 sOctilleryLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE(11, MOVE_CONSTRICT), + LEVEL_UP_MOVE(22, MOVE_PSYBEAM), + LEVEL_UP_MOVE(22, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(22, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(25, MOVE_OCTAZOOKA), + LEVEL_UP_MOVE(38, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(54, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(70, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +static const u16 sDelibirdLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PRESENT), + LEVEL_UP_END +}; + +static const u16 sMantineLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 8, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(15, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(22, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(29, MOVE_AGILITY), + LEVEL_UP_MOVE(36, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(43, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(50, MOVE_CONFUSE_RAY), + LEVEL_UP_END +}; + +static const u16 sSkarmoryLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE(10, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(13, MOVE_SWIFT), + LEVEL_UP_MOVE(16, MOVE_AGILITY), + LEVEL_UP_MOVE(26, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(29, MOVE_AIR_CUTTER), + LEVEL_UP_MOVE(32, MOVE_STEEL_WING), + LEVEL_UP_MOVE(42, MOVE_SPIKES), + LEVEL_UP_MOVE(45, MOVE_METAL_SOUND), + LEVEL_UP_END +}; + +static const u16 sHoundourLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 7, MOVE_HOWL), + LEVEL_UP_MOVE(13, MOVE_SMOG), + LEVEL_UP_MOVE(19, MOVE_ROAR), + LEVEL_UP_MOVE(25, MOVE_BITE), + LEVEL_UP_MOVE(31, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(37, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(43, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(49, MOVE_CRUNCH), + LEVEL_UP_END +}; + +static const u16 sHoundoomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_HOWL), + LEVEL_UP_MOVE( 7, MOVE_HOWL), + LEVEL_UP_MOVE(13, MOVE_SMOG), + LEVEL_UP_MOVE(19, MOVE_ROAR), + LEVEL_UP_MOVE(27, MOVE_BITE), + LEVEL_UP_MOVE(35, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(43, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(51, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(59, MOVE_CRUNCH), + LEVEL_UP_END +}; + +static const u16 sKingdraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 8, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(15, MOVE_LEER), + LEVEL_UP_MOVE(22, MOVE_WATER_GUN), + LEVEL_UP_MOVE(29, MOVE_TWISTER), + LEVEL_UP_MOVE(40, MOVE_AGILITY), + LEVEL_UP_MOVE(51, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(62, MOVE_DRAGON_DANCE), + LEVEL_UP_END +}; + +static const u16 sPhanpyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(17, MOVE_FLAIL), + LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(33, MOVE_ROLLOUT), + LEVEL_UP_MOVE(41, MOVE_ENDURE), + LEVEL_UP_MOVE(49, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const u16 sDonphanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(17, MOVE_FLAIL), + LEVEL_UP_MOVE(25, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(33, MOVE_ROLLOUT), + LEVEL_UP_MOVE(41, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(49, MOVE_EARTHQUAKE), + LEVEL_UP_END +}; + +static const u16 sPorygon2LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONVERSION_2), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_CONVERSION), + LEVEL_UP_MOVE( 9, MOVE_AGILITY), + LEVEL_UP_MOVE(12, MOVE_PSYBEAM), + LEVEL_UP_MOVE(20, MOVE_RECOVER), + LEVEL_UP_MOVE(24, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(32, MOVE_LOCK_ON), + LEVEL_UP_MOVE(36, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE(44, MOVE_RECYCLE), + LEVEL_UP_MOVE(48, MOVE_ZAP_CANNON), + LEVEL_UP_END +}; + +static const u16 sStantlerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 7, MOVE_LEER), + LEVEL_UP_MOVE(13, MOVE_ASTONISH), + LEVEL_UP_MOVE(19, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(25, MOVE_STOMP), + LEVEL_UP_MOVE(31, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(43, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(49, MOVE_CALM_MIND), + LEVEL_UP_END +}; + +static const u16 sSmeargleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SKETCH), + LEVEL_UP_MOVE(11, MOVE_SKETCH), + LEVEL_UP_MOVE(21, MOVE_SKETCH), + LEVEL_UP_MOVE(31, MOVE_SKETCH), + LEVEL_UP_MOVE(41, MOVE_SKETCH), + LEVEL_UP_MOVE(51, MOVE_SKETCH), + LEVEL_UP_MOVE(61, MOVE_SKETCH), + LEVEL_UP_MOVE(71, MOVE_SKETCH), + LEVEL_UP_MOVE(81, MOVE_SKETCH), + LEVEL_UP_MOVE(91, MOVE_SKETCH), + LEVEL_UP_END +}; + +static const u16 sTyrogueLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +static const u16 sHitmontopLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_REVENGE), + LEVEL_UP_MOVE( 1, MOVE_ROLLING_KICK), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(13, MOVE_PURSUIT), + LEVEL_UP_MOVE(19, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(20, MOVE_TRIPLE_KICK), + LEVEL_UP_MOVE(25, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(31, MOVE_COUNTER), + LEVEL_UP_MOVE(37, MOVE_AGILITY), + LEVEL_UP_MOVE(43, MOVE_DETECT), + LEVEL_UP_MOVE(49, MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +static const u16 sSmoochumLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 9, MOVE_SWEET_KISS), + LEVEL_UP_MOVE(13, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(21, MOVE_CONFUSION), + LEVEL_UP_MOVE(25, MOVE_SING), + LEVEL_UP_MOVE(33, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(37, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(45, MOVE_PSYCHIC), + LEVEL_UP_MOVE(49, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(57, MOVE_BLIZZARD), + LEVEL_UP_END +}; + +static const u16 sElekidLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 9, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE(17, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(25, MOVE_SWIFT), + LEVEL_UP_MOVE(33, MOVE_SCREECH), + LEVEL_UP_MOVE(41, MOVE_THUNDERBOLT), + LEVEL_UP_MOVE(49, MOVE_THUNDER), + LEVEL_UP_END +}; + +static const u16 sMagbyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 7, MOVE_LEER), + LEVEL_UP_MOVE(13, MOVE_SMOG), + LEVEL_UP_MOVE(19, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE(25, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(31, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(37, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(43, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(49, MOVE_FIRE_BLAST), + LEVEL_UP_END +}; + +static const u16 sMiltankLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_GROWL), + LEVEL_UP_MOVE( 8, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(13, MOVE_STOMP), + LEVEL_UP_MOVE(19, MOVE_MILK_DRINK), + LEVEL_UP_MOVE(26, MOVE_BIDE), + LEVEL_UP_MOVE(34, MOVE_ROLLOUT), + LEVEL_UP_MOVE(43, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(53, MOVE_HEAL_BELL), + LEVEL_UP_END +}; + +static const u16 sBlisseyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7, MOVE_REFRESH), + LEVEL_UP_MOVE(10, MOVE_SOFT_BOILED), + LEVEL_UP_MOVE(13, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(18, MOVE_MINIMIZE), + LEVEL_UP_MOVE(23, MOVE_SING), + LEVEL_UP_MOVE(28, MOVE_EGG_BOMB), + LEVEL_UP_MOVE(33, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(40, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const u16 sRaikouLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE(11, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(21, MOVE_ROAR), + LEVEL_UP_MOVE(31, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(41, MOVE_SPARK), + LEVEL_UP_MOVE(51, MOVE_REFLECT), + LEVEL_UP_MOVE(61, MOVE_CRUNCH), + LEVEL_UP_MOVE(71, MOVE_THUNDER), + LEVEL_UP_MOVE(81, MOVE_CALM_MIND), + LEVEL_UP_END +}; + +static const u16 sEnteiLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE(11, MOVE_EMBER), + LEVEL_UP_MOVE(21, MOVE_ROAR), + LEVEL_UP_MOVE(31, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(41, MOVE_STOMP), + LEVEL_UP_MOVE(51, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(61, MOVE_SWAGGER), + LEVEL_UP_MOVE(71, MOVE_FIRE_BLAST), + LEVEL_UP_MOVE(81, MOVE_CALM_MIND), + LEVEL_UP_END +}; + +static const u16 sSuicuneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE(11, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(21, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(31, MOVE_GUST), + LEVEL_UP_MOVE(41, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(51, MOVE_MIST), + LEVEL_UP_MOVE(61, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE(71, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(81, MOVE_CALM_MIND), + LEVEL_UP_END +}; + +static const u16 sLarvitarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 8, MOVE_SANDSTORM), + LEVEL_UP_MOVE(15, MOVE_SCREECH), + LEVEL_UP_MOVE(22, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(29, MOVE_THRASH), + LEVEL_UP_MOVE(36, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(43, MOVE_CRUNCH), + LEVEL_UP_MOVE(50, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(57, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +static const u16 sPupitarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SANDSTORM), + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 8, MOVE_SANDSTORM), + LEVEL_UP_MOVE(15, MOVE_SCREECH), + LEVEL_UP_MOVE(22, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(29, MOVE_THRASH), + LEVEL_UP_MOVE(38, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(47, MOVE_CRUNCH), + LEVEL_UP_MOVE(56, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +static const u16 sTyranitarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SANDSTORM), + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 8, MOVE_SANDSTORM), + LEVEL_UP_MOVE(15, MOVE_SCREECH), + LEVEL_UP_MOVE(22, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(29, MOVE_THRASH), + LEVEL_UP_MOVE(38, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(47, MOVE_CRUNCH), + LEVEL_UP_MOVE(61, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(75, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +static const u16 sLugiaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(11, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(22, MOVE_GUST), + LEVEL_UP_MOVE(33, MOVE_RECOVER), + LEVEL_UP_MOVE(44, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(55, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(66, MOVE_SWIFT), + LEVEL_UP_MOVE(77, MOVE_AEROBLAST), + LEVEL_UP_MOVE(88, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(99, MOVE_FUTURE_SIGHT), + LEVEL_UP_END +}; + +static const u16 sHoOhLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(11, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(22, MOVE_GUST), + LEVEL_UP_MOVE(33, MOVE_RECOVER), + LEVEL_UP_MOVE(44, MOVE_FIRE_BLAST), + LEVEL_UP_MOVE(55, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(66, MOVE_SWIFT), + LEVEL_UP_MOVE(77, MOVE_SACRED_FIRE), + LEVEL_UP_MOVE(88, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(99, MOVE_FUTURE_SIGHT), + LEVEL_UP_END +}; + +static const u16 sCelebiLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_RECOVER), + LEVEL_UP_MOVE( 1, MOVE_HEAL_BELL), + LEVEL_UP_MOVE(10, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(20, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(30, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(40, MOVE_BATON_PASS), + LEVEL_UP_MOVE(50, MOVE_PERISH_SONG), + LEVEL_UP_END +}; + +static const u16 sSpecies252LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +static const u16 sSpecies253LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +static const u16 sSpecies254LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +static const u16 sSpecies255LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +static const u16 sSpecies256LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +static const u16 sSpecies257LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +static const u16 sSpecies258LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +static const u16 sSpecies259LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +static const u16 sSpecies260LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +static const u16 sSpecies261LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +static const u16 sSpecies262LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +static const u16 sSpecies263LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +static const u16 sSpecies264LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +static const u16 sSpecies265LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +static const u16 sSpecies266LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +static const u16 sSpecies267LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +static const u16 sSpecies268LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +static const u16 sSpecies269LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +static const u16 sSpecies270LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +static const u16 sSpecies271LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +static const u16 sSpecies272LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +static const u16 sSpecies273LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +static const u16 sSpecies274LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +static const u16 sSpecies275LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +static const u16 sSpecies276LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +static const u16 sTreeckoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 6, MOVE_ABSORB), + LEVEL_UP_MOVE(11, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(16, MOVE_PURSUIT), + LEVEL_UP_MOVE(21, MOVE_SCREECH), + LEVEL_UP_MOVE(26, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(31, MOVE_AGILITY), + LEVEL_UP_MOVE(36, MOVE_SLAM), + LEVEL_UP_MOVE(41, MOVE_DETECT), + LEVEL_UP_MOVE(46, MOVE_GIGA_DRAIN), + LEVEL_UP_END +}; + +static const u16 sGrovyleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 6, MOVE_ABSORB), + LEVEL_UP_MOVE(11, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(16, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(17, MOVE_PURSUIT), + LEVEL_UP_MOVE(23, MOVE_SCREECH), + LEVEL_UP_MOVE(29, MOVE_LEAF_BLADE), + LEVEL_UP_MOVE(35, MOVE_AGILITY), + LEVEL_UP_MOVE(41, MOVE_SLAM), + LEVEL_UP_MOVE(47, MOVE_DETECT), + LEVEL_UP_MOVE(53, MOVE_FALSE_SWIPE), + LEVEL_UP_END +}; + +static const u16 sSceptileLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 6, MOVE_ABSORB), + LEVEL_UP_MOVE(11, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(16, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(17, MOVE_PURSUIT), + LEVEL_UP_MOVE(23, MOVE_SCREECH), + LEVEL_UP_MOVE(29, MOVE_LEAF_BLADE), + LEVEL_UP_MOVE(35, MOVE_AGILITY), + LEVEL_UP_MOVE(43, MOVE_SLAM), + LEVEL_UP_MOVE(51, MOVE_DETECT), + LEVEL_UP_MOVE(59, MOVE_FALSE_SWIPE), + LEVEL_UP_END +}; + +static const u16 sTorchicLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(10, MOVE_EMBER), + LEVEL_UP_MOVE(16, MOVE_PECK), + LEVEL_UP_MOVE(19, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(25, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(28, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(34, MOVE_SLASH), + LEVEL_UP_MOVE(37, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(43, MOVE_FLAMETHROWER), + LEVEL_UP_END +}; + +static const u16 sCombuskenLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(13, MOVE_EMBER), + LEVEL_UP_MOVE(16, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(17, MOVE_PECK), + LEVEL_UP_MOVE(21, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(28, MOVE_BULK_UP), + LEVEL_UP_MOVE(32, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(39, MOVE_SLASH), + LEVEL_UP_MOVE(43, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(50, MOVE_SKY_UPPERCUT), + LEVEL_UP_END +}; + +static const u16 sBlazikenLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(13, MOVE_EMBER), + LEVEL_UP_MOVE(16, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(17, MOVE_PECK), + LEVEL_UP_MOVE(21, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(28, MOVE_BULK_UP), + LEVEL_UP_MOVE(32, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(36, MOVE_BLAZE_KICK), + LEVEL_UP_MOVE(42, MOVE_SLASH), + LEVEL_UP_MOVE(49, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(59, MOVE_SKY_UPPERCUT), + LEVEL_UP_END +}; + +static const u16 sMudkipLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 6, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(15, MOVE_BIDE), + LEVEL_UP_MOVE(19, MOVE_FORESIGHT), + LEVEL_UP_MOVE(24, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(33, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE(37, MOVE_PROTECT), + LEVEL_UP_MOVE(42, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(46, MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +static const u16 sMarshtompLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 6, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(15, MOVE_BIDE), + LEVEL_UP_MOVE(16, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(20, MOVE_FORESIGHT), + LEVEL_UP_MOVE(25, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(37, MOVE_MUDDY_WATER), + LEVEL_UP_MOVE(42, MOVE_PROTECT), + LEVEL_UP_MOVE(46, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(53, MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +static const u16 sSwampertLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 6, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(15, MOVE_BIDE), + LEVEL_UP_MOVE(16, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(20, MOVE_FORESIGHT), + LEVEL_UP_MOVE(25, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(39, MOVE_MUDDY_WATER), + LEVEL_UP_MOVE(46, MOVE_PROTECT), + LEVEL_UP_MOVE(52, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(61, MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +static const u16 sPoochyenaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_HOWL), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(21, MOVE_ROAR), + LEVEL_UP_MOVE(25, MOVE_SWAGGER), + LEVEL_UP_MOVE(29, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(33, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(37, MOVE_TAUNT), + LEVEL_UP_MOVE(41, MOVE_CRUNCH), + LEVEL_UP_MOVE(45, MOVE_THIEF), + LEVEL_UP_END +}; + +static const u16 sMightyenaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HOWL), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 5, MOVE_HOWL), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(22, MOVE_ROAR), + LEVEL_UP_MOVE(27, MOVE_SWAGGER), + LEVEL_UP_MOVE(32, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(42, MOVE_TAUNT), + LEVEL_UP_MOVE(47, MOVE_CRUNCH), + LEVEL_UP_MOVE(52, MOVE_THIEF), + LEVEL_UP_END +}; + +static const u16 sZigzagoonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9, MOVE_HEADBUTT), + LEVEL_UP_MOVE(13, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(21, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(25, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(29, MOVE_COVET), + LEVEL_UP_MOVE(33, MOVE_FLAIL), + LEVEL_UP_MOVE(37, MOVE_REST), + LEVEL_UP_MOVE(41, MOVE_BELLY_DRUM), + LEVEL_UP_END +}; + +static const u16 sLinooneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9, MOVE_HEADBUTT), + LEVEL_UP_MOVE(13, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(23, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(29, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(35, MOVE_COVET), + LEVEL_UP_MOVE(41, MOVE_SLASH), + LEVEL_UP_MOVE(47, MOVE_REST), + LEVEL_UP_MOVE(53, MOVE_BELLY_DRUM), + LEVEL_UP_END +}; + +static const u16 sWurmpleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), + LEVEL_UP_MOVE( 5, MOVE_POISON_STING), + LEVEL_UP_END +}; + +static const u16 sSilcoonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_END +}; + +static const u16 sBeautiflyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE(10, MOVE_ABSORB), + LEVEL_UP_MOVE(13, MOVE_GUST), + LEVEL_UP_MOVE(17, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(20, MOVE_MORNING_SUN), + LEVEL_UP_MOVE(24, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(27, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(31, MOVE_ATTRACT), + LEVEL_UP_MOVE(34, MOVE_SILVER_WIND), + LEVEL_UP_MOVE(38, MOVE_GIGA_DRAIN), + LEVEL_UP_END +}; + +static const u16 sCascoonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_END +}; + +static const u16 sDustoxLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE(10, MOVE_CONFUSION), + LEVEL_UP_MOVE(13, MOVE_GUST), + LEVEL_UP_MOVE(17, MOVE_PROTECT), + LEVEL_UP_MOVE(20, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(24, MOVE_PSYBEAM), + LEVEL_UP_MOVE(27, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(31, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(34, MOVE_SILVER_WIND), + LEVEL_UP_MOVE(38, MOVE_TOXIC), + LEVEL_UP_END +}; + +static const u16 sLotadLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 3, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_ABSORB), + LEVEL_UP_MOVE(13, MOVE_NATURE_POWER), + LEVEL_UP_MOVE(21, MOVE_MIST), + LEVEL_UP_MOVE(31, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(43, MOVE_MEGA_DRAIN), + LEVEL_UP_END +}; + +static const u16 sLombreLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 3, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_ABSORB), + LEVEL_UP_MOVE(13, MOVE_NATURE_POWER), + LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(25, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(31, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(37, MOVE_THIEF), + LEVEL_UP_MOVE(43, MOVE_UPROAR), + LEVEL_UP_MOVE(49, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const u16 sLudicoloLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_NATURE_POWER), + LEVEL_UP_END +}; + +static const u16 sSeedotLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BIDE), + LEVEL_UP_MOVE( 3, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_GROWTH), + LEVEL_UP_MOVE(13, MOVE_NATURE_POWER), + LEVEL_UP_MOVE(21, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(31, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(43, MOVE_EXPLOSION), + LEVEL_UP_END +}; + +static const u16 sNuzleafLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 3, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_GROWTH), + LEVEL_UP_MOVE(13, MOVE_NATURE_POWER), + LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(25, MOVE_TORMENT), + LEVEL_UP_MOVE(31, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(37, MOVE_RAZOR_WIND), + LEVEL_UP_MOVE(43, MOVE_SWAGGER), + LEVEL_UP_MOVE(49, MOVE_EXTRASENSORY), + LEVEL_UP_END +}; + +static const u16 sShiftryLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_GROWTH), + LEVEL_UP_MOVE( 1, MOVE_NATURE_POWER), + LEVEL_UP_END +}; + +static const u16 sNincadaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 5, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(19, MOVE_MIND_READER), + LEVEL_UP_MOVE(25, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(31, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(38, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(45, MOVE_DIG), + LEVEL_UP_END +}; + +static const u16 sNinjaskLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 5, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(19, MOVE_MIND_READER), + LEVEL_UP_MOVE(20, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(20, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(20, MOVE_SCREECH), + LEVEL_UP_MOVE(25, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(31, MOVE_SLASH), + LEVEL_UP_MOVE(38, MOVE_AGILITY), + LEVEL_UP_MOVE(45, MOVE_BATON_PASS), + LEVEL_UP_END +}; + +static const u16 sShedinjaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 5, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(19, MOVE_MIND_READER), + LEVEL_UP_MOVE(25, MOVE_SPITE), + LEVEL_UP_MOVE(31, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(38, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(45, MOVE_GRUDGE), + LEVEL_UP_END +}; + +static const u16 sTaillowLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 4, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 8, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(19, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(26, MOVE_ENDEAVOR), + LEVEL_UP_MOVE(34, MOVE_AERIAL_ACE), + LEVEL_UP_MOVE(43, MOVE_AGILITY), + LEVEL_UP_END +}; + +static const u16 sSwellowLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 4, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 8, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(19, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(28, MOVE_ENDEAVOR), + LEVEL_UP_MOVE(38, MOVE_AERIAL_ACE), + LEVEL_UP_MOVE(49, MOVE_AGILITY), + LEVEL_UP_END +}; + +static const u16 sShroomishLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 4, MOVE_TACKLE), + LEVEL_UP_MOVE( 7, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(10, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(16, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(22, MOVE_HEADBUTT), + LEVEL_UP_MOVE(28, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(36, MOVE_GROWTH), + LEVEL_UP_MOVE(45, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(54, MOVE_SPORE), + LEVEL_UP_END +}; + +static const u16 sBreloomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 4, MOVE_TACKLE), + LEVEL_UP_MOVE( 7, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(10, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(16, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(22, MOVE_HEADBUTT), + LEVEL_UP_MOVE(23, MOVE_MACH_PUNCH), + LEVEL_UP_MOVE(28, MOVE_COUNTER), + LEVEL_UP_MOVE(36, MOVE_SKY_UPPERCUT), + LEVEL_UP_MOVE(45, MOVE_MIND_READER), + LEVEL_UP_MOVE(54, MOVE_DYNAMIC_PUNCH), + LEVEL_UP_END +}; + +static const u16 sSpindaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_UPROAR), + LEVEL_UP_MOVE(12, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(16, MOVE_PSYBEAM), + LEVEL_UP_MOVE(23, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(27, MOVE_DIZZY_PUNCH), + LEVEL_UP_MOVE(34, MOVE_TEETER_DANCE), + LEVEL_UP_MOVE(38, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(45, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(49, MOVE_FLAIL), + LEVEL_UP_MOVE(56, MOVE_THRASH), + LEVEL_UP_END +}; + +static const u16 sWingullLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(13, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(21, MOVE_MIST), + LEVEL_UP_MOVE(31, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(43, MOVE_PURSUIT), + LEVEL_UP_MOVE(55, MOVE_AGILITY), + LEVEL_UP_END +}; + +static const u16 sPelipperLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 1, MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 3, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(13, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(21, MOVE_MIST), + LEVEL_UP_MOVE(25, MOVE_PROTECT), + LEVEL_UP_MOVE(33, MOVE_STOCKPILE), + LEVEL_UP_MOVE(33, MOVE_SWALLOW), + LEVEL_UP_MOVE(47, MOVE_SPIT_UP), + LEVEL_UP_MOVE(61, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const u16 sSurskitLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(19, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(25, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(31, MOVE_AGILITY), + LEVEL_UP_MOVE(37, MOVE_MIST), + LEVEL_UP_MOVE(37, MOVE_HAZE), + LEVEL_UP_END +}; + +static const u16 sMasquerainLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(19, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(26, MOVE_GUST), + LEVEL_UP_MOVE(33, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(40, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(47, MOVE_SILVER_WIND), + LEVEL_UP_MOVE(53, MOVE_WHIRLWIND), + LEVEL_UP_END +}; + +static const u16 sWailmerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 5, MOVE_GROWL), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(14, MOVE_ROLLOUT), + LEVEL_UP_MOVE(19, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE(23, MOVE_ASTONISH), + LEVEL_UP_MOVE(28, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(32, MOVE_MIST), + LEVEL_UP_MOVE(37, MOVE_REST), + LEVEL_UP_MOVE(41, MOVE_WATER_SPOUT), + LEVEL_UP_MOVE(46, MOVE_AMNESIA), + LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const u16 sWailordLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_ROLLOUT), + LEVEL_UP_MOVE( 5, MOVE_GROWL), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(14, MOVE_ROLLOUT), + LEVEL_UP_MOVE(19, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE(23, MOVE_ASTONISH), + LEVEL_UP_MOVE(28, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(32, MOVE_MIST), + LEVEL_UP_MOVE(37, MOVE_REST), + LEVEL_UP_MOVE(44, MOVE_WATER_SPOUT), + LEVEL_UP_MOVE(52, MOVE_AMNESIA), + LEVEL_UP_MOVE(59, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const u16 sSkittyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 3, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7, MOVE_ATTRACT), + LEVEL_UP_MOVE(13, MOVE_SING), + LEVEL_UP_MOVE(15, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(19, MOVE_ASSIST), + LEVEL_UP_MOVE(25, MOVE_CHARM), + LEVEL_UP_MOVE(27, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(31, MOVE_COVET), + LEVEL_UP_MOVE(37, MOVE_HEAL_BELL), + LEVEL_UP_MOVE(39, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const u16 sDelcattyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_ATTRACT), + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), + LEVEL_UP_END +}; + +static const u16 sKecleonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THIEF), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 4, MOVE_BIND), + LEVEL_UP_MOVE( 7, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(12, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(17, MOVE_PSYBEAM), + LEVEL_UP_MOVE(24, MOVE_SCREECH), + LEVEL_UP_MOVE(31, MOVE_SLASH), + LEVEL_UP_MOVE(40, MOVE_SUBSTITUTE), + LEVEL_UP_MOVE(49, MOVE_ANCIENT_POWER), + LEVEL_UP_END +}; + +static const u16 sBaltoyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 3, MOVE_HARDEN), + LEVEL_UP_MOVE( 5, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(11, MOVE_PSYBEAM), + LEVEL_UP_MOVE(15, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(19, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(25, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(31, MOVE_SANDSTORM), + LEVEL_UP_MOVE(37, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(45, MOVE_EXPLOSION), + LEVEL_UP_END +}; + +static const u16 sClaydolLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TELEPORT), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 3, MOVE_HARDEN), + LEVEL_UP_MOVE( 5, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(11, MOVE_PSYBEAM), + LEVEL_UP_MOVE(15, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(19, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(25, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(31, MOVE_SANDSTORM), + LEVEL_UP_MOVE(36, MOVE_HYPER_BEAM), + LEVEL_UP_MOVE(42, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(55, MOVE_EXPLOSION), + LEVEL_UP_END +}; + +static const u16 sNosepassLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_MOVE(13, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(16, MOVE_BLOCK), + LEVEL_UP_MOVE(22, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(28, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(31, MOVE_SANDSTORM), + LEVEL_UP_MOVE(37, MOVE_REST), + LEVEL_UP_MOVE(43, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(46, MOVE_LOCK_ON), + LEVEL_UP_END +}; + +static const u16 sTorkoalLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 4, MOVE_SMOG), + LEVEL_UP_MOVE( 7, MOVE_CURSE), + LEVEL_UP_MOVE(14, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(17, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(20, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(27, MOVE_PROTECT), + LEVEL_UP_MOVE(30, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(33, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(40, MOVE_AMNESIA), + LEVEL_UP_MOVE(43, MOVE_FLAIL), + LEVEL_UP_MOVE(46, MOVE_HEAT_WAVE), + LEVEL_UP_END +}; + +static const u16 sSableyeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 5, MOVE_FORESIGHT), + LEVEL_UP_MOVE( 9, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(13, MOVE_ASTONISH), + LEVEL_UP_MOVE(17, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(21, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(25, MOVE_DETECT), + LEVEL_UP_MOVE(29, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(33, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(37, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(41, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(45, MOVE_MEAN_LOOK), + LEVEL_UP_END +}; + +static const u16 sBarboachLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 6, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(11, MOVE_WATER_GUN), + LEVEL_UP_MOVE(16, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(21, MOVE_AMNESIA), + LEVEL_UP_MOVE(26, MOVE_REST), + LEVEL_UP_MOVE(26, MOVE_SNORE), + LEVEL_UP_MOVE(31, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(36, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(41, MOVE_FISSURE), + LEVEL_UP_END +}; + +static const u16 sWhiscashLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TICKLE), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 6, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(11, MOVE_WATER_GUN), + LEVEL_UP_MOVE(16, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(21, MOVE_AMNESIA), + LEVEL_UP_MOVE(26, MOVE_REST), + LEVEL_UP_MOVE(26, MOVE_SNORE), + LEVEL_UP_MOVE(36, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(46, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(56, MOVE_FISSURE), + LEVEL_UP_END +}; + +static const u16 sLuvdiscLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_CHARM), + LEVEL_UP_MOVE(12, MOVE_WATER_GUN), + LEVEL_UP_MOVE(16, MOVE_AGILITY), + LEVEL_UP_MOVE(24, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(28, MOVE_ATTRACT), + LEVEL_UP_MOVE(36, MOVE_SWEET_KISS), + LEVEL_UP_MOVE(40, MOVE_FLAIL), + LEVEL_UP_MOVE(48, MOVE_SAFEGUARD), + LEVEL_UP_END +}; + +static const u16 sCorphishLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_MOVE(10, MOVE_VICE_GRIP), + LEVEL_UP_MOVE(13, MOVE_LEER), + LEVEL_UP_MOVE(20, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(23, MOVE_PROTECT), + LEVEL_UP_MOVE(26, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(32, MOVE_TAUNT), + LEVEL_UP_MOVE(35, MOVE_CRABHAMMER), + LEVEL_UP_MOVE(38, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(44, MOVE_GUILLOTINE), + LEVEL_UP_END +}; + +static const u16 sCrawdauntLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_VICE_GRIP), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_MOVE(10, MOVE_VICE_GRIP), + LEVEL_UP_MOVE(13, MOVE_LEER), + LEVEL_UP_MOVE(20, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(23, MOVE_PROTECT), + LEVEL_UP_MOVE(26, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(34, MOVE_TAUNT), + LEVEL_UP_MOVE(39, MOVE_CRABHAMMER), + LEVEL_UP_MOVE(44, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(52, MOVE_GUILLOTINE), + LEVEL_UP_END +}; + +static const u16 sFeebasLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE(15, MOVE_TACKLE), + LEVEL_UP_MOVE(30, MOVE_FLAIL), + LEVEL_UP_END +}; + +static const u16 sMiloticLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 5, MOVE_WRAP), + LEVEL_UP_MOVE(10, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(15, MOVE_REFRESH), + LEVEL_UP_MOVE(20, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(25, MOVE_TWISTER), + LEVEL_UP_MOVE(30, MOVE_RECOVER), + LEVEL_UP_MOVE(35, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(40, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(45, MOVE_ATTRACT), + LEVEL_UP_MOVE(50, MOVE_SAFEGUARD), + LEVEL_UP_END +}; + +static const u16 sCarvanhaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 7, MOVE_RAGE), + LEVEL_UP_MOVE(13, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(16, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(22, MOVE_CRUNCH), + LEVEL_UP_MOVE(28, MOVE_SCREECH), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(37, MOVE_SWAGGER), + LEVEL_UP_MOVE(43, MOVE_AGILITY), + LEVEL_UP_END +}; + +static const u16 sSharpedoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 7, MOVE_RAGE), + LEVEL_UP_MOVE(13, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(16, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(22, MOVE_CRUNCH), + LEVEL_UP_MOVE(28, MOVE_SCREECH), + LEVEL_UP_MOVE(33, MOVE_SLASH), + LEVEL_UP_MOVE(38, MOVE_TAUNT), + LEVEL_UP_MOVE(43, MOVE_SWAGGER), + LEVEL_UP_MOVE(48, MOVE_SKULL_BASH), + LEVEL_UP_MOVE(53, MOVE_AGILITY), + LEVEL_UP_END +}; + +static const u16 sTrapinchLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(25, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(33, MOVE_CRUNCH), + LEVEL_UP_MOVE(41, MOVE_DIG), + LEVEL_UP_MOVE(49, MOVE_SANDSTORM), + LEVEL_UP_MOVE(57, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +static const u16 sVibravaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(25, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(33, MOVE_CRUNCH), + LEVEL_UP_MOVE(35, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(41, MOVE_SCREECH), + LEVEL_UP_MOVE(49, MOVE_SANDSTORM), + LEVEL_UP_MOVE(57, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +static const u16 sFlygonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(25, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(33, MOVE_CRUNCH), + LEVEL_UP_MOVE(35, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(41, MOVE_SCREECH), + LEVEL_UP_MOVE(53, MOVE_SANDSTORM), + LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +static const u16 sMakuhitaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 4, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(10, MOVE_ARM_THRUST), + LEVEL_UP_MOVE(13, MOVE_VITAL_THROW), + LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(22, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(28, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(31, MOVE_SMELLING_SALT), + LEVEL_UP_MOVE(37, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(40, MOVE_ENDURE), + LEVEL_UP_MOVE(46, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(49, MOVE_REVERSAL), + LEVEL_UP_END +}; + +static const u16 sHariyamaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_ARM_THRUST), + LEVEL_UP_MOVE( 4, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(10, MOVE_ARM_THRUST), + LEVEL_UP_MOVE(13, MOVE_VITAL_THROW), + LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(22, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(29, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(33, MOVE_SMELLING_SALT), + LEVEL_UP_MOVE(40, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(44, MOVE_ENDURE), + LEVEL_UP_MOVE(51, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(55, MOVE_REVERSAL), + LEVEL_UP_END +}; + +static const u16 sElectrikeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 9, MOVE_LEER), + LEVEL_UP_MOVE(12, MOVE_HOWL), + LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(20, MOVE_SPARK), + LEVEL_UP_MOVE(25, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(28, MOVE_ROAR), + LEVEL_UP_MOVE(33, MOVE_BITE), + LEVEL_UP_MOVE(36, MOVE_THUNDER), + LEVEL_UP_MOVE(41, MOVE_CHARGE), + LEVEL_UP_END +}; + +static const u16 sManectricLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_HOWL), + LEVEL_UP_MOVE( 4, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 9, MOVE_LEER), + LEVEL_UP_MOVE(12, MOVE_HOWL), + LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(20, MOVE_SPARK), + LEVEL_UP_MOVE(25, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(31, MOVE_ROAR), + LEVEL_UP_MOVE(39, MOVE_BITE), + LEVEL_UP_MOVE(45, MOVE_THUNDER), + LEVEL_UP_MOVE(53, MOVE_CHARGE), + LEVEL_UP_END +}; + +static const u16 sNumelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE(11, MOVE_EMBER), + LEVEL_UP_MOVE(19, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(25, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(29, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(31, MOVE_AMNESIA), + LEVEL_UP_MOVE(35, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(41, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(49, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const u16 sCameruptLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(11, MOVE_EMBER), + LEVEL_UP_MOVE(19, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(25, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(29, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(31, MOVE_AMNESIA), + LEVEL_UP_MOVE(33, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(37, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(45, MOVE_ERUPTION), + LEVEL_UP_MOVE(55, MOVE_FISSURE), + LEVEL_UP_END +}; + +static const u16 sSphealLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_ICE_BALL), + LEVEL_UP_MOVE(19, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(25, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(31, MOVE_HAIL), + LEVEL_UP_MOVE(37, MOVE_REST), + LEVEL_UP_MOVE(37, MOVE_SNORE), + LEVEL_UP_MOVE(43, MOVE_BLIZZARD), + LEVEL_UP_MOVE(49, MOVE_SHEER_COLD), + LEVEL_UP_END +}; + +static const u16 sSealeoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_ENCORE), + LEVEL_UP_MOVE( 7, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_ICE_BALL), + LEVEL_UP_MOVE(19, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(25, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(31, MOVE_HAIL), + LEVEL_UP_MOVE(39, MOVE_REST), + LEVEL_UP_MOVE(39, MOVE_SNORE), + LEVEL_UP_MOVE(47, MOVE_BLIZZARD), + LEVEL_UP_MOVE(55, MOVE_SHEER_COLD), + LEVEL_UP_END +}; + +static const u16 sWalreinLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_ENCORE), + LEVEL_UP_MOVE( 7, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_ICE_BALL), + LEVEL_UP_MOVE(19, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(25, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(31, MOVE_HAIL), + LEVEL_UP_MOVE(39, MOVE_REST), + LEVEL_UP_MOVE(39, MOVE_SNORE), + LEVEL_UP_MOVE(50, MOVE_BLIZZARD), + LEVEL_UP_MOVE(61, MOVE_SHEER_COLD), + LEVEL_UP_END +}; + +static const u16 sCacneaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 5, MOVE_ABSORB), + LEVEL_UP_MOVE( 9, MOVE_GROWTH), + LEVEL_UP_MOVE(13, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(17, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(21, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(25, MOVE_INGRAIN), + LEVEL_UP_MOVE(29, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(33, MOVE_SPIKES), + LEVEL_UP_MOVE(37, MOVE_NEEDLE_ARM), + LEVEL_UP_MOVE(41, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(45, MOVE_SANDSTORM), + LEVEL_UP_END +}; + +static const u16 sCacturneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_GROWTH), + LEVEL_UP_MOVE( 5, MOVE_ABSORB), + LEVEL_UP_MOVE( 9, MOVE_GROWTH), + LEVEL_UP_MOVE(13, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(17, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(21, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(25, MOVE_INGRAIN), + LEVEL_UP_MOVE(29, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(35, MOVE_SPIKES), + LEVEL_UP_MOVE(41, MOVE_NEEDLE_ARM), + LEVEL_UP_MOVE(47, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(53, MOVE_SANDSTORM), + LEVEL_UP_END +}; + +static const u16 sSnoruntLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(10, MOVE_BITE), + LEVEL_UP_MOVE(16, MOVE_ICY_WIND), + LEVEL_UP_MOVE(19, MOVE_HEADBUTT), + LEVEL_UP_MOVE(25, MOVE_PROTECT), + LEVEL_UP_MOVE(28, MOVE_CRUNCH), + LEVEL_UP_MOVE(34, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(37, MOVE_HAIL), + LEVEL_UP_MOVE(43, MOVE_BLIZZARD), + LEVEL_UP_END +}; + +static const u16 sGlalieLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 7, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(10, MOVE_BITE), + LEVEL_UP_MOVE(16, MOVE_ICY_WIND), + LEVEL_UP_MOVE(19, MOVE_HEADBUTT), + LEVEL_UP_MOVE(25, MOVE_PROTECT), + LEVEL_UP_MOVE(28, MOVE_CRUNCH), + LEVEL_UP_MOVE(34, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(42, MOVE_HAIL), + LEVEL_UP_MOVE(53, MOVE_BLIZZARD), + LEVEL_UP_MOVE(61, MOVE_SHEER_COLD), + LEVEL_UP_END +}; + +static const u16 sLunatoneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_CONFUSION), + LEVEL_UP_MOVE(13, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(19, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(25, MOVE_PSYWAVE), + LEVEL_UP_MOVE(31, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(37, MOVE_PSYCHIC), + LEVEL_UP_MOVE(43, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(49, MOVE_EXPLOSION), + LEVEL_UP_END +}; + +static const u16 sSolrockLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_CONFUSION), + LEVEL_UP_MOVE(13, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(19, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(25, MOVE_PSYWAVE), + LEVEL_UP_MOVE(31, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(37, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(43, MOVE_SOLAR_BEAM), + LEVEL_UP_MOVE(49, MOVE_EXPLOSION), + LEVEL_UP_END +}; + +static const u16 sAzurillLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 3, MOVE_CHARM), + LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_BUBBLE), + LEVEL_UP_MOVE(15, MOVE_SLAM), + LEVEL_UP_MOVE(21, MOVE_WATER_GUN), + LEVEL_UP_END +}; + +static const u16 sSpoinkLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 7, MOVE_PSYWAVE), + LEVEL_UP_MOVE(10, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(16, MOVE_PSYBEAM), + LEVEL_UP_MOVE(19, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(25, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(28, MOVE_MAGIC_COAT), + LEVEL_UP_MOVE(34, MOVE_PSYCHIC), + LEVEL_UP_MOVE(37, MOVE_REST), + LEVEL_UP_MOVE(37, MOVE_SNORE), + LEVEL_UP_MOVE(43, MOVE_BOUNCE), + LEVEL_UP_END +}; + +static const u16 sGrumpigLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), + LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE( 1, MOVE_PSYBEAM), + LEVEL_UP_MOVE( 7, MOVE_PSYWAVE), + LEVEL_UP_MOVE(10, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(16, MOVE_PSYBEAM), + LEVEL_UP_MOVE(19, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(25, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(28, MOVE_MAGIC_COAT), + LEVEL_UP_MOVE(37, MOVE_PSYCHIC), + LEVEL_UP_MOVE(43, MOVE_REST), + LEVEL_UP_MOVE(43, MOVE_SNORE), + LEVEL_UP_MOVE(55, MOVE_BOUNCE), + LEVEL_UP_END +}; + +static const u16 sPlusleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 4, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(10, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(19, MOVE_SPARK), + LEVEL_UP_MOVE(22, MOVE_ENCORE), + LEVEL_UP_MOVE(28, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(31, MOVE_CHARGE), + LEVEL_UP_MOVE(37, MOVE_THUNDER), + LEVEL_UP_MOVE(40, MOVE_BATON_PASS), + LEVEL_UP_MOVE(47, MOVE_AGILITY), + LEVEL_UP_END +}; + +static const u16 sMinunLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 4, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(10, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(19, MOVE_SPARK), + LEVEL_UP_MOVE(22, MOVE_ENCORE), + LEVEL_UP_MOVE(28, MOVE_CHARM), + LEVEL_UP_MOVE(31, MOVE_CHARGE), + LEVEL_UP_MOVE(37, MOVE_THUNDER), + LEVEL_UP_MOVE(40, MOVE_BATON_PASS), + LEVEL_UP_MOVE(47, MOVE_AGILITY), + LEVEL_UP_END +}; + +static const u16 sMawileLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 6, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(11, MOVE_BITE), + LEVEL_UP_MOVE(16, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(21, MOVE_VICE_GRIP), + LEVEL_UP_MOVE(26, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(31, MOVE_BATON_PASS), + LEVEL_UP_MOVE(36, MOVE_CRUNCH), + LEVEL_UP_MOVE(41, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(46, MOVE_STOCKPILE), + LEVEL_UP_MOVE(46, MOVE_SWALLOW), + LEVEL_UP_MOVE(46, MOVE_SPIT_UP), + LEVEL_UP_END +}; + +static const u16 sMedititeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BIDE), + LEVEL_UP_MOVE( 4, MOVE_MEDITATE), + LEVEL_UP_MOVE( 9, MOVE_CONFUSION), + LEVEL_UP_MOVE(12, MOVE_DETECT), + LEVEL_UP_MOVE(18, MOVE_HIDDEN_POWER), + LEVEL_UP_MOVE(22, MOVE_MIND_READER), + LEVEL_UP_MOVE(28, MOVE_CALM_MIND), + LEVEL_UP_MOVE(32, MOVE_HI_JUMP_KICK), + LEVEL_UP_MOVE(38, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(42, MOVE_REVERSAL), + LEVEL_UP_MOVE(48, MOVE_RECOVER), + LEVEL_UP_END +}; + +static const u16 sMedichamLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_ICE_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_BIDE), + LEVEL_UP_MOVE( 1, MOVE_MEDITATE), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_DETECT), + LEVEL_UP_MOVE( 4, MOVE_MEDITATE), + LEVEL_UP_MOVE( 9, MOVE_CONFUSION), + LEVEL_UP_MOVE(12, MOVE_DETECT), + LEVEL_UP_MOVE(18, MOVE_HIDDEN_POWER), + LEVEL_UP_MOVE(22, MOVE_MIND_READER), + LEVEL_UP_MOVE(28, MOVE_CALM_MIND), + LEVEL_UP_MOVE(32, MOVE_HI_JUMP_KICK), + LEVEL_UP_MOVE(40, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(46, MOVE_REVERSAL), + LEVEL_UP_MOVE(54, MOVE_RECOVER), + LEVEL_UP_END +}; + +static const u16 sSwabluLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 8, MOVE_ASTONISH), + LEVEL_UP_MOVE(11, MOVE_SING), + LEVEL_UP_MOVE(18, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(21, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(28, MOVE_MIST), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(38, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(41, MOVE_REFRESH), + LEVEL_UP_MOVE(48, MOVE_PERISH_SONG), + LEVEL_UP_END +}; + +static const u16 sAltariaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 8, MOVE_ASTONISH), + LEVEL_UP_MOVE(11, MOVE_SING), + LEVEL_UP_MOVE(18, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(21, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(28, MOVE_MIST), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(35, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(40, MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE(45, MOVE_REFRESH), + LEVEL_UP_MOVE(54, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(59, MOVE_SKY_ATTACK), + LEVEL_UP_END +}; + +static const u16 sWynautLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 1, MOVE_ENCORE), + LEVEL_UP_MOVE(15, MOVE_COUNTER), + LEVEL_UP_MOVE(15, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE(15, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(15, MOVE_DESTINY_BOND), + LEVEL_UP_END +}; + +static const u16 sDuskullLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 5, MOVE_DISABLE), + LEVEL_UP_MOVE(12, MOVE_FORESIGHT), + LEVEL_UP_MOVE(16, MOVE_ASTONISH), + LEVEL_UP_MOVE(23, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(27, MOVE_PURSUIT), + LEVEL_UP_MOVE(34, MOVE_CURSE), + LEVEL_UP_MOVE(38, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(45, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(49, MOVE_FUTURE_SIGHT), + LEVEL_UP_END +}; + +static const u16 sDusclopsLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BIND), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 5, MOVE_DISABLE), + LEVEL_UP_MOVE(12, MOVE_FORESIGHT), + LEVEL_UP_MOVE(16, MOVE_ASTONISH), + LEVEL_UP_MOVE(23, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(27, MOVE_PURSUIT), + LEVEL_UP_MOVE(34, MOVE_CURSE), + LEVEL_UP_MOVE(37, MOVE_SHADOW_PUNCH), + LEVEL_UP_MOVE(41, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(51, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(58, MOVE_FUTURE_SIGHT), + LEVEL_UP_END +}; + +static const u16 sRoseliaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 5, MOVE_GROWTH), + LEVEL_UP_MOVE( 9, MOVE_POISON_STING), + LEVEL_UP_MOVE(13, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(17, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(21, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(25, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE(29, MOVE_GRASS_WHISTLE), + LEVEL_UP_MOVE(33, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(37, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(41, MOVE_INGRAIN), + LEVEL_UP_MOVE(45, MOVE_TOXIC), + LEVEL_UP_MOVE(49, MOVE_PETAL_DANCE), + LEVEL_UP_MOVE(53, MOVE_AROMATHERAPY), + LEVEL_UP_MOVE(57, MOVE_SYNTHESIS), + LEVEL_UP_END +}; + +static const u16 sSlakothLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 7, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_SLACK_OFF), + LEVEL_UP_MOVE(19, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(25, MOVE_AMNESIA), + LEVEL_UP_MOVE(31, MOVE_COVET), + LEVEL_UP_MOVE(37, MOVE_COUNTER), + LEVEL_UP_MOVE(43, MOVE_FLAIL), + LEVEL_UP_END +}; + +static const u16 sVigorothLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_ENCORE), + LEVEL_UP_MOVE( 1, MOVE_UPROAR), + LEVEL_UP_MOVE( 7, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_UPROAR), + LEVEL_UP_MOVE(19, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(25, MOVE_ENDURE), + LEVEL_UP_MOVE(31, MOVE_SLASH), + LEVEL_UP_MOVE(37, MOVE_COUNTER), + LEVEL_UP_MOVE(43, MOVE_FOCUS_PUNCH), + LEVEL_UP_MOVE(49, MOVE_REVERSAL), + LEVEL_UP_END +}; + +static const u16 sSlakingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_ENCORE), + LEVEL_UP_MOVE( 1, MOVE_SLACK_OFF), + LEVEL_UP_MOVE( 7, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_SLACK_OFF), + LEVEL_UP_MOVE(19, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(25, MOVE_AMNESIA), + LEVEL_UP_MOVE(31, MOVE_COVET), + LEVEL_UP_MOVE(36, MOVE_SWAGGER), + LEVEL_UP_MOVE(37, MOVE_COUNTER), + LEVEL_UP_MOVE(43, MOVE_FLAIL), + LEVEL_UP_END +}; + +static const u16 sGulpinLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 6, MOVE_YAWN), + LEVEL_UP_MOVE( 9, MOVE_POISON_GAS), + LEVEL_UP_MOVE(14, MOVE_SLUDGE), + LEVEL_UP_MOVE(17, MOVE_AMNESIA), + LEVEL_UP_MOVE(23, MOVE_ENCORE), + LEVEL_UP_MOVE(28, MOVE_TOXIC), + LEVEL_UP_MOVE(34, MOVE_STOCKPILE), + LEVEL_UP_MOVE(34, MOVE_SPIT_UP), + LEVEL_UP_MOVE(34, MOVE_SWALLOW), + LEVEL_UP_MOVE(39, MOVE_SLUDGE_BOMB), + LEVEL_UP_END +}; + +static const u16 sSwalotLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 1, MOVE_SLUDGE), + LEVEL_UP_MOVE( 6, MOVE_YAWN), + LEVEL_UP_MOVE( 9, MOVE_POISON_GAS), + LEVEL_UP_MOVE(14, MOVE_SLUDGE), + LEVEL_UP_MOVE(17, MOVE_AMNESIA), + LEVEL_UP_MOVE(23, MOVE_ENCORE), + LEVEL_UP_MOVE(26, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(31, MOVE_TOXIC), + LEVEL_UP_MOVE(40, MOVE_STOCKPILE), + LEVEL_UP_MOVE(40, MOVE_SPIT_UP), + LEVEL_UP_MOVE(40, MOVE_SWALLOW), + LEVEL_UP_MOVE(48, MOVE_SLUDGE_BOMB), + LEVEL_UP_END +}; + +static const u16 sTropiusLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_GUST), + LEVEL_UP_MOVE( 7, MOVE_GROWTH), + LEVEL_UP_MOVE(11, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(17, MOVE_STOMP), + LEVEL_UP_MOVE(21, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(27, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(31, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE(37, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(41, MOVE_SOLAR_BEAM), + LEVEL_UP_MOVE(47, MOVE_SYNTHESIS), + LEVEL_UP_END +}; + +static const u16 sWhismurLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 5, MOVE_UPROAR), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(15, MOVE_HOWL), + LEVEL_UP_MOVE(21, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(25, MOVE_STOMP), + LEVEL_UP_MOVE(31, MOVE_SCREECH), + LEVEL_UP_MOVE(35, MOVE_ROAR), + LEVEL_UP_MOVE(41, MOVE_REST), + LEVEL_UP_MOVE(41, MOVE_SLEEP_TALK), + LEVEL_UP_MOVE(45, MOVE_HYPER_VOICE), + LEVEL_UP_END +}; + +static const u16 sLoudredLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_UPROAR), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_HOWL), + LEVEL_UP_MOVE( 5, MOVE_UPROAR), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(15, MOVE_HOWL), + LEVEL_UP_MOVE(23, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(29, MOVE_STOMP), + LEVEL_UP_MOVE(37, MOVE_SCREECH), + LEVEL_UP_MOVE(43, MOVE_ROAR), + LEVEL_UP_MOVE(51, MOVE_REST), + LEVEL_UP_MOVE(51, MOVE_SLEEP_TALK), + LEVEL_UP_MOVE(57, MOVE_HYPER_VOICE), + LEVEL_UP_END +}; + +static const u16 sExploudLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_UPROAR), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_HOWL), + LEVEL_UP_MOVE( 5, MOVE_UPROAR), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(15, MOVE_HOWL), + LEVEL_UP_MOVE(23, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(29, MOVE_STOMP), + LEVEL_UP_MOVE(37, MOVE_SCREECH), + LEVEL_UP_MOVE(40, MOVE_HYPER_BEAM), + LEVEL_UP_MOVE(45, MOVE_ROAR), + LEVEL_UP_MOVE(55, MOVE_REST), + LEVEL_UP_MOVE(55, MOVE_SLEEP_TALK), + LEVEL_UP_MOVE(63, MOVE_HYPER_VOICE), + LEVEL_UP_END +}; + +static const u16 sClamperlLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CLAMP), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE( 1, MOVE_IRON_DEFENSE), + LEVEL_UP_END +}; + +static const u16 sHuntailLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE( 8, MOVE_BITE), + LEVEL_UP_MOVE(15, MOVE_SCREECH), + LEVEL_UP_MOVE(22, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(29, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(36, MOVE_CRUNCH), + LEVEL_UP_MOVE(43, MOVE_BATON_PASS), + LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const u16 sGorebyssLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE( 8, MOVE_CONFUSION), + LEVEL_UP_MOVE(15, MOVE_AGILITY), + LEVEL_UP_MOVE(22, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(29, MOVE_AMNESIA), + LEVEL_UP_MOVE(36, MOVE_PSYCHIC), + LEVEL_UP_MOVE(43, MOVE_BATON_PASS), + LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const u16 sAbsolLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 5, MOVE_LEER), + LEVEL_UP_MOVE( 9, MOVE_TAUNT), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(17, MOVE_RAZOR_WIND), + LEVEL_UP_MOVE(21, MOVE_BITE), + LEVEL_UP_MOVE(26, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(31, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(36, MOVE_SLASH), + LEVEL_UP_MOVE(41, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(46, MOVE_PERISH_SONG), + LEVEL_UP_END +}; + +static const u16 sShuppetLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE( 8, MOVE_SCREECH), + LEVEL_UP_MOVE(13, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(20, MOVE_CURSE), + LEVEL_UP_MOVE(25, MOVE_SPITE), + LEVEL_UP_MOVE(32, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(37, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(44, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(49, MOVE_SNATCH), + LEVEL_UP_MOVE(56, MOVE_GRUDGE), + LEVEL_UP_END +}; + +static const u16 sBanetteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 1, MOVE_CURSE), + LEVEL_UP_MOVE( 8, MOVE_SCREECH), + LEVEL_UP_MOVE(13, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(20, MOVE_CURSE), + LEVEL_UP_MOVE(25, MOVE_SPITE), + LEVEL_UP_MOVE(32, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(39, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(48, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(55, MOVE_SNATCH), + LEVEL_UP_MOVE(64, MOVE_GRUDGE), + LEVEL_UP_END +}; + +static const u16 sSeviperLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 7, MOVE_LICK), + LEVEL_UP_MOVE(10, MOVE_BITE), + LEVEL_UP_MOVE(16, MOVE_POISON_TAIL), + LEVEL_UP_MOVE(19, MOVE_SCREECH), + LEVEL_UP_MOVE(25, MOVE_GLARE), + LEVEL_UP_MOVE(28, MOVE_CRUNCH), + LEVEL_UP_MOVE(34, MOVE_POISON_FANG), + LEVEL_UP_MOVE(37, MOVE_SWAGGER), + LEVEL_UP_MOVE(43, MOVE_HAZE), + LEVEL_UP_END +}; + +static const u16 sZangooseLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 4, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(10, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(13, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(19, MOVE_SLASH), + LEVEL_UP_MOVE(25, MOVE_PURSUIT), + LEVEL_UP_MOVE(31, MOVE_CRUSH_CLAW), + LEVEL_UP_MOVE(37, MOVE_TAUNT), + LEVEL_UP_MOVE(46, MOVE_DETECT), + LEVEL_UP_MOVE(55, MOVE_FALSE_SWIPE), + LEVEL_UP_END +}; + +static const u16 sRelicanthLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 8, MOVE_WATER_GUN), + LEVEL_UP_MOVE(15, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(22, MOVE_YAWN), + LEVEL_UP_MOVE(29, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(36, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(43, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(50, MOVE_REST), + LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(64, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const u16 sAronLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(10, MOVE_HEADBUTT), + LEVEL_UP_MOVE(13, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(17, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(21, MOVE_ROAR), + LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(29, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(34, MOVE_PROTECT), + LEVEL_UP_MOVE(39, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(44, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const u16 sLaironLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 4, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(10, MOVE_HEADBUTT), + LEVEL_UP_MOVE(13, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(17, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(21, MOVE_ROAR), + LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(29, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(37, MOVE_PROTECT), + LEVEL_UP_MOVE(45, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(53, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const u16 sAggronLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 4, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(10, MOVE_HEADBUTT), + LEVEL_UP_MOVE(13, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(17, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(21, MOVE_ROAR), + LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(29, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(37, MOVE_PROTECT), + LEVEL_UP_MOVE(50, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(63, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const u16 sCastformLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(10, MOVE_EMBER), + LEVEL_UP_MOVE(10, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(20, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(20, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(20, MOVE_HAIL), + LEVEL_UP_MOVE(30, MOVE_WEATHER_BALL), + LEVEL_UP_END +}; + +static const u16 sVolbeatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 9, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(13, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(21, MOVE_TAIL_GLOW), + LEVEL_UP_MOVE(25, MOVE_SIGNAL_BEAM), + LEVEL_UP_MOVE(29, MOVE_PROTECT), + LEVEL_UP_MOVE(33, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(37, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const u16 sIllumiseLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 9, MOVE_CHARM), + LEVEL_UP_MOVE(13, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(21, MOVE_WISH), + LEVEL_UP_MOVE(25, MOVE_ENCORE), + LEVEL_UP_MOVE(29, MOVE_FLATTER), + LEVEL_UP_MOVE(33, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(37, MOVE_COVET), + LEVEL_UP_END +}; + +static const u16 sLileepLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 8, MOVE_CONSTRICT), + LEVEL_UP_MOVE(15, MOVE_ACID), + LEVEL_UP_MOVE(22, MOVE_INGRAIN), + LEVEL_UP_MOVE(29, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(36, MOVE_AMNESIA), + LEVEL_UP_MOVE(43, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(50, MOVE_STOCKPILE), + LEVEL_UP_MOVE(50, MOVE_SPIT_UP), + LEVEL_UP_MOVE(50, MOVE_SWALLOW), + LEVEL_UP_END +}; + +static const u16 sCradilyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 1, MOVE_ACID), + LEVEL_UP_MOVE( 1, MOVE_INGRAIN), + LEVEL_UP_MOVE( 8, MOVE_CONSTRICT), + LEVEL_UP_MOVE(15, MOVE_ACID), + LEVEL_UP_MOVE(22, MOVE_INGRAIN), + LEVEL_UP_MOVE(29, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(36, MOVE_AMNESIA), + LEVEL_UP_MOVE(48, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(60, MOVE_STOCKPILE), + LEVEL_UP_MOVE(60, MOVE_SPIT_UP), + LEVEL_UP_MOVE(60, MOVE_SWALLOW), + LEVEL_UP_END +}; + +static const u16 sAnorithLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_MOVE(13, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(19, MOVE_WATER_GUN), + LEVEL_UP_MOVE(25, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(31, MOVE_PROTECT), + LEVEL_UP_MOVE(37, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(43, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(49, MOVE_SLASH), + LEVEL_UP_MOVE(55, MOVE_ROCK_BLAST), + LEVEL_UP_END +}; + +static const u16 sArmaldoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_MOVE(13, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(19, MOVE_WATER_GUN), + LEVEL_UP_MOVE(25, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(31, MOVE_PROTECT), + LEVEL_UP_MOVE(37, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(46, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(55, MOVE_SLASH), + LEVEL_UP_MOVE(64, MOVE_ROCK_BLAST), + LEVEL_UP_END +}; + +static const u16 sRaltsLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 6, MOVE_CONFUSION), + LEVEL_UP_MOVE(11, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(16, MOVE_TELEPORT), + LEVEL_UP_MOVE(21, MOVE_CALM_MIND), + LEVEL_UP_MOVE(26, MOVE_PSYCHIC), + LEVEL_UP_MOVE(31, MOVE_IMPRISON), + LEVEL_UP_MOVE(36, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(41, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(46, MOVE_DREAM_EATER), + LEVEL_UP_END +}; + +static const u16 sKirliaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 1, MOVE_TELEPORT), + LEVEL_UP_MOVE( 6, MOVE_CONFUSION), + LEVEL_UP_MOVE(11, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(16, MOVE_TELEPORT), + LEVEL_UP_MOVE(21, MOVE_CALM_MIND), + LEVEL_UP_MOVE(26, MOVE_PSYCHIC), + LEVEL_UP_MOVE(33, MOVE_IMPRISON), + LEVEL_UP_MOVE(40, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(47, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(54, MOVE_DREAM_EATER), + LEVEL_UP_END +}; + +static const u16 sGardevoirLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 1, MOVE_TELEPORT), + LEVEL_UP_MOVE( 6, MOVE_CONFUSION), + LEVEL_UP_MOVE(11, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(16, MOVE_TELEPORT), + LEVEL_UP_MOVE(21, MOVE_CALM_MIND), + LEVEL_UP_MOVE(26, MOVE_PSYCHIC), + LEVEL_UP_MOVE(33, MOVE_IMPRISON), + LEVEL_UP_MOVE(42, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(51, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(60, MOVE_DREAM_EATER), + LEVEL_UP_END +}; + +static const u16 sBagonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 5, MOVE_BITE), + LEVEL_UP_MOVE( 9, MOVE_LEER), + LEVEL_UP_MOVE(17, MOVE_HEADBUTT), + LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(25, MOVE_EMBER), + LEVEL_UP_MOVE(33, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(37, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(41, MOVE_CRUNCH), + LEVEL_UP_MOVE(49, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE(53, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const u16 sShelgonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 5, MOVE_BITE), + LEVEL_UP_MOVE( 9, MOVE_LEER), + LEVEL_UP_MOVE(17, MOVE_HEADBUTT), + LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(25, MOVE_EMBER), + LEVEL_UP_MOVE(30, MOVE_PROTECT), + LEVEL_UP_MOVE(38, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(47, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(56, MOVE_CRUNCH), + LEVEL_UP_MOVE(69, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE(78, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const u16 sSalamenceLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 5, MOVE_BITE), + LEVEL_UP_MOVE( 9, MOVE_LEER), + LEVEL_UP_MOVE(17, MOVE_HEADBUTT), + LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(25, MOVE_EMBER), + LEVEL_UP_MOVE(30, MOVE_PROTECT), + LEVEL_UP_MOVE(38, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(47, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(50, MOVE_FLY), + LEVEL_UP_MOVE(61, MOVE_CRUNCH), + LEVEL_UP_MOVE(79, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE(93, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const u16 sBeldumLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TAKE_DOWN), + LEVEL_UP_END +}; + +static const u16 sMetangLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(20, MOVE_CONFUSION), + LEVEL_UP_MOVE(20, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(26, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(32, MOVE_PURSUIT), + LEVEL_UP_MOVE(38, MOVE_PSYCHIC), + LEVEL_UP_MOVE(44, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(50, MOVE_METEOR_MASH), + LEVEL_UP_MOVE(56, MOVE_AGILITY), + LEVEL_UP_MOVE(62, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +static const u16 sMetagrossLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(20, MOVE_CONFUSION), + LEVEL_UP_MOVE(20, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(26, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(32, MOVE_PURSUIT), + LEVEL_UP_MOVE(38, MOVE_PSYCHIC), + LEVEL_UP_MOVE(44, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(55, MOVE_METEOR_MASH), + LEVEL_UP_MOVE(66, MOVE_AGILITY), + LEVEL_UP_MOVE(77, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +static const u16 sRegirockLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EXPLOSION), + LEVEL_UP_MOVE( 9, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(17, MOVE_CURSE), + LEVEL_UP_MOVE(25, MOVE_SUPERPOWER), + LEVEL_UP_MOVE(33, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(41, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(49, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(57, MOVE_LOCK_ON), + LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +static const u16 sRegiceLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EXPLOSION), + LEVEL_UP_MOVE( 9, MOVE_ICY_WIND), + LEVEL_UP_MOVE(17, MOVE_CURSE), + LEVEL_UP_MOVE(25, MOVE_SUPERPOWER), + LEVEL_UP_MOVE(33, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(41, MOVE_AMNESIA), + LEVEL_UP_MOVE(49, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(57, MOVE_LOCK_ON), + LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +static const u16 sRegisteelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EXPLOSION), + LEVEL_UP_MOVE( 9, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(17, MOVE_CURSE), + LEVEL_UP_MOVE(25, MOVE_SUPERPOWER), + LEVEL_UP_MOVE(33, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(41, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(41, MOVE_AMNESIA), + LEVEL_UP_MOVE(49, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(57, MOVE_LOCK_ON), + LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +static const u16 sKyogreLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_PULSE), + LEVEL_UP_MOVE( 5, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(15, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(20, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(30, MOVE_CALM_MIND), + LEVEL_UP_MOVE(35, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(45, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(50, MOVE_REST), + LEVEL_UP_MOVE(60, MOVE_SHEER_COLD), + LEVEL_UP_MOVE(65, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(75, MOVE_WATER_SPOUT), + LEVEL_UP_END +}; + +static const u16 sGroudonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_MUD_SHOT), + LEVEL_UP_MOVE( 5, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(15, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(20, MOVE_SLASH), + LEVEL_UP_MOVE(30, MOVE_BULK_UP), + LEVEL_UP_MOVE(35, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(45, MOVE_FIRE_BLAST), + LEVEL_UP_MOVE(50, MOVE_REST), + LEVEL_UP_MOVE(60, MOVE_FISSURE), + LEVEL_UP_MOVE(65, MOVE_SOLAR_BEAM), + LEVEL_UP_MOVE(75, MOVE_ERUPTION), + LEVEL_UP_END +}; + +static const u16 sRayquazaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TWISTER), + LEVEL_UP_MOVE( 5, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(15, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(20, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE(30, MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE(35, MOVE_CRUNCH), + LEVEL_UP_MOVE(45, MOVE_FLY), + LEVEL_UP_MOVE(50, MOVE_REST), + LEVEL_UP_MOVE(60, MOVE_EXTREME_SPEED), + LEVEL_UP_MOVE(65, MOVE_OUTRAGE), + LEVEL_UP_MOVE(75, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +static const u16 sLatiasLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), + LEVEL_UP_MOVE( 5, MOVE_WISH), + LEVEL_UP_MOVE(10, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(15, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(20, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(25, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(30, MOVE_REFRESH), + LEVEL_UP_MOVE(35, MOVE_MIST_BALL), + LEVEL_UP_MOVE(40, MOVE_PSYCHIC), + LEVEL_UP_MOVE(45, MOVE_RECOVER), + LEVEL_UP_MOVE(50, MOVE_CHARM), + LEVEL_UP_END +}; + +static const u16 sLatiosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), + LEVEL_UP_MOVE( 5, MOVE_MEMENTO), + LEVEL_UP_MOVE(10, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(15, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(20, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(25, MOVE_PROTECT), + LEVEL_UP_MOVE(30, MOVE_REFRESH), + LEVEL_UP_MOVE(35, MOVE_LUSTER_PURGE), + LEVEL_UP_MOVE(40, MOVE_PSYCHIC), + LEVEL_UP_MOVE(45, MOVE_RECOVER), + LEVEL_UP_MOVE(50, MOVE_DRAGON_DANCE), + LEVEL_UP_END +}; + +static const u16 sJirachiLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WISH), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 5, MOVE_REST), + LEVEL_UP_MOVE(10, MOVE_SWIFT), + LEVEL_UP_MOVE(15, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(20, MOVE_PSYCHIC), + LEVEL_UP_MOVE(25, MOVE_REFRESH), + LEVEL_UP_MOVE(30, MOVE_REST), + LEVEL_UP_MOVE(35, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(40, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(45, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(50, MOVE_DOOM_DESIRE), + LEVEL_UP_END +}; + +static const u16 sDeoxysLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 5, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(10, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(15, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(20, MOVE_PURSUIT), + LEVEL_UP_MOVE(25, MOVE_PSYCHIC), + LEVEL_UP_MOVE(30, MOVE_SWIFT), + LEVEL_UP_MOVE(35, MOVE_AGILITY), + LEVEL_UP_MOVE(40, MOVE_RECOVER), + LEVEL_UP_MOVE(45, MOVE_PSYCHO_BOOST), + LEVEL_UP_MOVE(50, MOVE_EXTREME_SPEED), + LEVEL_UP_END +}; + +static const u16 sChimechoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 6, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_ASTONISH), + LEVEL_UP_MOVE(14, MOVE_CONFUSION), + LEVEL_UP_MOVE(17, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(22, MOVE_UPROAR), + LEVEL_UP_MOVE(25, MOVE_YAWN), + LEVEL_UP_MOVE(30, MOVE_PSYWAVE), + LEVEL_UP_MOVE(33, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(38, MOVE_HEAL_BELL), + LEVEL_UP_MOVE(41, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(46, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +#endif //POKEEMERALD_LEVEL_UP_LEARNSETS_H diff --git a/src/data/pokemon/tmhm_learnsets.h b/src/data/pokemon/tmhm_learnsets.h new file mode 100644 index 000000000..f14478863 --- /dev/null +++ b/src/data/pokemon/tmhm_learnsets.h @@ -0,0 +1,9393 @@ +#ifndef GUARD_TMHM_LEARNSETS_H +#define GUARD_TMHM_LEARNSETS_H + +#define TMHM_LEARNSET(moves) {(u32)(moves), ((u64)(moves) >> 32)} +#define TMHM(tmhm) ((u64)1 << (ITEM_##tmhm - ITEM_TM01_FOCUS_PUNCH)) + +// This table determines which TMs and HMs a species is capable of learning. +// Each entry is a 64-bit bit array spread across two 32-bit values, with +// each bit corresponding to a . +const u32 gTMHMLearnsets[][2] = +{ + [SPECIES_NONE] = TMHM_LEARNSET(0), + + [SPECIES_BULBASAUR] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_IVYSAUR] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_VENUSAUR] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CHARMANDER] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CHARMELEON] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CHARIZARD] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM47_STEEL_WING) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM02_FLY) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SQUIRTLE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_WARTORTLE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_BLASTOISE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_CATERPIE] = TMHM_LEARNSET(0), + + [SPECIES_METAPOD] = TMHM_LEARNSET(0), + + [SPECIES_BUTTERFREE] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_WEEDLE] = TMHM_LEARNSET(0), + + [SPECIES_KAKUNA] = TMHM_LEARNSET(0), + + [SPECIES_BEEDRILL] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_PIDGEY] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_PIDGEOTTO] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_PIDGEOT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_RATTATA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_RATICATE] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SPEAROW] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_FEAROW] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_EKANS] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH)), + + [SPECIES_ARBOK] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH)), + + [SPECIES_PIKACHU] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_RAICHU] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SANDSHREW] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SANDSLASH] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NIDORAN_F] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NIDORINA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NIDOQUEEN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NIDORAN_M] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NIDORINO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NIDOKING] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CLEFAIRY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH)), + + [SPECIES_CLEFABLE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH)), + + [SPECIES_VULPIX] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT)), + + [SPECIES_NINETALES] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT)), + + [SPECIES_JIGGLYPUFF] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH)), + + [SPECIES_WIGGLYTUFF] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH)), + + [SPECIES_ZUBAT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(TM49_SNATCH)), + + [SPECIES_GOLBAT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(TM49_SNATCH)), + + [SPECIES_ODDISH] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_GLOOM] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_VILEPLUME] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_PARAS] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_PARASECT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_VENONAT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_VENOMOTH] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_DIGLETT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_DUGTRIO] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MEOWTH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_PERSIAN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_PSYDUCK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_GOLDUCK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_MANKEY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_PRIMEAPE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_GROWLITHE] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ARCANINE] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_POLIWAG] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_POLIWHIRL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_POLIWRATH] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_ABRA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_KADABRA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_ALAKAZAM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_MACHOP] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MACHOKE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MACHAMP] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_BELLSPROUT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_WEEPINBELL] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_VICTREEBEL] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_TENTACOOL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_TENTACRUEL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_GEODUDE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_GRAVELER] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_GOLEM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_PONYTA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH)), + + [SPECIES_RAPIDASH] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH)), + + [SPECIES_SLOWPOKE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM08_DIVE)), + + [SPECIES_SLOWBRO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM08_DIVE)), + + [SPECIES_MAGNEMITE] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM05_FLASH)), + + [SPECIES_MAGNETON] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM05_FLASH)), + + [SPECIES_FARFETCHD] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM02_FLY)), + + [SPECIES_DODUO] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_DODRIO] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_SEEL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_DEWGONG] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_GRIMER] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF)), + + [SPECIES_MUK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SHELLDER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM08_DIVE)), + + [SPECIES_CLOYSTER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM08_DIVE)), + + [SPECIES_GASTLY] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH)), + + [SPECIES_HAUNTER] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH)), + + [SPECIES_GENGAR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ONIX] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_DROWZEE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_HYPNO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_KRABBY] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM08_DIVE)), + + [SPECIES_KINGLER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM08_DIVE)), + + [SPECIES_VOLTORB] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM12_TAUNT) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_ELECTRODE] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_EXEGGCUTE] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH)), + + [SPECIES_EXEGGUTOR] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH)), + + [SPECIES_CUBONE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MAROWAK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_HITMONLEE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_HITMONCHAN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_LICKITUNG] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_KOFFING] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_WEEZING] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_RHYHORN] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_RHYDON] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CHANSEY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TANGELA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_KANGASKHAN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_HORSEA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SEADRA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_GOLDEEN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SEAKING] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_STARYU] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM03_SURF) + | TMHM(HM05_FLASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_STARMIE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM03_SURF) + | TMHM(HM05_FLASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_MR_MIME] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_SCYTHER] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_JYNX] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_ELECTABUZZ] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MAGMAR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_PINSIR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TAUROS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MAGIKARP] = TMHM_LEARNSET(0), + + [SPECIES_GYARADOS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_LAPRAS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_DITTO] = TMHM_LEARNSET(0), + + [SPECIES_EEVEE] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT)), + + [SPECIES_VAPOREON] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_JOLTEON] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_FLAREON] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT)), + + [SPECIES_PORYGON] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_OMANYTE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_OMASTAR] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_KABUTO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL)), + + [SPECIES_KABUTOPS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_AERODACTYL] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SNORLAX] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH)), + + [SPECIES_ARTICUNO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ZAPDOS] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MOLTRES] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM47_STEEL_WING) + | TMHM(TM50_OVERHEAT) + | TMHM(HM02_FLY) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_DRATINI] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL)), + + [SPECIES_DRAGONAIR] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL)), + + [SPECIES_DRAGONITE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM02_FLY) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_MEWTWO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MEW] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM08_BULK_UP) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM02_FLY) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_CHIKORITA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_BAYLEEF] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MEGANIUM] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CYNDAQUIL] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT)), + + [SPECIES_QUILAVA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TYPHLOSION] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TOTODILE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_CROCONAW] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_FERALIGATR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SENTRET] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF)), + + [SPECIES_FURRET] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_HOOTHOOT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM05_FLASH)), + + [SPECIES_NOCTOWL] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM05_FLASH)), + + [SPECIES_LEDYBA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_LEDIAN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_SPINARAK] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_ARIADOS] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_CROBAT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(TM49_SNATCH) + | TMHM(HM02_FLY)), + + [SPECIES_CHINCHOU] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM05_FLASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_LANTURN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM05_FLASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_PICHU] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_CLEFFA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_IGGLYBUFF] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_TOGEPI] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TOGETIC] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NATU] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_XATU] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM02_FLY) + | TMHM(HM05_FLASH)), + + [SPECIES_MAREEP] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_FLAAFFY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_AMPHAROS] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_BELLOSSOM] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_MARILL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_AZUMARILL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SUDOWOODO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_POLITOED] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_HOPPIP] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_SKIPLOOM] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_JUMPLUFF] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_AIPOM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SUNKERN] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_SUNFLORA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_YANMA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM05_FLASH)), + + [SPECIES_WOOPER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_QUAGSIRE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_ESPEON] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_UMBREON] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_MURKROW] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(TM49_SNATCH) + | TMHM(HM02_FLY)), + + [SPECIES_SLOWKING] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM08_DIVE)), + + [SPECIES_MISDREAVUS] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_UNOWN] = TMHM_LEARNSET(0), + + [SPECIES_WOBBUFFET] = TMHM_LEARNSET(0), + + [SPECIES_GIRAFARIG] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_PINECO] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_FORRETRESS] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_DUNSPARCE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_GLIGAR] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_STEELIX] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SNUBBULL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_GRANBULL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_QWILFISH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SCIZOR] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SHUCKLE] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_HERACROSS] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SNEASEL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TEDDIURSA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_URSARING] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SLUGMA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MAGCARGO] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SWINUB] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_PILOSWINE] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CORSOLA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_REMORAID] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_OCTILLERY] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_DELIBIRD] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM02_FLY)), + + [SPECIES_MANTINE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SKARMORY] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM02_FLY) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_HOUNDOUR] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(TM50_OVERHEAT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_HOUNDOOM] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_KINGDRA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_PHANPY] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_DONPHAN] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_PORYGON2] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_STANTLER] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_SMEARGLE] = TMHM_LEARNSET(0), + + [SPECIES_TYROGUE] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_HITMONTOP] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SMOOCHUM] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_ELEKID] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MAGBY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MILTANK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_BLISSEY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_RAIKOU] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ENTEI] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SUICUNE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_LARVITAR] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_PUPITAR] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TYRANITAR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_LUGIA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM47_STEEL_WING) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM02_FLY) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_HO_OH] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM47_STEEL_WING) + | TMHM(TM50_OVERHEAT) + | TMHM(HM02_FLY) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CELEBI] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_OLD_UNOWN_B] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_C] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_D] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_E] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_F] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_G] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_H] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_I] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_J] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_K] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_L] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_M] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_N] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_O] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_P] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_Q] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_R] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_S] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_T] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_U] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_V] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_W] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_X] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_Y] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_Z] = TMHM_LEARNSET(0), + + [SPECIES_TREECKO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_GROVYLE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SCEPTILE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TORCHIC] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_COMBUSKEN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_BLAZIKEN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MUDKIP] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_MARSHTOMP] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SWAMPERT] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_POOCHYENA] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MIGHTYENA] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ZIGZAGOON] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_LINOONE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_WURMPLE] = TMHM_LEARNSET(0), + + [SPECIES_SILCOON] = TMHM_LEARNSET(0), + + [SPECIES_BEAUTIFLY] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_CASCOON] = TMHM_LEARNSET(0), + + [SPECIES_DUSTOX] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_LOTAD] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM05_FLASH)), + + [SPECIES_LOMBRE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_LUDICOLO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SEEDOT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NUZLEAF] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SHIFTRY] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NINCADA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_NINJASK] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_SHEDINJA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_TAILLOW] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_SWELLOW] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_SHROOMISH] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_BRELOOM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SPINDA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_WINGULL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_PELIPPER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM03_SURF)), + + [SPECIES_SURSKIT] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_MASQUERAIN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_WAILMER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_WAILORD] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SKITTY] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_DELCATTY] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_KECLEON] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_BALTOY] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_CLAYDOL] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NOSEPASS] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TORKOAL] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SABLEYE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_BARBOACH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_WHISCASH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_LUVDISC] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_CORPHISH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL)), + + [SPECIES_CRAWDAUNT] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_FEEBAS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_MILOTIC] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_CARVANHA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SHARPEDO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_TRAPINCH] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_VIBRAVA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_FLYGON] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MAKUHITA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_HARIYAMA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ELECTRIKE] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH)), + + [SPECIES_MANECTRIC] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH)), + + [SPECIES_NUMEL] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CAMERUPT] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SPHEAL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SEALEO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_WALREIN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_CACNEA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_CACTURNE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH)), + + [SPECIES_SNORUNT] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_GLALIE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_LUNATONE] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_SOLROCK] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM50_OVERHEAT) + | TMHM(HM05_FLASH)), + + [SPECIES_AZURILL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL)), + + [SPECIES_SPOINK] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_GRUMPIG] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_PLUSLE] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_MINUN] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_MAWILE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MEDITITE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MEDICHAM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SWABLU] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_ALTARIA] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_WYNAUT] = TMHM_LEARNSET(0), + + [SPECIES_DUSKULL] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_DUSCLOPS] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ROSELIA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_SLAKOTH] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_VIGOROTH] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SLAKING] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_GULPIN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SWALOT] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TROPIUS] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM02_FLY) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_WHISMUR] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT)), + + [SPECIES_LOUDRED] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_EXPLOUD] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CLAMPERL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_HUNTAIL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_GOREBYSS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_ABSOL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SHUPPET] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_BANETTE] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_SEVIPER] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ZANGOOSE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_RELICANTH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_ARON] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_LAIRON] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_AGGRON] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CASTFORM] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_VOLBEAT] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_ILLUMISE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_LILEEP] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT)), + + [SPECIES_CRADILY] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ANORITH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ARMALDO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_RALTS] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_KIRLIA] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_GARDEVOIR] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_BAGON] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SHELGON] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SALAMENCE] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM02_FLY) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_BELDUM] = TMHM_LEARNSET(0), + + [SPECIES_METANG] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_METAGROSS] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_REGIROCK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_REGICE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_REGISTEEL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_KYOGRE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_GROUDON] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_RAYQUAZA] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM50_OVERHEAT) + | TMHM(HM02_FLY) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_LATIAS] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM02_FLY) + | TMHM(HM03_SURF) + | TMHM(HM05_FLASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_LATIOS] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM02_FLY) + | TMHM(HM03_SURF) + | TMHM(HM05_FLASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_JIRACHI] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_DEOXYS] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CHIMECHO] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + +}; + +#endif // GUARD_TMHM_LEARNSETS_H diff --git a/src/data/pokemon/trainer_class_lookups.h b/src/data/pokemon/trainer_class_lookups.h new file mode 100644 index 000000000..ec4dbf0fb --- /dev/null +++ b/src/data/pokemon/trainer_class_lookups.h @@ -0,0 +1,176 @@ +#ifndef POKEEMERALD_TRAINER_CLASS_LOOKUPS_H +#define POKEEMERALD_TRAINER_CLASS_LOOKUPS_H + +const u8 gFacilityClassToPicIndex[] = +{ + TRAINER_PIC_HIKER, // FACILITY_CLASS_HIKER + TRAINER_PIC_AQUA_GRUNT_M, // FACILITY_CLASS_TEAM_AQUA_1 + TRAINER_PIC_POKEMON_BREEDER_F, // FACILITY_CLASS_PKMN_BREEDER_1 + TRAINER_PIC_COOL_TRAINER_M, // FACILITY_CLASS_COOLTRAINER_M + TRAINER_PIC_BIRD_KEEPER, // FACILITY_CLASS_BIRD_KEEPER + TRAINER_PIC_COLLECTOR, // FACILITY_CLASS_COLLECTOR + TRAINER_PIC_AQUA_GRUNT_F, // FACILITY_CLASS_TEAM_AQUA_2 + TRAINER_PIC_SWIMMER_M, // FACILITY_CLASS_SWIMMER_M + TRAINER_PIC_MAGMA_GRUNT_M, // FACILITY_CLASS_TEAM_MAGMA_1 + TRAINER_PIC_EXPERT_M, // FACILITY_CLASS_EXPERT_M + TRAINER_PIC_BLACK_BELT, // FACILITY_CLASS_BLACK_BELT + TRAINER_PIC_AQUA_LEADER_ARCHIE, // FACILITY_CLASS_AQUA_LEADER + TRAINER_PIC_HEX_MANIAC, // FACILITY_CLASS_HEX_MANIAC + TRAINER_PIC_AROMA_LADY, // FACILITY_CLASS_AROMA_LADY + TRAINER_PIC_RUIN_MANIAC, // FACILITY_CLASS_RUIN_MANIAC + TRAINER_PIC_INTERVIEWER, // FACILITY_CLASS_INTERVIEWER + TRAINER_PIC_TUBER_F, // FACILITY_CLASS_TUBER_1 + TRAINER_PIC_TUBER_M, // FACILITY_CLASS_TUBER_2 + TRAINER_PIC_COOL_TRAINER_F, // FACILITY_CLASS_COOLTRAINER_F + TRAINER_PIC_LADY, // FACILITY_CLASS_LADY + TRAINER_PIC_BEAUTY, // FACILITY_CLASS_BEAUTY + TRAINER_PIC_RICH_BOY, // FACILITY_CLASS_RICH_BOY + TRAINER_PIC_EXPERT_F, // FACILITY_CLASS_EXPERT_2 + TRAINER_PIC_POKEMANIAC, // FACILITY_CLASS_POKEMANIAC + TRAINER_PIC_MAGMA_GRUNT_F, // FACILITY_CLASS_TEAM_MAGMA_2 + TRAINER_PIC_GUITARIST, // FACILITY_CLASS_GUITARIST + TRAINER_PIC_KINDLER, // FACILITY_CLASS_KINDLER + TRAINER_PIC_CAMPER, // FACILITY_CLASS_CAMPER + TRAINER_PIC_PICNICKER, // FACILITY_CLASS_PICNICKER + TRAINER_PIC_BUG_MANIAC, // FACILITY_CLASS_BUG_MANIAC + TRAINER_PIC_PSYCHIC_M, // FACILITY_CLASS_PSYCHIC_M + TRAINER_PIC_PSYCHIC_F, // FACILITY_CLASS_PSYCHIC_F + TRAINER_PIC_GENTLEMAN, // FACILITY_CLASS_GENTLEMAN + TRAINER_PIC_ELITE_FOUR_SIDNEY, // FACILITY_CLASS_ELITE_FOUR_1 + TRAINER_PIC_ELITE_FOUR_PHOEBE, // FACILITY_CLASS_ELITE_FOUR_2 + TRAINER_PIC_LEADER_ROXANNE, // FACILITY_CLASS_LEADER_1 + TRAINER_PIC_LEADER_BRAWLY, // FACILITY_CLASS_LEADER_2 + TRAINER_PIC_LEADER_TATE_AND_LIZA, // FACILITY_CLASS_LEADER_3 + TRAINER_PIC_SCHOOL_KID_M, // FACILITY_CLASS_SCHOOL_KID_M + TRAINER_PIC_SCHOOL_KID_F, // FACILITY_CLASS_SCHOOL_KID_F + TRAINER_PIC_SR_AND_JR, // FACILITY_CLASS_SR_AND_JR + TRAINER_PIC_WINSTRATE_M, // FACILITY_CLASS_POKEFAN_1 + TRAINER_PIC_WINSTRATE_F, // FACILITY_CLASS_POKEFAN_2 + TRAINER_PIC_YOUNGSTER, // FACILITY_CLASS_YOUNGSTER + TRAINER_PIC_CHAMPION_WALLACE, // FACILITY_CLASS_CHAMPION + TRAINER_PIC_FISHERMAN, // FACILITY_CLASS_FISHERMAN + TRAINER_PIC_CYCLING_TRIATHLETE_M, // FACILITY_CLASS_TRIATHLETE_1 + TRAINER_PIC_CYCLING_TRIATHLETE_F, // FACILITY_CLASS_TRIATHLETE_2 + TRAINER_PIC_RUNNING_TRIATHLETE_M, // FACILITY_CLASS_TRIATHLETE_3 + TRAINER_PIC_RUNNING_TRIATHLETE_F, // FACILITY_CLASS_TRIATHLETE_4 + TRAINER_PIC_SWIMMING_TRIATHLETE_M, // FACILITY_CLASS_TRIATHLETE_5 + TRAINER_PIC_SWIMMING_TRIATHLETE_F, // FACILITY_CLASS_TRIATHLETE_6 + TRAINER_PIC_DRAGON_TAMER, // FACILITY_CLASS_DRAGON_TAMER + TRAINER_PIC_NINJA_BOY, // FACILITY_CLASS_NINJA_BOY + TRAINER_PIC_BATTLE_GIRL, // FACILITY_CLASS_BATTLE_GIRL + TRAINER_PIC_PARASOL_LADY, // FACILITY_CLASS_PARASOL_LADY + TRAINER_PIC_SWIMMER_F, // FACILITY_CLASS_SWIMMER_F + TRAINER_PIC_TWINS, // FACILITY_CLASS_TWINS + TRAINER_PIC_SAILOR, // FACILITY_CLASS_SAILOR + TRAINER_PIC_WALLY, // FACILITY_CLASS_PKMN_TRAINER_1 + TRAINER_PIC_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_MAY + TRAINER_PIC_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_3 + TRAINER_PIC_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_4 + TRAINER_PIC_MAY, // FACILITY_CLASS_PKMN_TRAINER_BRENDAN + TRAINER_PIC_MAY, // FACILITY_CLASS_PKMN_TRAINER_6 + TRAINER_PIC_MAY, // FACILITY_CLASS_PKMN_TRAINER_7 + TRAINER_PIC_POKEMON_BREEDER_M, // FACILITY_CLASS_PKMN_BREEDER_2 + TRAINER_PIC_BUG_CATCHER, // FACILITY_CLASS_BUG_CATCHER + TRAINER_PIC_POKEMON_RANGER_M, // FACILITY_CLASS_PKMN_RANGER_M + TRAINER_PIC_POKEMON_RANGER_F, // FACILITY_CLASS_PKMN_RANGER_F + TRAINER_PIC_MAGMA_LEADER_MAXIE, // FACILITY_CLASS_MAGMA_LEADER + TRAINER_PIC_LASS, // FACILITY_CLASS_LASS + TRAINER_PIC_YOUNG_COUPLE, // FACILITY_CLASS_YOUNG_COUPLE + TRAINER_PIC_OLD_COUPLE, // FACILITY_CLASS_OLD_COUPLE + TRAINER_PIC_SIS_AND_BRO, // FACILITY_CLASS_SIS_AND_BRO + TRAINER_PIC_STEVEN, // FACILITY_CLASS_PKMN_TRAINER_STEVEN + TRAINER_PIC_SALON_MAIDEN_ANABEL, // FACILITY_CLASS_SALON_MAIDEN + TRAINER_PIC_DOME_ACE_TUCKER, // FACILITY_CLASS_DOME_ACE + TRAINER_PIC_RED, // FACILITY_CLASS_PKMN_TRAINER_RED + TRAINER_PIC_LEAF, // FACILITY_CLASS_PKMN_TRAINER_LEAF + TRAINER_PIC_RUBY_SAPPHIRE_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_RS_BRENDAN + TRAINER_PIC_RUBY_SAPPHIRE_MAY, // FACILITY_CLASS_PKMN_TRAINER_RS_MAY +}; + +const u8 gFacilityClassToTrainerClass[] = +{ + TRAINER_CLASS_HIKER, // FACILITY_CLASS_HIKER + TRAINER_CLASS_TEAM_AQUA, // FACILITY_CLASS_TEAM_AQUA_1 + TRAINER_CLASS_PKMN_BREEDER, // FACILITY_CLASS_PKMN_BREEDER_1 + TRAINER_CLASS_COOLTRAINER_1, // FACILITY_CLASS_COOLTRAINER_M + TRAINER_CLASS_BIRD_KEEPER, // FACILITY_CLASS_BIRD_KEEPER + TRAINER_CLASS_COLLECTOR, // FACILITY_CLASS_COLLECTOR + TRAINER_CLASS_TEAM_AQUA, // FACILITY_CLASS_TEAM_AQUA_2 + TRAINER_CLASS_SWIMMER_M, // FACILITY_CLASS_SWIMMER_M + TRAINER_CLASS_TEAM_MAGMA, // FACILITY_CLASS_TEAM_MAGMA_1 + TRAINER_CLASS_EXPERT, // FACILITY_CLASS_EXPERT_M + TRAINER_CLASS_BLACK_BELT, // FACILITY_CLASS_BLACK_BELT + TRAINER_CLASS_AQUA_LEADER, // FACILITY_CLASS_AQUA_LEADER + TRAINER_CLASS_HEX_MANIAC, // FACILITY_CLASS_HEX_MANIAC + TRAINER_CLASS_AROMA_LADY, // FACILITY_CLASS_AROMA_LADY + TRAINER_CLASS_RUIN_MANIAC, // FACILITY_CLASS_RUIN_MANIAC + TRAINER_CLASS_INTERVIEWER, // FACILITY_CLASS_INTERVIEWER + TRAINER_CLASS_TUBER_1, // FACILITY_CLASS_TUBER_1 + TRAINER_CLASS_TUBER_2, // FACILITY_CLASS_TUBER_2 + TRAINER_CLASS_COOLTRAINER_1, // FACILITY_CLASS_COOLTRAINER_F + TRAINER_CLASS_LADY, // FACILITY_CLASS_LADY + TRAINER_CLASS_BEAUTY, // FACILITY_CLASS_BEAUTY + TRAINER_CLASS_RICH_BOY, // FACILITY_CLASS_RICH_BOY + TRAINER_CLASS_EXPERT, // FACILITY_CLASS_EXPERT_2 + TRAINER_CLASS_POKEMANIAC, // FACILITY_CLASS_POKEMANIAC + TRAINER_CLASS_TEAM_MAGMA, // FACILITY_CLASS_TEAM_MAGMA_2 + TRAINER_CLASS_GUITARIST, // FACILITY_CLASS_GUITARIST + TRAINER_CLASS_KINDLER, // FACILITY_CLASS_KINDLER + TRAINER_CLASS_CAMPER, // FACILITY_CLASS_CAMPER + TRAINER_CLASS_PICNICKER, // FACILITY_CLASS_PICNICKER + TRAINER_CLASS_BUG_MANIAC, // FACILITY_CLASS_BUG_MANIAC + TRAINER_CLASS_PSYCHIC, // FACILITY_CLASS_PSYCHIC_M + TRAINER_CLASS_PSYCHIC, // FACILITY_CLASS_PSYCHIC_F + TRAINER_CLASS_GENTLEMAN, // FACILITY_CLASS_GENTLEMAN + TRAINER_CLASS_ELITE_FOUR, // FACILITY_CLASS_ELITE_FOUR_1 + TRAINER_CLASS_ELITE_FOUR, // FACILITY_CLASS_ELITE_FOUR_2 + TRAINER_CLASS_LEADER, // FACILITY_CLASS_LEADER_1 + TRAINER_CLASS_LEADER, // FACILITY_CLASS_LEADER_2 + TRAINER_CLASS_LEADER, // FACILITY_CLASS_LEADER_3 + TRAINER_CLASS_SCHOOL_KID, // FACILITY_CLASS_SCHOOL_KID_M + TRAINER_CLASS_SCHOOL_KID, // FACILITY_CLASS_SCHOOL_KID_F + TRAINER_CLASS_SR_AND_JR, // FACILITY_CLASS_SR_AND_JR + TRAINER_CLASS_POKEFAN, // FACILITY_CLASS_POKEFAN_1 + TRAINER_CLASS_POKEFAN, // FACILITY_CLASS_POKEFAN_2 + TRAINER_CLASS_YOUNGSTER, // FACILITY_CLASS_YOUNGSTER + TRAINER_CLASS_CHAMPION, // FACILITY_CLASS_CHAMPION + TRAINER_CLASS_FISHERMAN, // FACILITY_CLASS_FISHERMAN + TRAINER_CLASS_TRIATHLETE, // FACILITY_CLASS_TRIATHLETE_1 + TRAINER_CLASS_TRIATHLETE, // FACILITY_CLASS_TRIATHLETE_2 + TRAINER_CLASS_TRIATHLETE, // FACILITY_CLASS_TRIATHLETE_3 + TRAINER_CLASS_TRIATHLETE, // FACILITY_CLASS_TRIATHLETE_4 + TRAINER_CLASS_TRIATHLETE, // FACILITY_CLASS_TRIATHLETE_5 + TRAINER_CLASS_TRIATHLETE, // FACILITY_CLASS_TRIATHLETE_6 + TRAINER_CLASS_DRAGON_TAMER, // FACILITY_CLASS_DRAGON_TAMER + TRAINER_CLASS_NINJA_BOY, // FACILITY_CLASS_NINJA_BOY + TRAINER_CLASS_BATTLE_GIRL, // FACILITY_CLASS_BATTLE_GIRL + TRAINER_CLASS_PARASOL_LADY, // FACILITY_CLASS_PARASOL_LADY + TRAINER_CLASS_SWIMMER_F, // FACILITY_CLASS_SWIMMER_F + TRAINER_CLASS_TWINS, // FACILITY_CLASS_TWINS + TRAINER_CLASS_SAILOR, // FACILITY_CLASS_SAILOR + TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_1 + TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_MAY + TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_3 + TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_4 + TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_BRENDAN + TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_6 + TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_7 + TRAINER_CLASS_PKMN_BREEDER, // FACILITY_CLASS_PKMN_BREEDER_2 + TRAINER_CLASS_BUG_CATCHER, // FACILITY_CLASS_BUG_CATCHER + TRAINER_CLASS_PKMN_RANGER, // FACILITY_CLASS_PKMN_RANGER_M + TRAINER_CLASS_PKMN_RANGER, // FACILITY_CLASS_PKMN_RANGER_F + TRAINER_CLASS_MAGMA_LEADER, // FACILITY_CLASS_MAGMA_LEADER + TRAINER_CLASS_LASS, // FACILITY_CLASS_LASS + TRAINER_CLASS_YOUNG_COUPLE, // FACILITY_CLASS_YOUNG_COUPLE + TRAINER_CLASS_OLD_COUPLE, // FACILITY_CLASS_OLD_COUPLE + TRAINER_CLASS_SIS_AND_BRO, // FACILITY_CLASS_SIS_AND_BRO + TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_STEVEN + TRAINER_CLASS_SALON_MAIDEN, // FACILITY_CLASS_SALON_MAIDEN + TRAINER_CLASS_DOME_ACE, // FACILITY_CLASS_DOME_ACE + TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_RED + TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_LEAF + TRAINER_CLASS_PKMN_TRAINER_4, // FACILITY_CLASS_PKMN_TRAINER_RS_BRENDAN + TRAINER_CLASS_PKMN_TRAINER_4, // FACILITY_CLASS_PKMN_TRAINER_RS_MAY +}; + +#endif //POKEEMERALD_TRAINER_CLASS_LOOKUPS_H diff --git a/src/data/pokemon_graphics/back_pic_coordinates.h b/src/data/pokemon_graphics/back_pic_coordinates.h new file mode 100644 index 000000000..f54b409e4 --- /dev/null +++ b/src/data/pokemon_graphics/back_pic_coordinates.h @@ -0,0 +1,443 @@ +const struct MonCoords gUnknown_083021D8[] = +{ + {0x88, 0x00}, // SPECIES_NONE + {0x64, 0x10}, // SPECIES_BULBASAUR + {0x66, 0x09}, // SPECIES_IVYSAUR + {0x87, 0x07}, // SPECIES_VENUSAUR + {0x65, 0x0e}, // SPECIES_CHARMANDER + {0x66, 0x09}, // SPECIES_CHARMELEON + {0x87, 0x04}, // SPECIES_CHARIZARD + {0x65, 0x0e}, // SPECIES_SQUIRTLE + {0x76, 0x0a}, // SPECIES_WARTORTLE + {0x86, 0x08}, // SPECIES_BLASTOISE + {0x55, 0x0f}, // SPECIES_CATERPIE + {0x65, 0x0c}, // SPECIES_METAPOD + {0x87, 0x06}, // SPECIES_BUTTERFREE + {0x56, 0x0b}, // SPECIES_WEEDLE + {0x46, 0x0a}, // SPECIES_KAKUNA + {0x86, 0x09}, // SPECIES_BEEDRILL + {0x66, 0x08}, // SPECIES_PIDGEY + {0x85, 0x0c}, // SPECIES_PIDGEOTTO + {0x78, 0x02}, // SPECIES_PIDGEOT + {0x65, 0x0d}, // SPECIES_RATTATA + {0x75, 0x0d}, // SPECIES_RATICATE + {0x65, 0x0c}, // SPECIES_SPEAROW + {0x87, 0x05}, // SPECIES_FEAROW + {0x66, 0x09}, // SPECIES_EKANS + {0x77, 0x04}, // SPECIES_ARBOK + {0x77, 0x07}, // SPECIES_PIKACHU + {0x66, 0x08}, // SPECIES_RAICHU + {0x65, 0x0d}, // SPECIES_SANDSHREW + {0x86, 0x09}, // SPECIES_SANDSLASH + {0x55, 0x0c}, // SPECIES_NIDORAN_F + {0x86, 0x0a}, // SPECIES_NIDORINA + {0x77, 0x06}, // SPECIES_NIDOQUEEN + {0x56, 0x08}, // SPECIES_NIDORAN_M + {0x86, 0x09}, // SPECIES_NIDORINO + {0x88, 0x03}, // SPECIES_NIDOKING + {0x65, 0x0d}, // SPECIES_CLEFAIRY + {0x76, 0x0a}, // SPECIES_CLEFABLE + {0x76, 0x09}, // SPECIES_VULPIX + {0x77, 0x05}, // SPECIES_NINETALES + {0x65, 0x0d}, // SPECIES_JIGGLYPUFF + {0x66, 0x08}, // SPECIES_WIGGLYTUFF + {0x76, 0x0b}, // SPECIES_ZUBAT + {0x87, 0x06}, // SPECIES_GOLBAT + {0x56, 0x0b}, // SPECIES_ODDISH + {0x66, 0x0a}, // SPECIES_GLOOM + {0x87, 0x07}, // SPECIES_VILEPLUME + {0x63, 0x14}, // SPECIES_PARAS + {0x87, 0x07}, // SPECIES_VENONAT + {0x77, 0x06}, // SPECIES_VENOMOTH + {0x77, 0x04}, // SPECIES_DIGLETT + {0x54, 0x10}, // SPECIES_DUGTRIO + {0x66, 0x0b}, // SPECIES_MEOWTH + {0x65, 0x0c}, // SPECIES_PERSIAN + {0x87, 0x07}, // SPECIES_PSYDUCK + {0x67, 0x07}, // SPECIES_GOLDUCK + {0x77, 0x05}, // SPECIES_MANKEY + {0x76, 0x0b}, // SPECIES_PRIMEAPE + {0x77, 0x07}, // SPECIES_GROWLITHE + {0x66, 0x08}, // SPECIES_ARCANINE + {0x87, 0x06}, // SPECIES_POLIWAG + {0x74, 0x10}, // SPECIES_POLIWHIRL + {0x65, 0x0c}, // SPECIES_POLIWRATH + {0x86, 0x0b}, // SPECIES_ABRA + {0x66, 0x0b}, // SPECIES_KADABRA + {0x76, 0x08}, // SPECIES_ALAKAZAM + {0x67, 0x05}, // SPECIES_MACHOP + {0x65, 0x0c}, // SPECIES_MACHOKE + {0x76, 0x09}, // SPECIES_MACHAMP + {0x67, 0x04}, // SPECIES_BELLSPROUT + {0x66, 0x0a}, // SPECIES_WEEPINBELL + {0x66, 0x09}, // SPECIES_VICTREEBEL + {0x87, 0x06}, // SPECIES_TENTACOOL + {0x56, 0x0a}, // SPECIES_TENTACRUEL + {0x86, 0x0b}, // SPECIES_GEODUDE + {0x66, 0x0b}, // SPECIES_GRAVELER + {0x75, 0x0c}, // SPECIES_GOLEM + {0x84, 0x10}, // SPECIES_PONYTA + {0x66, 0x09}, // SPECIES_RAPIDASH + {0x87, 0x05}, // SPECIES_SLOWPOKE + {0x85, 0x0e}, // SPECIES_SLOWBRO + {0x86, 0x0a}, // SPECIES_MAGNEMITE + {0x43, 0x14}, // SPECIES_MAGNETON + {0x66, 0x0a}, // SPECIES_FARFETCHD + {0x66, 0x0a}, // SPECIES_DODUO + {0x66, 0x08}, // SPECIES_DODRIO + {0x88, 0x01}, // SPECIES_SEEL + {0x66, 0x0a}, // SPECIES_DEWGONG + {0x77, 0x05}, // SPECIES_GRIMER + {0x75, 0x0c}, // SPECIES_MUK + {0x87, 0x05}, // SPECIES_SHELLDER + {0x76, 0x0b}, // SPECIES_CLOYSTER + {0x87, 0x06}, // SPECIES_GASTLY + {0x85, 0x0e}, // SPECIES_HAUNTER + {0x76, 0x08}, // SPECIES_GENGAR + {0x76, 0x09}, // SPECIES_ONIX + {0x78, 0x00}, // SPECIES_DROWZEE + {0x65, 0x0d}, // SPECIES_HYPNO + {0x66, 0x09}, // SPECIES_KRABBY + {0x66, 0x0a}, // SPECIES_KINGLER + {0x77, 0x04}, // SPECIES_VOLTORB + {0x55, 0x0e}, // SPECIES_ELECTRODE + {0x65, 0x0d}, // SPECIES_EXEGGCUTE + {0x65, 0x0d}, // SPECIES_EXEGGUTOR + {0x87, 0x04}, // SPECIES_CUBONE + {0x66, 0x0a}, // SPECIES_MAROWAK + {0x66, 0x08}, // SPECIES_HITMONLEE + {0x65, 0x0c}, // SPECIES_HITMONCHAN + {0x65, 0x0c}, // SPECIES_LICKITUNG + {0x65, 0x0e}, // SPECIES_KOFFING + {0x66, 0x09}, // SPECIES_WEEZING + {0x77, 0x06}, // SPECIES_RHYHORN + {0x85, 0x0c}, // SPECIES_RHYDON + {0x88, 0x03}, // SPECIES_CHANSEY + {0x86, 0x0b}, // SPECIES_TANGELA + {0x85, 0x0e}, // SPECIES_KANGASKHAN + {0x77, 0x05}, // SPECIES_HORSEA + {0x66, 0x09}, // SPECIES_SEADRA + {0x66, 0x08}, // SPECIES_GOLDEEN + {0x66, 0x08}, // SPECIES_SEAKING + {0x76, 0x0b}, // SPECIES_STARYU + {0x65, 0x0d}, // SPECIES_STARMIE + {0x85, 0x0e}, // SPECIES_MR_MIME + {0x85, 0x0d}, // SPECIES_SCYTHER + {0x77, 0x07}, // SPECIES_JYNX + {0x86, 0x0a}, // SPECIES_ELECTABUZZ + {0x66, 0x08}, // SPECIES_MAGMAR + {0x66, 0x08}, // SPECIES_PINSIR + {0x66, 0x09}, // SPECIES_TAUROS + {0x85, 0x0d}, // SPECIES_MAGIKARP + {0x76, 0x09}, // SPECIES_GYARADOS + {0x78, 0x00}, // SPECIES_LAPRAS + {0x77, 0x04}, // SPECIES_DITTO + {0x54, 0x11}, // SPECIES_EEVEE + {0x66, 0x0a}, // SPECIES_VAPOREON + {0x66, 0x0a}, // SPECIES_JOLTEON + {0x87, 0x06}, // SPECIES_FLAREON + {0x67, 0x05}, // SPECIES_PORYGON + {0x65, 0x0d}, // SPECIES_OMANYTE + {0x66, 0x0a}, // SPECIES_OMASTAR + {0x66, 0x08}, // SPECIES_KABUTO + {0x65, 0x0d}, // SPECIES_KABUTOPS + {0x77, 0x05}, // SPECIES_AERODACTYL + {0x86, 0x08}, // SPECIES_SNORLAX + {0x86, 0x0b}, // SPECIES_ARTICUNO + {0x65, 0x0c}, // SPECIES_ZAPDOS + {0x76, 0x0b}, // SPECIES_MOLTRES + {0x87, 0x04}, // SPECIES_DRATINI + {0x66, 0x09}, // SPECIES_DRAGONAIR + {0x78, 0x00}, // SPECIES_DRAGONITE + {0x87, 0x06}, // SPECIES_MEWTWO + {0x78, 0x01}, // SPECIES_MEW + {0x66, 0x08}, // SPECIES_CHIKORITA + {0x56, 0x0a}, // SPECIES_BAYLEEF + {0x66, 0x08}, // SPECIES_MEGANIUM + {0x78, 0x00}, // SPECIES_CYNDAQUIL + {0x76, 0x09}, // SPECIES_QUILAVA + {0x87, 0x04}, // SPECIES_TYPHLOSION + {0x87, 0x04}, // SPECIES_TOTODILE + {0x66, 0x0b}, // SPECIES_CROCONAW + {0x67, 0x07}, // SPECIES_FERALIGATR + {0x88, 0x01}, // SPECIES_SENTRET + {0x67, 0x05}, // SPECIES_FURRET + {0x66, 0x08}, // SPECIES_HOOTHOOT + {0x66, 0x08}, // SPECIES_NOCTOWL + {0x68, 0x03}, // SPECIES_LEDYBA + {0x76, 0x0b}, // SPECIES_LEDIAN + {0x77, 0x07}, // SPECIES_SPINARAK + {0x73, 0x15}, // SPECIES_ARIADOS + {0x86, 0x0b}, // SPECIES_CROBAT + {0x87, 0x05}, // SPECIES_CHINCHOU + {0x86, 0x08}, // SPECIES_LANTURN + {0x86, 0x08}, // SPECIES_PICHU + {0x66, 0x0b}, // SPECIES_CLEFFA + {0x65, 0x0f}, // SPECIES_IGGLYBUFF + {0x66, 0x0b}, // SPECIES_TOGEPI + {0x54, 0x10}, // SPECIES_TOGETIC + {0x66, 0x08}, // SPECIES_NATU + {0x54, 0x11}, // SPECIES_XATU + {0x76, 0x08}, // SPECIES_MAREEP + {0x66, 0x09}, // SPECIES_FLAAFFY + {0x66, 0x09}, // SPECIES_AMPHAROS + {0x88, 0x01}, // SPECIES_BELLOSSOM + {0x66, 0x0b}, // SPECIES_MARILL + {0x75, 0x0c}, // SPECIES_AZUMARILL + {0x86, 0x08}, // SPECIES_SUDOWOODO + {0x66, 0x08}, // SPECIES_POLITOED + {0x66, 0x09}, // SPECIES_HOPPIP + {0x66, 0x0b}, // SPECIES_SKIPLOOM + {0x65, 0x0d}, // SPECIES_JUMPLUFF + {0x87, 0x04}, // SPECIES_AIPOM + {0x66, 0x09}, // SPECIES_SUNKERN + {0x56, 0x0a}, // SPECIES_SUNFLORA + {0x66, 0x08}, // SPECIES_YANMA + {0x77, 0x04}, // SPECIES_WOOPER + {0x85, 0x0f}, // SPECIES_QUAGSIRE + {0x76, 0x08}, // SPECIES_ESPEON + {0x76, 0x0b}, // SPECIES_UMBREON + {0x87, 0x04}, // SPECIES_MURKROW + {0x66, 0x09}, // SPECIES_SLOWKING + {0x66, 0x08}, // SPECIES_MISDREAVUS + {0x66, 0x0a}, // SPECIES_UNOWN + {0x36, 0x08}, // SPECIES_WOBBUFFET + {0x75, 0x0c}, // SPECIES_GIRAFARIG + {0x87, 0x05}, // SPECIES_PINECO + {0x65, 0x0f}, // SPECIES_FORRETRESS + {0x84, 0x10}, // SPECIES_DUNSPARCE + {0x85, 0x0f}, // SPECIES_GLIGAR + {0x87, 0x05}, // SPECIES_STEELIX + {0x88, 0x00}, // SPECIES_SNUBBULL + {0x76, 0x0a}, // SPECIES_GRANBULL + {0x87, 0x05}, // SPECIES_QWILFISH + {0x77, 0x07}, // SPECIES_SCIZOR + {0x77, 0x04}, // SPECIES_SHUCKLE + {0x56, 0x0b}, // SPECIES_HERACROSS + {0x77, 0x04}, // SPECIES_SNEASEL + {0x66, 0x08}, // SPECIES_TEDDIURSA + {0x66, 0x08}, // SPECIES_URSARING + {0x88, 0x03}, // SPECIES_SLUGMA + {0x66, 0x08}, // SPECIES_MAGCARGO + {0x76, 0x09}, // SPECIES_SWINUB + {0x63, 0x15}, // SPECIES_PILOSWINE + {0x75, 0x0d}, // SPECIES_CORSOLA + {0x65, 0x0c}, // SPECIES_REMORAID + {0x75, 0x0d}, // SPECIES_OCTILLERY + {0x66, 0x0a}, // SPECIES_DELIBIRD + {0x67, 0x06}, // SPECIES_MANTINE + {0x87, 0x07}, // SPECIES_SKARMORY + {0x87, 0x04}, // SPECIES_HOUNDOUR + {0x55, 0x0c}, // SPECIES_HOUNDOOM + {0x87, 0x07}, // SPECIES_KINGDRA + {0x87, 0x06}, // SPECIES_PHANPY + {0x65, 0x0e}, // SPECIES_DONPHAN + {0x85, 0x0d}, // SPECIES_PORYGON2 + {0x76, 0x0a}, // SPECIES_STANTLER + {0x78, 0x03}, // SPECIES_SMEARGLE + {0x76, 0x0a}, // SPECIES_TYROGUE + {0x66, 0x08}, // SPECIES_HITMONTOP + {0x87, 0x05}, // SPECIES_SMOOCHUM + {0x56, 0x09}, // SPECIES_ELEKID + {0x66, 0x08}, // SPECIES_MAGBY + {0x66, 0x0b}, // SPECIES_MILTANK + {0x87, 0x07}, // SPECIES_BLISSEY + {0x85, 0x0d}, // SPECIES_RAIKOU + {0x86, 0x0a}, // SPECIES_ENTEI + {0x87, 0x06}, // SPECIES_SUICUNE + {0x88, 0x03}, // SPECIES_LARVITAR + {0x66, 0x08}, // SPECIES_PUPITAR + {0x67, 0x05}, // SPECIES_TYRANITAR + {0x88, 0x00}, // SPECIES_LUGIA + {0x88, 0x01}, // SPECIES_HO_OH + {0x88, 0x01}, // SPECIES_CELEBI + {0x66, 0x08}, // SPECIES_OLD_UNOWN_B + {0x88, 0x02}, // SPECIES_OLD_UNOWN_C + {0x88, 0x02}, // SPECIES_OLD_UNOWN_D + {0x88, 0x02}, // SPECIES_OLD_UNOWN_E + {0x88, 0x02}, // SPECIES_OLD_UNOWN_F + {0x88, 0x02}, // SPECIES_OLD_UNOWN_G + {0x88, 0x02}, // SPECIES_OLD_UNOWN_H + {0x88, 0x02}, // SPECIES_OLD_UNOWN_I + {0x88, 0x02}, // SPECIES_OLD_UNOWN_J + {0x88, 0x02}, // SPECIES_OLD_UNOWN_K + {0x88, 0x02}, // SPECIES_OLD_UNOWN_L + {0x88, 0x02}, // SPECIES_OLD_UNOWN_M + {0x88, 0x02}, // SPECIES_OLD_UNOWN_N + {0x88, 0x02}, // SPECIES_OLD_UNOWN_O + {0x88, 0x02}, // SPECIES_OLD_UNOWN_P + {0x88, 0x02}, // SPECIES_OLD_UNOWN_Q + {0x88, 0x02}, // SPECIES_OLD_UNOWN_R + {0x88, 0x02}, // SPECIES_OLD_UNOWN_S + {0x88, 0x02}, // SPECIES_OLD_UNOWN_T + {0x88, 0x02}, // SPECIES_OLD_UNOWN_U + {0x88, 0x02}, // SPECIES_OLD_UNOWN_V + {0x88, 0x02}, // SPECIES_OLD_UNOWN_W + {0x88, 0x02}, // SPECIES_OLD_UNOWN_X + {0x88, 0x02}, // SPECIES_OLD_UNOWN_Y + {0x88, 0x02}, // SPECIES_OLD_UNOWN_Z + {0x88, 0x02}, // SPECIES_TREECKO + {0x87, 0x06}, // SPECIES_GROVYLE + {0x86, 0x08}, // SPECIES_SCEPTILE + {0x88, 0x01}, // SPECIES_TORCHIC + {0x67, 0x05}, // SPECIES_COMBUSKEN + {0x88, 0x00}, // SPECIES_BLAZIKEN + {0x88, 0x00}, // SPECIES_MUDKIP + {0x77, 0x05}, // SPECIES_MARSHTOMP + {0x87, 0x04}, // SPECIES_SWAMPERT + {0x87, 0x05}, // SPECIES_POOCHYENA + {0x76, 0x09}, // SPECIES_MIGHTYENA + {0x87, 0x04}, // SPECIES_ZIGZAGOON + {0x76, 0x0b}, // SPECIES_LINOONE + {0x85, 0x0f}, // SPECIES_WURMPLE + {0x76, 0x0b}, // SPECIES_SILCOON + {0x83, 0x15}, // SPECIES_BEAUTIFLY + {0x88, 0x00}, // SPECIES_CASCOON + {0x73, 0x14}, // SPECIES_DUSTOX + {0x83, 0x14}, // SPECIES_LOTAD + {0x75, 0x0f}, // SPECIES_LOMBRE + {0x86, 0x08}, // SPECIES_LUDICOLO + {0x86, 0x0a}, // SPECIES_SEEDOT + {0x86, 0x09}, // SPECIES_NUZLEAF + {0x76, 0x0a}, // SPECIES_SHIFTRY + {0x86, 0x08}, // SPECIES_NINCADA + {0x83, 0x14}, // SPECIES_NINJASK + {0x86, 0x08}, // SPECIES_SHEDINJA + {0x77, 0x06}, // SPECIES_TAILLOW + {0x64, 0x11}, // SPECIES_SWELLOW + {0x86, 0x08}, // SPECIES_SHROOMISH + {0x85, 0x0d}, // SPECIES_BRELOOM + {0x87, 0x04}, // SPECIES_SPINDA + {0x77, 0x04}, // SPECIES_WINGULL + {0x85, 0x0e}, // SPECIES_PELIPPER + {0x87, 0x06}, // SPECIES_SURSKIT + {0x86, 0x0b}, // SPECIES_MASQUERAIN + {0x88, 0x00}, // SPECIES_WAILMER + {0x83, 0x15}, // SPECIES_WAILORD + {0x83, 0x16}, // SPECIES_SKITTY + {0x86, 0x0a}, // SPECIES_DELCATTY + {0x86, 0x08}, // SPECIES_KECLEON + {0x87, 0x06}, // SPECIES_BALTOY + {0x86, 0x08}, // SPECIES_CLAYDOL + {0x87, 0x07}, // SPECIES_NOSEPASS + {0x85, 0x0c}, // SPECIES_TORKOAL + {0x86, 0x0a}, // SPECIES_SABLEYE + {0x76, 0x08}, // SPECIES_BARBOACH + {0x66, 0x0a}, // SPECIES_WHISCASH + {0x86, 0x0a}, // SPECIES_LUVDISC + {0x46, 0x0a}, // SPECIES_CORPHISH + {0x77, 0x07}, // SPECIES_CRAWDAUNT + {0x87, 0x05}, // SPECIES_FEEBAS + {0x67, 0x07}, // SPECIES_MILOTIC + {0x68, 0x02}, // SPECIES_CARVANHA + {0x87, 0x07}, // SPECIES_SHARPEDO + {0x88, 0x02}, // SPECIES_TRAPINCH + {0x75, 0x0e}, // SPECIES_VIBRAVA + {0x74, 0x11}, // SPECIES_FLYGON + {0x88, 0x02}, // SPECIES_MAKUHITA + {0x76, 0x0b}, // SPECIES_HARIYAMA + {0x87, 0x07}, // SPECIES_ELECTRIKE + {0x84, 0x10}, // SPECIES_MANECTRIC + {0x87, 0x04}, // SPECIES_NUMEL + {0x86, 0x0b}, // SPECIES_CAMERUPT + {0x84, 0x13}, // SPECIES_SPHEAL + {0x64, 0x12}, // SPECIES_SEALEO + {0x86, 0x0a}, // SPECIES_WALREIN + {0x87, 0x06}, // SPECIES_CACNEA + {0x85, 0x0f}, // SPECIES_CACTURNE + {0x87, 0x07}, // SPECIES_SNORUNT + {0x76, 0x0a}, // SPECIES_GLALIE + {0x85, 0x0c}, // SPECIES_LUNATONE + {0x87, 0x05}, // SPECIES_SOLROCK + {0x87, 0x05}, // SPECIES_AZURILL + {0x86, 0x0a}, // SPECIES_SPOINK + {0x56, 0x0b}, // SPECIES_GRUMPIG + {0x87, 0x04}, // SPECIES_PLUSLE + {0x76, 0x08}, // SPECIES_MINUN + {0x76, 0x08}, // SPECIES_MAWILE + {0x87, 0x04}, // SPECIES_MEDITITE + {0x76, 0x0b}, // SPECIES_MEDICHAM + {0x68, 0x03}, // SPECIES_SWABLU + {0x86, 0x09}, // SPECIES_ALTARIA + {0x87, 0x06}, // SPECIES_WYNAUT + {0x77, 0x07}, // SPECIES_DUSKULL + {0x66, 0x0b}, // SPECIES_DUSCLOPS + {0x86, 0x08}, // SPECIES_ROSELIA + {0x86, 0x08}, // SPECIES_SLAKOTH + {0x85, 0x0f}, // SPECIES_VIGOROTH + {0x86, 0x0a}, // SPECIES_SLAKING + {0x86, 0x08}, // SPECIES_GULPIN + {0x66, 0x0b}, // SPECIES_SWALOT + {0x77, 0x06}, // SPECIES_TROPIUS + {0x87, 0x07}, // SPECIES_WHISMUR + {0x85, 0x0d}, // SPECIES_LOUDRED + {0x86, 0x09}, // SPECIES_EXPLOUD + {0x88, 0x03}, // SPECIES_CLAMPERL + {0x85, 0x0d}, // SPECIES_HUNTAIL + {0x68, 0x02}, // SPECIES_GOREBYSS + {0x77, 0x05}, // SPECIES_ABSOL + {0x78, 0x03}, // SPECIES_SHUPPET + {0x77, 0x06}, // SPECIES_BANETTE + {0x65, 0x0c}, // SPECIES_SEVIPER + {0x88, 0x03}, // SPECIES_ZANGOOSE + {0x88, 0x01}, // SPECIES_RELICANTH + {0x86, 0x0a}, // SPECIES_ARON + {0x54, 0x11}, // SPECIES_LAIRON + {0x84, 0x11}, // SPECIES_AGGRON + {0x87, 0x07}, // SPECIES_CASTFORM + {0x45, 0x0d}, // SPECIES_VOLBEAT + {0x76, 0x08}, // SPECIES_ILLUMISE + {0x67, 0x06}, // SPECIES_LILEEP + {0x86, 0x09}, // SPECIES_CRADILY + {0x77, 0x04}, // SPECIES_ANORITH + {0x83, 0x17}, // SPECIES_ARMALDO + {0x77, 0x05}, // SPECIES_RALTS + {0x45, 0x0d}, // SPECIES_KIRLIA + {0x57, 0x06}, // SPECIES_GARDEVOIR + {0x77, 0x04}, // SPECIES_BAGON + {0x66, 0x08}, // SPECIES_SHELGON + {0x85, 0x0d}, // SPECIES_SALAMENCE + {0x77, 0x06}, // SPECIES_BELDUM + {0x66, 0x0a}, // SPECIES_METANG + {0x84, 0x10}, // SPECIES_METAGROSS + {0x83, 0x14}, // SPECIES_REGIROCK + {0x86, 0x0a}, // SPECIES_REGICE + {0x85, 0x0e}, // SPECIES_REGISTEEL + {0x85, 0x0e}, // SPECIES_KYOGRE + {0x84, 0x13}, // SPECIES_GROUDON + {0x87, 0x07}, // SPECIES_RAYQUAZA + {0x78, 0x00}, // SPECIES_LATIAS + {0x88, 0x02}, // SPECIES_LATIOS + {0x88, 0x03}, // SPECIES_JIRACHI + {0x87, 0x05}, // SPECIES_DEOXYS + {0x86, 0x09}, // SPECIES_CHIMECHO + {0x47, 0x07}, // SPECIES_EGG + {0x36, 0x0a}, // SPECIES_UNOWN_B + {0x56, 0x09}, // SPECIES_UNOWN_C + {0x67, 0x06}, // SPECIES_UNOWN_D + {0x56, 0x08}, // SPECIES_UNOWN_E + {0x56, 0x0a}, // SPECIES_UNOWN_F + {0x66, 0x0a}, // SPECIES_UNOWN_G + {0x57, 0x05}, // SPECIES_UNOWN_H + {0x66, 0x08}, // SPECIES_UNOWN_I + {0x37, 0x07}, // SPECIES_UNOWN_J + {0x46, 0x09}, // SPECIES_UNOWN_K + {0x57, 0x07}, // SPECIES_UNOWN_L + {0x46, 0x0a}, // SPECIES_UNOWN_M + {0x65, 0x0d}, // SPECIES_UNOWN_N + {0x65, 0x0d}, // SPECIES_UNOWN_O + {0x66, 0x08}, // SPECIES_UNOWN_P + {0x46, 0x0a}, // SPECIES_UNOWN_Q + {0x55, 0x0f}, // SPECIES_UNOWN_R + {0x45, 0x0c}, // SPECIES_UNOWN_S + {0x57, 0x04}, // SPECIES_UNOWN_T + {0x45, 0x0d}, // SPECIES_UNOWN_U + {0x65, 0x0d}, // SPECIES_UNOWN_V + {0x56, 0x0b}, // SPECIES_UNOWN_W + {0x55, 0x0d}, // SPECIES_UNOWN_X + {0x55, 0x0f}, // SPECIES_UNOWN_Y + {0x46, 0x0a}, // SPECIES_UNOWN_Z + {0x46, 0x0a}, // SPECIES_UNOWN_EMARK + {0x37, 0x06}, // SPECIES_UNOWN_QMARK + {0x47, 0x06}, +}; diff --git a/src/data/pokemon_graphics/back_pic_table.h b/src/data/pokemon_graphics/back_pic_table.h new file mode 100644 index 000000000..7426a8dc4 --- /dev/null +++ b/src/data/pokemon_graphics/back_pic_table.h @@ -0,0 +1,443 @@ +const struct CompressedSpriteSheet gMonBackPicTable[] = +{ + gMonBackPic_CircledQuestionMark, 0x800, 0, + gMonBackPic_Bulbasaur, 0x800, 1, + gMonBackPic_Ivysaur, 0x800, 2, + gMonBackPic_Venusaur, 0x800, 3, + gMonBackPic_Charmander, 0x800, 4, + gMonBackPic_Charmeleon, 0x800, 5, + gMonBackPic_Charizard, 0x800, 6, + gMonBackPic_Squirtle, 0x800, 7, + gMonBackPic_Wartortle, 0x800, 8, + gMonBackPic_Blastoise, 0x800, 9, + gMonBackPic_Caterpie, 0x800, 10, + gMonBackPic_Metapod, 0x800, 11, + gMonBackPic_Butterfree, 0x800, 12, + gMonBackPic_Weedle, 0x800, 13, + gMonBackPic_Kakuna, 0x800, 14, + gMonBackPic_Beedrill, 0x800, 15, + gMonBackPic_Pidgey, 0x800, 16, + gMonBackPic_Pidgeotto, 0x800, 17, + gMonBackPic_Pidgeot, 0x800, 18, + gMonBackPic_Rattata, 0x800, 19, + gMonBackPic_Raticate, 0x800, 20, + gMonBackPic_Spearow, 0x800, 21, + gMonBackPic_Fearow, 0x800, 22, + gMonBackPic_Ekans, 0x800, 23, + gMonBackPic_Arbok, 0x800, 24, + gMonBackPic_Pikachu, 0x800, 25, + gMonBackPic_Raichu, 0x800, 26, + gMonBackPic_Sandshrew, 0x800, 27, + gMonBackPic_Sandslash, 0x800, 28, + gMonBackPic_NidoranF, 0x800, 29, + gMonBackPic_Nidorina, 0x800, 30, + gMonBackPic_Nidoqueen, 0x800, 31, + gMonBackPic_NidoranM, 0x800, 32, + gMonBackPic_Nidorino, 0x800, 33, + gMonBackPic_Nidoking, 0x800, 34, + gMonBackPic_Clefairy, 0x800, 35, + gMonBackPic_Clefable, 0x800, 36, + gMonBackPic_Vulpix, 0x800, 37, + gMonBackPic_Ninetales, 0x800, 38, + gMonBackPic_Jigglypuff, 0x800, 39, + gMonBackPic_Wigglytuff, 0x800, 40, + gMonBackPic_Zubat, 0x800, 41, + gMonBackPic_Golbat, 0x800, 42, + gMonBackPic_Oddish, 0x800, 43, + gMonBackPic_Gloom, 0x800, 44, + gMonBackPic_Vileplume, 0x800, 45, + gMonBackPic_Paras, 0x800, 46, + gMonBackPic_Parasect, 0x800, 47, + gMonBackPic_Venonat, 0x800, 48, + gMonBackPic_Venomoth, 0x800, 49, + gMonBackPic_Diglett, 0x800, 50, + gMonBackPic_Dugtrio, 0x800, 51, + gMonBackPic_Meowth, 0x800, 52, + gMonBackPic_Persian, 0x800, 53, + gMonBackPic_Psyduck, 0x800, 54, + gMonBackPic_Golduck, 0x800, 55, + gMonBackPic_Mankey, 0x800, 56, + gMonBackPic_Primeape, 0x800, 57, + gMonBackPic_Growlithe, 0x800, 58, + gMonBackPic_Arcanine, 0x800, 59, + gMonBackPic_Poliwag, 0x800, 60, + gMonBackPic_Poliwhirl, 0x800, 61, + gMonBackPic_Poliwrath, 0x800, 62, + gMonBackPic_Abra, 0x800, 63, + gMonBackPic_Kadabra, 0x800, 64, + gMonBackPic_Alakazam, 0x800, 65, + gMonBackPic_Machop, 0x800, 66, + gMonBackPic_Machoke, 0x800, 67, + gMonBackPic_Machamp, 0x800, 68, + gMonBackPic_Bellsprout, 0x800, 69, + gMonBackPic_Weepinbell, 0x800, 70, + gMonBackPic_Victreebel, 0x800, 71, + gMonBackPic_Tentacool, 0x800, 72, + gMonBackPic_Tentacruel, 0x800, 73, + gMonBackPic_Geodude, 0x800, 74, + gMonBackPic_Graveler, 0x800, 75, + gMonBackPic_Golem, 0x800, 76, + gMonBackPic_Ponyta, 0x800, 77, + gMonBackPic_Rapidash, 0x800, 78, + gMonBackPic_Slowpoke, 0x800, 79, + gMonBackPic_Slowbro, 0x800, 80, + gMonBackPic_Magnemite, 0x800, 81, + gMonBackPic_Magneton, 0x800, 82, + gMonBackPic_Farfetchd, 0x800, 83, + gMonBackPic_Doduo, 0x800, 84, + gMonBackPic_Dodrio, 0x800, 85, + gMonBackPic_Seel, 0x800, 86, + gMonBackPic_Dewgong, 0x800, 87, + gMonBackPic_Grimer, 0x800, 88, + gMonBackPic_Muk, 0x800, 89, + gMonBackPic_Shellder, 0x800, 90, + gMonBackPic_Cloyster, 0x800, 91, + gMonBackPic_Gastly, 0x800, 92, + gMonBackPic_Haunter, 0x800, 93, + gMonBackPic_Gengar, 0x800, 94, + gMonBackPic_Onix, 0x800, 95, + gMonBackPic_Drowzee, 0x800, 96, + gMonBackPic_Hypno, 0x800, 97, + gMonBackPic_Krabby, 0x800, 98, + gMonBackPic_Kingler, 0x800, 99, + gMonBackPic_Voltorb, 0x800, 100, + gMonBackPic_Electrode, 0x800, 101, + gMonBackPic_Exeggcute, 0x800, 102, + gMonBackPic_Exeggutor, 0x800, 103, + gMonBackPic_Cubone, 0x800, 104, + gMonBackPic_Marowak, 0x800, 105, + gMonBackPic_Hitmonlee, 0x800, 106, + gMonBackPic_Hitmonchan, 0x800, 107, + gMonBackPic_Lickitung, 0x800, 108, + gMonBackPic_Koffing, 0x800, 109, + gMonBackPic_Weezing, 0x800, 110, + gMonBackPic_Rhyhorn, 0x800, 111, + gMonBackPic_Rhydon, 0x800, 112, + gMonBackPic_Chansey, 0x800, 113, + gMonBackPic_Tangela, 0x800, 114, + gMonBackPic_Kangaskhan, 0x800, 115, + gMonBackPic_Horsea, 0x800, 116, + gMonBackPic_Seadra, 0x800, 117, + gMonBackPic_Goldeen, 0x800, 118, + gMonBackPic_Seaking, 0x800, 119, + gMonBackPic_Staryu, 0x800, 120, + gMonBackPic_Starmie, 0x800, 121, + gMonBackPic_Mrmime, 0x800, 122, + gMonBackPic_Scyther, 0x800, 123, + gMonBackPic_Jynx, 0x800, 124, + gMonBackPic_Electabuzz, 0x800, 125, + gMonBackPic_Magmar, 0x800, 126, + gMonBackPic_Pinsir, 0x800, 127, + gMonBackPic_Tauros, 0x800, 128, + gMonBackPic_Magikarp, 0x800, 129, + gMonBackPic_Gyarados, 0x800, 130, + gMonBackPic_Lapras, 0x800, 131, + gMonBackPic_Ditto, 0x800, 132, + gMonBackPic_Eevee, 0x800, 133, + gMonBackPic_Vaporeon, 0x800, 134, + gMonBackPic_Jolteon, 0x800, 135, + gMonBackPic_Flareon, 0x800, 136, + gMonBackPic_Porygon, 0x800, 137, + gMonBackPic_Omanyte, 0x800, 138, + gMonBackPic_Omastar, 0x800, 139, + gMonBackPic_Kabuto, 0x800, 140, + gMonBackPic_Kabutops, 0x800, 141, + gMonBackPic_Aerodactyl, 0x800, 142, + gMonBackPic_Snorlax, 0x800, 143, + gMonBackPic_Articuno, 0x800, 144, + gMonBackPic_Zapdos, 0x800, 145, + gMonBackPic_Moltres, 0x800, 146, + gMonBackPic_Dratini, 0x800, 147, + gMonBackPic_Dragonair, 0x800, 148, + gMonBackPic_Dragonite, 0x800, 149, + gMonBackPic_Mewtwo, 0x800, 150, + gMonBackPic_Mew, 0x800, 151, + gMonBackPic_Chikorita, 0x800, 152, + gMonBackPic_Bayleef, 0x800, 153, + gMonBackPic_Meganium, 0x800, 154, + gMonBackPic_Cyndaquil, 0x800, 155, + gMonBackPic_Quilava, 0x800, 156, + gMonBackPic_Typhlosion, 0x800, 157, + gMonBackPic_Totodile, 0x800, 158, + gMonBackPic_Croconaw, 0x800, 159, + gMonBackPic_Feraligatr, 0x800, 160, + gMonBackPic_Sentret, 0x800, 161, + gMonBackPic_Furret, 0x800, 162, + gMonBackPic_Hoothoot, 0x800, 163, + gMonBackPic_Noctowl, 0x800, 164, + gMonBackPic_Ledyba, 0x800, 165, + gMonBackPic_Ledian, 0x800, 166, + gMonBackPic_Spinarak, 0x800, 167, + gMonBackPic_Ariados, 0x800, 168, + gMonBackPic_Crobat, 0x800, 169, + gMonBackPic_Chinchou, 0x800, 170, + gMonBackPic_Lanturn, 0x800, 171, + gMonBackPic_Pichu, 0x800, 172, + gMonBackPic_Cleffa, 0x800, 173, + gMonBackPic_Igglybuff, 0x800, 174, + gMonBackPic_Togepi, 0x800, 175, + gMonBackPic_Togetic, 0x800, 176, + gMonBackPic_Natu, 0x800, 177, + gMonBackPic_Xatu, 0x800, 178, + gMonBackPic_Mareep, 0x800, 179, + gMonBackPic_Flaaffy, 0x800, 180, + gMonBackPic_Ampharos, 0x800, 181, + gMonBackPic_Bellossom, 0x800, 182, + gMonBackPic_Marill, 0x800, 183, + gMonBackPic_Azumarill, 0x800, 184, + gMonBackPic_Sudowoodo, 0x800, 185, + gMonBackPic_Politoed, 0x800, 186, + gMonBackPic_Hoppip, 0x800, 187, + gMonBackPic_Skiploom, 0x800, 188, + gMonBackPic_Jumpluff, 0x800, 189, + gMonBackPic_Aipom, 0x800, 190, + gMonBackPic_Sunkern, 0x800, 191, + gMonBackPic_Sunflora, 0x800, 192, + gMonBackPic_Yanma, 0x800, 193, + gMonBackPic_Wooper, 0x800, 194, + gMonBackPic_Quagsire, 0x800, 195, + gMonBackPic_Espeon, 0x800, 196, + gMonBackPic_Umbreon, 0x800, 197, + gMonBackPic_Murkrow, 0x800, 198, + gMonBackPic_Slowking, 0x800, 199, + gMonBackPic_Misdreavus, 0x800, 200, + gMonBackPic_UnownA, 0x800, 201, + gMonBackPic_Wobbuffet, 0x800, 202, + gMonBackPic_Girafarig, 0x800, 203, + gMonBackPic_Pineco, 0x800, 204, + gMonBackPic_Forretress, 0x800, 205, + gMonBackPic_Dunsparce, 0x800, 206, + gMonBackPic_Gligar, 0x800, 207, + gMonBackPic_Steelix, 0x800, 208, + gMonBackPic_Snubbull, 0x800, 209, + gMonBackPic_Granbull, 0x800, 210, + gMonBackPic_Qwilfish, 0x800, 211, + gMonBackPic_Scizor, 0x800, 212, + gMonBackPic_Shuckle, 0x800, 213, + gMonBackPic_Heracross, 0x800, 214, + gMonBackPic_Sneasel, 0x800, 215, + gMonBackPic_Teddiursa, 0x800, 216, + gMonBackPic_Ursaring, 0x800, 217, + gMonBackPic_Slugma, 0x800, 218, + gMonBackPic_Magcargo, 0x800, 219, + gMonBackPic_Swinub, 0x800, 220, + gMonBackPic_Piloswine, 0x800, 221, + gMonBackPic_Corsola, 0x800, 222, + gMonBackPic_Remoraid, 0x800, 223, + gMonBackPic_Octillery, 0x800, 224, + gMonBackPic_Delibird, 0x800, 225, + gMonBackPic_Mantine, 0x800, 226, + gMonBackPic_Skarmory, 0x800, 227, + gMonBackPic_Houndour, 0x800, 228, + gMonBackPic_Houndoom, 0x800, 229, + gMonBackPic_Kingdra, 0x800, 230, + gMonBackPic_Phanpy, 0x800, 231, + gMonBackPic_Donphan, 0x800, 232, + gMonBackPic_Porygon2, 0x800, 233, + gMonBackPic_Stantler, 0x800, 234, + gMonBackPic_Smeargle, 0x800, 235, + gMonBackPic_Tyrogue, 0x800, 236, + gMonBackPic_Hitmontop, 0x800, 237, + gMonBackPic_Smoochum, 0x800, 238, + gMonBackPic_Elekid, 0x800, 239, + gMonBackPic_Magby, 0x800, 240, + gMonBackPic_Miltank, 0x800, 241, + gMonBackPic_Blissey, 0x800, 242, + gMonBackPic_Raikou, 0x800, 243, + gMonBackPic_Entei, 0x800, 244, + gMonBackPic_Suicune, 0x800, 245, + gMonBackPic_Larvitar, 0x800, 246, + gMonBackPic_Pupitar, 0x800, 247, + gMonBackPic_Tyranitar, 0x800, 248, + gMonBackPic_Lugia, 0x800, 249, + gMonBackPic_HoOh, 0x800, 250, + gMonBackPic_Celebi, 0x800, 251, + gMonBackPic_DoubleQuestionMark, 0x800, 252, + gMonBackPic_DoubleQuestionMark, 0x800, 253, + gMonBackPic_DoubleQuestionMark, 0x800, 254, + gMonBackPic_DoubleQuestionMark, 0x800, 255, + gMonBackPic_DoubleQuestionMark, 0x800, 256, + gMonBackPic_DoubleQuestionMark, 0x800, 257, + gMonBackPic_DoubleQuestionMark, 0x800, 258, + gMonBackPic_DoubleQuestionMark, 0x800, 259, + gMonBackPic_DoubleQuestionMark, 0x800, 260, + gMonBackPic_DoubleQuestionMark, 0x800, 261, + gMonBackPic_DoubleQuestionMark, 0x800, 262, + gMonBackPic_DoubleQuestionMark, 0x800, 263, + gMonBackPic_DoubleQuestionMark, 0x800, 264, + gMonBackPic_DoubleQuestionMark, 0x800, 265, + gMonBackPic_DoubleQuestionMark, 0x800, 266, + gMonBackPic_DoubleQuestionMark, 0x800, 267, + gMonBackPic_DoubleQuestionMark, 0x800, 268, + gMonBackPic_DoubleQuestionMark, 0x800, 269, + gMonBackPic_DoubleQuestionMark, 0x800, 270, + gMonBackPic_DoubleQuestionMark, 0x800, 271, + gMonBackPic_DoubleQuestionMark, 0x800, 272, + gMonBackPic_DoubleQuestionMark, 0x800, 273, + gMonBackPic_DoubleQuestionMark, 0x800, 274, + gMonBackPic_DoubleQuestionMark, 0x800, 275, + gMonBackPic_DoubleQuestionMark, 0x800, 276, + gMonBackPic_Treecko, 0x800, 277, + gMonBackPic_Grovyle, 0x800, 278, + gMonBackPic_Sceptile, 0x800, 279, + gMonBackPic_Torchic, 0x800, 280, + gMonBackPic_Combusken, 0x800, 281, + gMonBackPic_Blaziken, 0x800, 282, + gMonBackPic_Mudkip, 0x800, 283, + gMonBackPic_Marshtomp, 0x800, 284, + gMonBackPic_Swampert, 0x800, 285, + gMonBackPic_Poochyena, 0x800, 286, + gMonBackPic_Mightyena, 0x800, 287, + gMonBackPic_Zigzagoon, 0x800, 288, + gMonBackPic_Linoone, 0x800, 289, + gMonBackPic_Wurmple, 0x800, 290, + gMonBackPic_Silcoon, 0x800, 291, + gMonBackPic_Beautifly, 0x800, 292, + gMonBackPic_Cascoon, 0x800, 293, + gMonBackPic_Dustox, 0x800, 294, + gMonBackPic_Lotad, 0x800, 295, + gMonBackPic_Lombre, 0x800, 296, + gMonBackPic_Ludicolo, 0x800, 297, + gMonBackPic_Seedot, 0x800, 298, + gMonBackPic_Nuzleaf, 0x800, 299, + gMonBackPic_Shiftry, 0x800, 300, + gMonBackPic_Nincada, 0x800, 301, + gMonBackPic_Ninjask, 0x800, 302, + gMonBackPic_Shedinja, 0x800, 303, + gMonBackPic_Taillow, 0x800, 304, + gMonBackPic_Swellow, 0x800, 305, + gMonBackPic_Shroomish, 0x800, 306, + gMonBackPic_Breloom, 0x800, 307, + gMonBackPic_Spinda, 0x800, 308, + gMonBackPic_Wingull, 0x800, 309, + gMonBackPic_Pelipper, 0x800, 310, + gMonBackPic_Surskit, 0x800, 311, + gMonBackPic_Masquerain, 0x800, 312, + gMonBackPic_Wailmer, 0x800, 313, + gMonBackPic_Wailord, 0x800, 314, + gMonBackPic_Skitty, 0x800, 315, + gMonBackPic_Delcatty, 0x800, 316, + gMonBackPic_Kecleon, 0x800, 317, + gMonBackPic_Baltoy, 0x800, 318, + gMonBackPic_Claydol, 0x800, 319, + gMonBackPic_Nosepass, 0x800, 320, + gMonBackPic_Torkoal, 0x800, 321, + gMonBackPic_Sableye, 0x800, 322, + gMonBackPic_Barboach, 0x800, 323, + gMonBackPic_Whiscash, 0x800, 324, + gMonBackPic_Luvdisc, 0x800, 325, + gMonBackPic_Corphish, 0x800, 326, + gMonBackPic_Crawdaunt, 0x800, 327, + gMonBackPic_Feebas, 0x800, 328, + gMonBackPic_Milotic, 0x800, 329, + gMonBackPic_Carvanha, 0x800, 330, + gMonBackPic_Sharpedo, 0x800, 331, + gMonBackPic_Trapinch, 0x800, 332, + gMonBackPic_Vibrava, 0x800, 333, + gMonBackPic_Flygon, 0x800, 334, + gMonBackPic_Makuhita, 0x800, 335, + gMonBackPic_Hariyama, 0x800, 336, + gMonBackPic_Electrike, 0x800, 337, + gMonBackPic_Manectric, 0x800, 338, + gMonBackPic_Numel, 0x800, 339, + gMonBackPic_Camerupt, 0x800, 340, + gMonBackPic_Spheal, 0x800, 341, + gMonBackPic_Sealeo, 0x800, 342, + gMonBackPic_Walrein, 0x800, 343, + gMonBackPic_Cacnea, 0x800, 344, + gMonBackPic_Cacturne, 0x800, 345, + gMonBackPic_Snorunt, 0x800, 346, + gMonBackPic_Glalie, 0x800, 347, + gMonBackPic_Lunatone, 0x800, 348, + gMonBackPic_Solrock, 0x800, 349, + gMonBackPic_Azurill, 0x800, 350, + gMonBackPic_Spoink, 0x800, 351, + gMonBackPic_Grumpig, 0x800, 352, + gMonBackPic_Plusle, 0x800, 353, + gMonBackPic_Minun, 0x800, 354, + gMonBackPic_Mawile, 0x800, 355, + gMonBackPic_Meditite, 0x800, 356, + gMonBackPic_Medicham, 0x800, 357, + gMonBackPic_Swablu, 0x800, 358, + gMonBackPic_Altaria, 0x800, 359, + gMonBackPic_Wynaut, 0x800, 360, + gMonBackPic_Duskull, 0x800, 361, + gMonBackPic_Dusclops, 0x800, 362, + gMonBackPic_Roselia, 0x800, 363, + gMonBackPic_Slakoth, 0x800, 364, + gMonBackPic_Vigoroth, 0x800, 365, + gMonBackPic_Slaking, 0x800, 366, + gMonBackPic_Gulpin, 0x800, 367, + gMonBackPic_Swalot, 0x800, 368, + gMonBackPic_Tropius, 0x800, 369, + gMonBackPic_Whismur, 0x800, 370, + gMonBackPic_Loudred, 0x800, 371, + gMonBackPic_Exploud, 0x800, 372, + gMonBackPic_Clamperl, 0x800, 373, + gMonBackPic_Huntail, 0x800, 374, + gMonBackPic_Gorebyss, 0x800, 375, + gMonBackPic_Absol, 0x800, 376, + gMonBackPic_Shuppet, 0x800, 377, + gMonBackPic_Banette, 0x800, 378, + gMonBackPic_Seviper, 0x800, 379, + gMonBackPic_Zangoose, 0x800, 380, + gMonBackPic_Relicanth, 0x800, 381, + gMonBackPic_Aron, 0x800, 382, + gMonBackPic_Lairon, 0x800, 383, + gMonBackPic_Aggron, 0x800, 384, + gMonBackPic_Castform, 0x800, 385, + gMonBackPic_Volbeat, 0x800, 386, + gMonBackPic_Illumise, 0x800, 387, + gMonBackPic_Lileep, 0x800, 388, + gMonBackPic_Cradily, 0x800, 389, + gMonBackPic_Anorith, 0x800, 390, + gMonBackPic_Armaldo, 0x800, 391, + gMonBackPic_Ralts, 0x800, 392, + gMonBackPic_Kirlia, 0x800, 393, + gMonBackPic_Gardevoir, 0x800, 394, + gMonBackPic_Bagon, 0x800, 395, + gMonBackPic_Shelgon, 0x800, 396, + gMonBackPic_Salamence, 0x800, 397, + gMonBackPic_Beldum, 0x800, 398, + gMonBackPic_Metang, 0x800, 399, + gMonBackPic_Metagross, 0x800, 400, + gMonBackPic_Regirock, 0x800, 401, + gMonBackPic_Regice, 0x800, 402, + gMonBackPic_Registeel, 0x800, 403, + gMonBackPic_Kyogre, 0x800, 404, + gMonBackPic_Groudon, 0x800, 405, + gMonBackPic_Rayquaza, 0x800, 406, + gMonBackPic_Latias, 0x800, 407, + gMonBackPic_Latios, 0x800, 408, + gMonBackPic_Jirachi, 0x800, 409, + gMonBackPic_Deoxys, 0x800, 410, + gMonBackPic_Chimecho, 0x800, 411, + gMonStillFrontPic_Egg, 0x800, 412, + gMonBackPic_UnownB, 0x800, 413, + gMonBackPic_UnownC, 0x800, 414, + gMonBackPic_UnownD, 0x800, 415, + gMonBackPic_UnownE, 0x800, 416, + gMonBackPic_UnownF, 0x800, 417, + gMonBackPic_UnownG, 0x800, 418, + gMonBackPic_UnownH, 0x800, 419, + gMonBackPic_UnownI, 0x800, 420, + gMonBackPic_UnownJ, 0x800, 421, + gMonBackPic_UnownK, 0x800, 422, + gMonBackPic_UnownL, 0x800, 423, + gMonBackPic_UnownM, 0x800, 424, + gMonBackPic_UnownN, 0x800, 425, + gMonBackPic_UnownO, 0x800, 426, + gMonBackPic_UnownP, 0x800, 427, + gMonBackPic_UnownQ, 0x800, 428, + gMonBackPic_UnownR, 0x800, 429, + gMonBackPic_UnownS, 0x800, 430, + gMonBackPic_UnownT, 0x800, 431, + gMonBackPic_UnownU, 0x800, 432, + gMonBackPic_UnownV, 0x800, 433, + gMonBackPic_UnownW, 0x800, 434, + gMonBackPic_UnownX, 0x800, 435, + gMonBackPic_UnownY, 0x800, 436, + gMonBackPic_UnownZ, 0x800, 437, + gMonBackPic_UnownExclamationMark, 0x800, 438, + gMonBackPic_UnownQuestionMark, 0x800, 439, +}; diff --git a/src/data/pokemon_graphics/enemy_mon_elevation.h b/src/data/pokemon_graphics/enemy_mon_elevation.h new file mode 100644 index 000000000..80e2a415a --- /dev/null +++ b/src/data/pokemon_graphics/enemy_mon_elevation.h @@ -0,0 +1,417 @@ +// This determines how much higher above the usual position the enemy Pokémon +// is during battle. Species that float or fly have nonzero values. +const u8 gEnemyMonElevation[] = +{ + 0, // 0 + 0, // SPECIES_BULBASAUR + 0, // SPECIES_IVYSAUR + 0, // SPECIES_VENUSAUR + 0, // SPECIES_CHARMANDER + 0, // SPECIES_CHARMELEON + 0, // SPECIES_CHARIZARD + 0, // SPECIES_SQUIRTLE + 0, // SPECIES_WARTORTLE + 0, // SPECIES_BLASTOISE + 0, // SPECIES_CATERPIE + 0, // SPECIES_METAPOD + 8, // SPECIES_BUTTERFREE + 0, // SPECIES_WEEDLE + 0, // SPECIES_KAKUNA + 8, // SPECIES_BEEDRILL + 16, // SPECIES_PIDGEY + 0, // SPECIES_PIDGEOTTO + 4, // SPECIES_PIDGEOT + 0, // SPECIES_RATTATA + 0, // SPECIES_RATICATE + 0, // SPECIES_SPEAROW + 6, // SPECIES_FEAROW + 0, // SPECIES_EKANS + 0, // SPECIES_ARBOK + 0, // SPECIES_PIKACHU + 0, // SPECIES_RAICHU + 0, // SPECIES_SANDSHREW + 0, // SPECIES_SANDSLASH + 0, // SPECIES_NIDORAN_F + 0, // SPECIES_NIDORINA + 0, // SPECIES_NIDOQUEEN + 0, // SPECIES_NIDORAN_M + 0, // SPECIES_NIDORINO + 0, // SPECIES_NIDOKING + 0, // SPECIES_CLEFAIRY + 0, // SPECIES_CLEFABLE + 0, // SPECIES_VULPIX + 0, // SPECIES_NINETALES + 0, // SPECIES_JIGGLYPUFF + 0, // SPECIES_WIGGLYTUFF + 8, // SPECIES_ZUBAT + 8, // SPECIES_GOLBAT + 0, // SPECIES_ODDISH + 0, // SPECIES_GLOOM + 0, // SPECIES_VILEPLUME + 0, // SPECIES_PARAS + 0, // SPECIES_PARASECT + 0, // SPECIES_VENONAT + 8, // SPECIES_VENOMOTH + 0, // SPECIES_DIGLETT + 0, // SPECIES_DUGTRIO + 0, // SPECIES_MEOWTH + 0, // SPECIES_PERSIAN + 0, // SPECIES_PSYDUCK + 0, // SPECIES_GOLDUCK + 0, // SPECIES_MANKEY + 0, // SPECIES_PRIMEAPE + 0, // SPECIES_GROWLITHE + 0, // SPECIES_ARCANINE + 0, // SPECIES_POLIWAG + 0, // SPECIES_POLIWHIRL + 0, // SPECIES_POLIWRATH + 0, // SPECIES_ABRA + 0, // SPECIES_KADABRA + 0, // SPECIES_ALAKAZAM + 0, // SPECIES_MACHOP + 0, // SPECIES_MACHOKE + 0, // SPECIES_MACHAMP + 0, // SPECIES_BELLSPROUT + 0, // SPECIES_WEEPINBELL + 0, // SPECIES_VICTREEBEL + 0, // SPECIES_TENTACOOL + 0, // SPECIES_TENTACRUEL + 16, // SPECIES_GEODUDE + 0, // SPECIES_GRAVELER + 0, // SPECIES_GOLEM + 0, // SPECIES_PONYTA + 0, // SPECIES_RAPIDASH + 0, // SPECIES_SLOWPOKE + 0, // SPECIES_SLOWBRO + 16, // SPECIES_MAGNEMITE + 8, // SPECIES_MAGNETON + 0, // SPECIES_FARFETCHD + 0, // SPECIES_DODUO + 0, // SPECIES_DODRIO + 0, // SPECIES_SEEL + 0, // SPECIES_DEWGONG + 0, // SPECIES_GRIMER + 0, // SPECIES_MUK + 0, // SPECIES_SHELLDER + 0, // SPECIES_CLOYSTER + 4, // SPECIES_GASTLY + 4, // SPECIES_HAUNTER + 0, // SPECIES_GENGAR + 0, // SPECIES_ONIX + 0, // SPECIES_DROWZEE + 0, // SPECIES_HYPNO + 0, // SPECIES_KRABBY + 0, // SPECIES_KINGLER + 10, // SPECIES_VOLTORB + 12, // SPECIES_ELECTRODE + 0, // SPECIES_EXEGGCUTE + 0, // SPECIES_EXEGGUTOR + 0, // SPECIES_CUBONE + 0, // SPECIES_MAROWAK + 0, // SPECIES_HITMONLEE + 0, // SPECIES_HITMONCHAN + 0, // SPECIES_LICKITUNG + 8, // SPECIES_KOFFING + 6, // SPECIES_WEEZING + 0, // SPECIES_RHYHORN + 0, // SPECIES_RHYDON + 0, // SPECIES_CHANSEY + 0, // SPECIES_TANGELA + 0, // SPECIES_KANGASKHAN + 0, // SPECIES_HORSEA + 0, // SPECIES_SEADRA + 0, // SPECIES_GOLDEEN + 0, // SPECIES_SEAKING + 0, // SPECIES_STARYU + 0, // SPECIES_STARMIE + 0, // SPECIES_MR_MIME + 0, // SPECIES_SCYTHER + 0, // SPECIES_JYNX + 0, // SPECIES_ELECTABUZZ + 0, // SPECIES_MAGMAR + 0, // SPECIES_PINSIR + 0, // SPECIES_TAUROS + 0, // SPECIES_MAGIKARP + 0, // SPECIES_GYARADOS + 0, // SPECIES_LAPRAS + 0, // SPECIES_DITTO + 0, // SPECIES_EEVEE + 0, // SPECIES_VAPOREON + 0, // SPECIES_JOLTEON + 0, // SPECIES_FLAREON + 0, // SPECIES_PORYGON + 0, // SPECIES_OMANYTE + 0, // SPECIES_OMASTAR + 0, // SPECIES_KABUTO + 0, // SPECIES_KABUTOPS + 7, // SPECIES_AERODACTYL + 0, // SPECIES_SNORLAX + 6, // SPECIES_ARTICUNO + 8, // SPECIES_ZAPDOS + 5, // SPECIES_MOLTRES + 0, // SPECIES_DRATINI + 0, // SPECIES_DRAGONAIR + 6, // SPECIES_DRAGONITE + 0, // SPECIES_MEWTWO + 8, // SPECIES_MEW + 0, // SPECIES_CHIKORITA + 0, // SPECIES_BAYLEEF + 0, // SPECIES_MEGANIUM + 0, // SPECIES_CYNDAQUIL + 0, // SPECIES_QUILAVA + 0, // SPECIES_TYPHLOSION + 0, // SPECIES_TOTODILE + 0, // SPECIES_CROCONAW + 0, // SPECIES_FERALIGATR + 0, // SPECIES_SENTRET + 0, // SPECIES_FURRET + 0, // SPECIES_HOOTHOOT + 0, // SPECIES_NOCTOWL + 0, // SPECIES_LEDYBA + 8, // SPECIES_LEDIAN + 0, // SPECIES_SPINARAK + 0, // SPECIES_ARIADOS + 6, // SPECIES_CROBAT + 0, // SPECIES_CHINCHOU + 0, // SPECIES_LANTURN + 0, // SPECIES_PICHU + 0, // SPECIES_CLEFFA + 0, // SPECIES_IGGLYBUFF + 0, // SPECIES_TOGEPI + 0, // SPECIES_TOGETIC + 0, // SPECIES_NATU + 0, // SPECIES_XATU + 0, // SPECIES_MAREEP + 0, // SPECIES_FLAAFFY + 0, // SPECIES_AMPHAROS + 0, // SPECIES_BELLOSSOM + 0, // SPECIES_MARILL + 0, // SPECIES_AZUMARILL + 0, // SPECIES_SUDOWOODO + 0, // SPECIES_POLITOED + 11, // SPECIES_HOPPIP + 12, // SPECIES_SKIPLOOM + 9, // SPECIES_JUMPLUFF + 0, // SPECIES_AIPOM + 0, // SPECIES_SUNKERN + 0, // SPECIES_SUNFLORA + 8, // SPECIES_YANMA + 0, // SPECIES_WOOPER + 0, // SPECIES_QUAGSIRE + 0, // SPECIES_ESPEON + 0, // SPECIES_UMBREON + 0, // SPECIES_MURKROW + 0, // SPECIES_SLOWKING + 8, // SPECIES_MISDREAVUS + 8, // SPECIES_UNOWN + 0, // SPECIES_WOBBUFFET + 0, // SPECIES_GIRAFARIG + 0, // SPECIES_PINECO + 0, // SPECIES_FORRETRESS + 0, // SPECIES_DUNSPARCE + 6, // SPECIES_GLIGAR + 0, // SPECIES_STEELIX + 0, // SPECIES_SNUBBULL + 0, // SPECIES_GRANBULL + 0, // SPECIES_QWILFISH + 0, // SPECIES_SCIZOR + 0, // SPECIES_SHUCKLE + 0, // SPECIES_HERACROSS + 0, // SPECIES_SNEASEL + 0, // SPECIES_TEDDIURSA + 0, // SPECIES_URSARING + 0, // SPECIES_SLUGMA + 0, // SPECIES_MAGCARGO + 0, // SPECIES_SWINUB + 0, // SPECIES_PILOSWINE + 0, // SPECIES_CORSOLA + 0, // SPECIES_REMORAID + 0, // SPECIES_OCTILLERY + 0, // SPECIES_DELIBIRD + 0, // SPECIES_MANTINE + 0, // SPECIES_SKARMORY + 0, // SPECIES_HOUNDOUR + 0, // SPECIES_HOUNDOOM + 0, // SPECIES_KINGDRA + 0, // SPECIES_PHANPY + 0, // SPECIES_DONPHAN + 0, // SPECIES_PORYGON2 + 0, // SPECIES_STANTLER + 0, // SPECIES_SMEARGLE + 0, // SPECIES_TYROGUE + 0, // SPECIES_HITMONTOP + 0, // SPECIES_SMOOCHUM + 0, // SPECIES_ELEKID + 0, // SPECIES_MAGBY + 0, // SPECIES_MILTANK + 0, // SPECIES_BLISSEY + 0, // SPECIES_RAIKOU + 0, // SPECIES_ENTEI + 0, // SPECIES_SUICUNE + 0, // SPECIES_LARVITAR + 0, // SPECIES_PUPITAR + 0, // SPECIES_TYRANITAR + 6, // SPECIES_LUGIA + 6, // SPECIES_HO_OH + 15, // SPECIES_CELEBI + 0, // 252 + 0, // 253 + 0, // 254 + 0, // 255 + 0, // 256 + 0, // 257 + 0, // 258 + 0, // 259 + 0, // 260 + 0, // 261 + 0, // 262 + 0, // 263 + 0, // 264 + 0, // 265 + 0, // 266 + 0, // 267 + 0, // 268 + 0, // 269 + 0, // 270 + 0, // 271 + 0, // 272 + 0, // 273 + 0, // 274 + 0, // 275 + 0, // 276 + 0, // SPECIES_TREECKO + 0, // SPECIES_GROVYLE + 0, // SPECIES_SCEPTILE + 0, // SPECIES_TORCHIC + 0, // SPECIES_COMBUSKEN + 0, // SPECIES_BLAZIKEN + 0, // SPECIES_MUDKIP + 0, // SPECIES_MARSHTOMP + 0, // SPECIES_SWAMPERT + 0, // SPECIES_POOCHYENA + 0, // SPECIES_MIGHTYENA + 0, // SPECIES_ZIGZAGOON + 0, // SPECIES_LINOONE + 0, // SPECIES_WURMPLE + 0, // SPECIES_SILCOON + 8, // SPECIES_BEAUTIFLY + 0, // SPECIES_CASCOON + 10, // SPECIES_DUSTOX + 0, // SPECIES_LOTAD + 0, // SPECIES_LOMBRE + 0, // SPECIES_LUDICOLO + 0, // SPECIES_SEEDOT + 0, // SPECIES_NUZLEAF + 0, // SPECIES_SHIFTRY + 0, // SPECIES_NINCADA + 10, // SPECIES_NINJASK + 8, // SPECIES_SHEDINJA + 0, // SPECIES_TAILLOW + 0, // SPECIES_SWELLOW + 0, // SPECIES_SHROOMISH + 0, // SPECIES_BRELOOM + 0, // SPECIES_SPINDA + 16, // SPECIES_WINGULL + 8, // SPECIES_PELIPPER + 0, // SPECIES_SURSKIT + 10, // SPECIES_MASQUERAIN + 0, // SPECIES_WAILMER + 0, // SPECIES_WAILORD + 0, // SPECIES_SKITTY + 0, // SPECIES_DELCATTY + 0, // SPECIES_KECLEON + 4, // SPECIES_BALTOY + 10, // SPECIES_CLAYDOL + 0, // SPECIES_NOSEPASS + 0, // SPECIES_TORKOAL + 0, // SPECIES_SABLEYE + 0, // SPECIES_BARBOACH + 0, // SPECIES_WHISCASH + 0, // SPECIES_LUVDISC + 0, // SPECIES_CORPHISH + 0, // SPECIES_CRAWDAUNT + 0, // SPECIES_FEEBAS + 0, // SPECIES_MILOTIC + 0, // SPECIES_CARVANHA + 0, // SPECIES_SHARPEDO + 0, // SPECIES_TRAPINCH + 0, // SPECIES_VIBRAVA + 7, // SPECIES_FLYGON + 0, // SPECIES_MAKUHITA + 0, // SPECIES_HARIYAMA + 0, // SPECIES_ELECTRIKE + 0, // SPECIES_MANECTRIC + 0, // SPECIES_NUMEL + 0, // SPECIES_CAMERUPT + 0, // SPECIES_SPHEAL + 0, // SPECIES_SEALEO + 0, // SPECIES_WALREIN + 0, // SPECIES_CACNEA + 0, // SPECIES_CACTURNE + 0, // SPECIES_SNORUNT + 12, // SPECIES_GLALIE + 13, // SPECIES_LUNATONE + 4, // SPECIES_SOLROCK + 0, // SPECIES_AZURILL + 0, // SPECIES_SPOINK + 0, // SPECIES_GRUMPIG + 0, // SPECIES_PLUSLE + 0, // SPECIES_MINUN + 0, // SPECIES_MAWILE + 0, // SPECIES_MEDITITE + 0, // SPECIES_MEDICHAM + 12, // SPECIES_SWABLU + 8, // SPECIES_ALTARIA + 0, // SPECIES_WYNAUT + 9, // SPECIES_DUSKULL + 0, // SPECIES_DUSCLOPS + 0, // SPECIES_ROSELIA + 0, // SPECIES_SLAKOTH + 0, // SPECIES_VIGOROTH + 0, // SPECIES_SLAKING + 0, // SPECIES_GULPIN + 0, // SPECIES_SWALOT + 0, // SPECIES_TROPIUS + 0, // SPECIES_WHISMUR + 0, // SPECIES_LOUDRED + 0, // SPECIES_EXPLOUD + 0, // SPECIES_CLAMPERL + 0, // SPECIES_HUNTAIL + 0, // SPECIES_GOREBYSS + 0, // SPECIES_ABSOL + 12, // SPECIES_SHUPPET + 8, // SPECIES_BANETTE + 0, // SPECIES_SEVIPER + 0, // SPECIES_ZANGOOSE + 0, // SPECIES_RELICANTH + 0, // SPECIES_ARON + 0, // SPECIES_LAIRON + 0, // SPECIES_AGGRON + 16, // SPECIES_CASTFORM + 0, // SPECIES_VOLBEAT + 0, // SPECIES_ILLUMISE + 0, // SPECIES_LILEEP + 0, // SPECIES_CRADILY + 0, // SPECIES_ANORITH + 0, // SPECIES_ARMALDO + 0, // SPECIES_RALTS + 0, // SPECIES_KIRLIA + 0, // SPECIES_GARDEVOIR + 0, // SPECIES_BAGON + 0, // SPECIES_SHELGON + 0, // SPECIES_SALAMENCE + 8, // SPECIES_BELDUM + 0, // SPECIES_METANG + 0, // SPECIES_METAGROSS + 0, // SPECIES_REGIROCK + 0, // SPECIES_REGICE + 0, // SPECIES_REGISTEEL + 0, // SPECIES_KYOGRE + 0, // SPECIES_GROUDON + 6, // SPECIES_RAYQUAZA + 6, // SPECIES_LATIAS + 6, // SPECIES_LATIOS + 12, // SPECIES_JIRACHI + 8, // SPECIES_DEOXYS + 12, // SPECIES_CHIMECHO +}; diff --git a/src/data/pokemon_graphics/front_anims.h b/src/data/pokemon_graphics/front_anims.h new file mode 100644 index 000000000..0e7b75bde --- /dev/null +++ b/src/data/pokemon_graphics/front_anims.h @@ -0,0 +1,7391 @@ + +const union AnimCmd gAnimCmd_NONE_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_BULBASAUR_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_IVYSAUR_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 36), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_VENUSAUR_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CHARMANDER_1[] = +{ + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 46), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CHARMELEON_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 30), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CHARIZARD_1[] = +{ + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SQUIRTLE_1[] = +{ + ANIMCMD_FRAME(1, 50), + ANIMCMD_FRAME(1, 50), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_WARTORTLE_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_BLASTOISE_1[] = +{ + ANIMCMD_FRAME(0, 50), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CATERPIE_1[] = +{ + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_METAPOD_1[] = +{ + ANIMCMD_FRAME(1, 45), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_BUTTERFREE_1[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 25), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_WEEDLE_1[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_KAKUNA_1[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_BEEDRILL_1[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 35), + ANIMCMD_FRAME(0, 28), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_PIDGEY_1[] = +{ + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_PIDGEOTTO_1[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 35), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_PIDGEOT_1[] = +{ + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + + +const union AnimCmd gAnimCmd_RATTATA_1[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 50), + ANIMCMD_FRAME(1, 28), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_RATICATE_1[] = +{ + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SPEAROW_1[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_FEAROW_1[] = +{ + ANIMCMD_FRAME(1, 7), + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 7), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 7), + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 7), + ANIMCMD_FRAME(0, 7), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_EKANS_1[] = +{ + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 8), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_ARBOK_1[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 35), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_PIKACHU_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_PIKACHU_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_RAICHU_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_RAICHU_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SANDSHREW_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SANDSHREW_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SANDSLASH_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SANDSLASH_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_NIDORAN_F_1[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 50), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_NIDORINA_1[] = +{ + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_NIDOQUEEN_1[] = +{ + ANIMCMD_FRAME(1, 45), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_NIDORAN_M_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_NIDORINO_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_NIDOKING_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CLEFAIRY_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CLEFABLE_1[] = +{ + ANIMCMD_FRAME(1, 27), + ANIMCMD_FRAME(0, 27), + ANIMCMD_FRAME(1, 24), + ANIMCMD_FRAME(0, 25), + ANIMCMD_FRAME(1, 27), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_VULPIX_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_VULPIX_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_NINETALES_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_NINETALES_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_JIGGLYPUFF_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_JIGGLYPUFF_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_WIGGLYTUFF_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_WIGGLYTUFF_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_ZUBAT_1[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_GOLBAT_1[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_ODDISH_1[] = +{ + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 11), + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 11), + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 11), + ANIMCMD_FRAME(0, 6), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_GLOOM_1[] = +{ + ANIMCMD_FRAME(0, 21), + ANIMCMD_FRAME(1, 45), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_VILEPLUME_1[] = +{ + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 21), + ANIMCMD_FRAME(0, 13), + ANIMCMD_FRAME(1, 21), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_PARAS_1[] = +{ + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_PARASECT_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 35), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_VENONAT_1[] = +{ + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 35), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_VENOMOTH_1[] = +{ + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_DIGLETT_1[] = +{ + ANIMCMD_FRAME(0, 25), + ANIMCMD_FRAME(1, 35), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_DUGTRIO_1[] = +{ + ANIMCMD_FRAME(1, 35), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MEOWTH_1[] = +{ + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 17), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_PERSIAN_1[] = +{ + ANIMCMD_FRAME(1, 50), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_PSYDUCK_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_PSYDUCK_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_GOLDUCK_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_GOLDUCK_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MANKEY_1[] = +{ + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 28), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_PRIMEAPE_1[] = +{ + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_GROWLITHE_1[] = +{ + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_ARCANINE_1[] = +{ + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END,}; + +const union AnimCmd gAnimCmd_POLIWAG_1[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_POLIWHIRL_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_POLIWRATH_1[] = +{ + ANIMCMD_FRAME(1, 45), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_ABRA_1[] = +{ + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 21), + ANIMCMD_FRAME(0, 13), + ANIMCMD_FRAME(1, 21), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_KADABRA_1[] = +{ + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(1, 45), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_ALAKAZAM_1[] = +{ + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(1, 54), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MACHOP_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MACHOKE_1[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(1, 44), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MACHAMP_1[] = +{ + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 11), + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 11), + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 11), + ANIMCMD_FRAME(0, 11), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_BELLSPROUT_1[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_WEEPINBELL_1[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_VICTREEBEL_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_TENTACOOL_1[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 11), + ANIMCMD_FRAME(0, 11), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_TENTACRUEL_1[] = +{ + ANIMCMD_FRAME(0, 19), + ANIMCMD_FRAME(1, 35), + ANIMCMD_FRAME(0, 19), + ANIMCMD_FRAME(1, 19), + ANIMCMD_FRAME(0, 8), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_GEODUDE_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 36), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_GRAVELER_1[] = +{ + ANIMCMD_FRAME(0, 16), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 16), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 16), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_GOLEM_1[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 31), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(0, 8), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_PONYTA_1[] = +{ + ANIMCMD_FRAME(1, 45), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_RAPIDASH_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SLOWPOKE_1[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(1, 50), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SLOWBRO_1[] = +{ + ANIMCMD_FRAME(1, 50), + ANIMCMD_FRAME(1, 45), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MAGNEMITE_1[] = +{ + ANIMCMD_FRAME(0, 28), + ANIMCMD_FRAME(1, 28), + ANIMCMD_FRAME(0, 28), + ANIMCMD_FRAME(1, 28), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MAGNETON_1[] = +{ + ANIMCMD_FRAME(0, 14), + ANIMCMD_FRAME(1, 14), + ANIMCMD_FRAME(0, 14), + ANIMCMD_FRAME(1, 14), + ANIMCMD_FRAME(0, 14), + ANIMCMD_FRAME(1, 14), + ANIMCMD_FRAME(0, 14), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_FARFETCHD_1[] = +{ + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_DODUO_1[] = +{ + ANIMCMD_FRAME(0, 18), + ANIMCMD_FRAME(1, 18), + ANIMCMD_FRAME(0, 18), + ANIMCMD_FRAME(1, 18), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_DODRIO_1[] = +{ + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(1, 12), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(1, 12), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(1, 12), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(1, 12), + ANIMCMD_FRAME(0, 8), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SEEL_1[] = +{ + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_DEWGONG_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 30), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_GRIMER_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_GRIMER_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MUK_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MUK_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SHELLDER_1[] = +{ + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 45), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CLOYSTER_1[] = +{ + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 25), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_GASTLY_1[] = +{ + ANIMCMD_FRAME(1, 50), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_HAUNTER_1[] = +{ + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 35), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_GENGAR_1[] = +{ + ANIMCMD_FRAME(1, 50), + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_ONIX_1[] = +{ + ANIMCMD_FRAME(1, 50), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 30), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_DROWZEE_1[] = +{ + ANIMCMD_FRAME(1, 12), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(1, 12), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(1, 45), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_HYPNO_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_KRABBY_1[] = +{ + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_KINGLER_1[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 25), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_VOLTORB_1[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 4), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_ELECTRODE_1[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 8), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_EXEGGCUTE_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_EXEGGUTOR_1[] = +{ + ANIMCMD_FRAME(1, 35), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END,}; + + +const union AnimCmd gAnimCmd_CUBONE_1[] = +{ + ANIMCMD_FRAME(1, 14), + ANIMCMD_FRAME(0, 14), + ANIMCMD_FRAME(1, 14), + ANIMCMD_FRAME(0, 14), + ANIMCMD_FRAME(1, 14), + ANIMCMD_FRAME(0, 14), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MAROWAK_1[] = +{ + ANIMCMD_FRAME(1, 14), + ANIMCMD_FRAME(0, 14), + ANIMCMD_FRAME(1, 14), + ANIMCMD_FRAME(0, 14), + ANIMCMD_FRAME(1, 14), + ANIMCMD_FRAME(0, 14), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_HITMONLEE_1[] = +{ + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_HITMONCHAN_1[] = +{ + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_LICKITUNG_1[] = +{ + ANIMCMD_FRAME(0, 28), + ANIMCMD_FRAME(1, 32), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_KOFFING_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_KOFFING_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_WEEZING_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_WEEZING_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_RHYHORN_1[] = +{ + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_RHYHORN_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_RHYDON_1[] = +{ + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 48), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_RHYDON_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CHANSEY_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_TANGELA_1[] = +{ + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(0, 9), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_KANGASKHAN_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_HORSEA_1[] = +{ + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_HORSEA_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SEADRA_1[] = +{ + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SEADRA_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_GOLDEEN_1[] = +{ + ANIMCMD_FRAME(0, 16), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 16), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 16), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 16), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SEAKING_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_STARYU_1[] = +{ + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_STARYU_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_STARMIE_1[] = +{ + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_STARMIE_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MR_MIME_1[] = +{ + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SCYTHER_1[] = +{ + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_JYNX_1[] = +{ + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 50), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_ELECTABUZZ_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MAGMAR_1[] = +{ + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_PINSIR_1[] = +{ + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_PINSIR_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_TAUROS_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MAGIKARP_1[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_GYARADOS_1[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 32), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_LAPRAS_1[] = +{ + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_DITTO_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_EEVEE_1[] = +{ + ANIMCMD_FRAME(1, 33), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_VAPOREON_1[] = +{ + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_JOLTEON_1[] = +{ + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_FLAREON_1[] = +{ + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 30), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_PORYGON_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_OMANYTE_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_OMASTAR_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_KABUTO_1[] = +{ + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_KABUTOPS_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_AERODACTYL_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 25), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 25), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SNORLAX_1[] = +{ + ANIMCMD_FRAME(1, 50), + ANIMCMD_FRAME(1, 50), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_ARTICUNO_1[] = +{ + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_ZAPDOS_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MOLTRES_1[] = +{ + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_DRATINI_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_DRAGONAIR_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_DRAGONITE_1[] = +{ + ANIMCMD_FRAME(1, 50), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MEWTWO_1[] = +{ + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MEW_1[] = +{ + ANIMCMD_FRAME(1, 50), + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CHIKORITA_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END,}; + + +const union AnimCmd gAnimCmd_BAYLEEF_1[] = +{ + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MEGANIUM_1[] = +{ + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CYNDAQUIL_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_QUILAVA_1[] = +{ + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_TYPHLOSION_1[] = +{ + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_TOTODILE_1[] = +{ + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CROCONAW_1[] = +{ + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_FERALIGATR_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 40), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SENTRET_1[] = +{ + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_FURRET_1[] = +{ + ANIMCMD_FRAME(1, 35), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_HOOTHOOT_1[] = +{ + ANIMCMD_FRAME(1, 7), + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 7), + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 7), + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 7), + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 7), + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 7), + ANIMCMD_FRAME(0, 7), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_NOCTOWL_1[] = +{ + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_LEDYBA_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_LEDIAN_1[] = +{ + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SPINARAK_1[] = +{ + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_ARIADOS_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CROBAT_1[] = +{ + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CHINCHOU_1[] = +{ + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CHINCHOU_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_LANTURN_1[] = +{ + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_LANTURN_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_PICHU_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_PICHU_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CLEFFA_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_IGGLYBUFF_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_IGGLYBUFF_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_TOGEPI_1[] = +{ + ANIMCMD_FRAME(1, 50), + ANIMCMD_FRAME(1, 50), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_TOGETIC_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_NATU_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_NATU_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_XATU_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 45), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_XATU_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MAREEP_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_FLAAFFY_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_AMPHAROS_1[] = +{ + ANIMCMD_FRAME(1, 50), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_BELLOSSOM_1[] = +{ + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 22), + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 22), + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 22), + ANIMCMD_FRAME(0, 22), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MARILL_1[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(1, 44), + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 44), + ANIMCMD_FRAME(0, 11), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_AZUMARILL_1[] = +{ + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 22), + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 22), + ANIMCMD_FRAME(0, 11), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SUDOWOODO_1[] = +{ + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_POLITOED_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 35), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_HOPPIP_1[] = +{ + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 25), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 25), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SKIPLOOM_1[] = +{ + ANIMCMD_FRAME(1, 12), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(1, 12), + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 12), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(1, 12), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_JUMPLUFF_1[] = +{ + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 25), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 25), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_AIPOM_1[] = +{ + ANIMCMD_FRAME(1, 35), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SUNKERN_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SUNFLORA_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_YANMA_1[] = +{ + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_WOOPER_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_QUAGSIRE_1[] = +{ + ANIMCMD_FRAME(1, 32), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_ESPEON_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UMBREON_1[] = +{ + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MURKROW_1[] = +{ + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SLOWKING_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MISDREAVUS_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_WOBBUFFET_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_WOBBUFFET_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_GIRAFARIG_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_GIRAFARIG_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_PINECO_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_FORRETRESS_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_DUNSPARCE_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_GLIGAR_1[] = +{ + ANIMCMD_FRAME(1, 17), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_STEELIX_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(1, 35), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SNUBBULL_1[] = +{ + ANIMCMD_FRAME(1, 32), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_GRANBULL_1[] = +{ + ANIMCMD_FRAME(1, 35), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_QWILFISH_1[] = +{ + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 50), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 30), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SCIZOR_1[] = +{ + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SHUCKLE_1[] = +{ + ANIMCMD_FRAME(1, 50), + ANIMCMD_FRAME(1, 50), + ANIMCMD_FRAME(0, 30), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_HERACROSS_1[] = +{ + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_HERACROSS_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SNEASEL_1[] = +{ + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_TEDDIURSA_1[] = +{ + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_URSARING_1[] = +{ + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SLUGMA_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SLUGMA_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MAGCARGO_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MAGCARGO_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SWINUB_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_PILOSWINE_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CORSOLA_1[] = +{ + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CORSOLA_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_REMORAID_1[] = +{ + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_OCTILLERY_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_DELIBIRD_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MANTINE_1[] = +{ + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 40), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SKARMORY_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SKARMORY_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_HOUNDOUR_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_HOUNDOOM_1[] = +{ + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 30), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_KINGDRA_1[] = +{ + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_KINGDRA_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_PHANPY_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_PHANPY_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_DONPHAN_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_DONPHAN_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_PORYGON2_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_STANTLER_1[] = +{ + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SMEARGLE_1[] = +{ + ANIMCMD_FRAME(1, 12), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(1, 12), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_TYROGUE_1[] = +{ + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_HITMONTOP_1[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SMOOCHUM_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_ELEKID_1[] = +{ + ANIMCMD_FRAME(1, 50), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MAGBY_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MILTANK_1[] = +{ + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 30), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_BLISSEY_1[] = +{ + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_RAIKOU_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_ENTEI_1[] = +{ + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SUICUNE_1[] = +{ + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_LARVITAR_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_PUPITAR_1[] = +{ + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_TYRANITAR_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_LUGIA_1[] = +{ + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_HO_OH_1[] = +{ + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CELEBI_1[] = +{ + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 30), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_OLD_UNOWN_B_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_TREECKO_1[] = +{ + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 3), + ANIMCMD_END,}; + +const union AnimCmd gAnimCmd_GROVYLE_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 18), + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 12), + ANIMCMD_FRAME(0, 6), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SCEPTILE_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 26), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_TORCHIC_1[] = +{ + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_COMBUSKEN_1[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 12), + ANIMCMD_END,}; + +const union AnimCmd gAnimCmd_BLAZIKEN_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 7), + ANIMCMD_FRAME(0, 7), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_BLAZIKEN_2[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(2, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_BLAZIKEN_3[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(2, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_BLAZIKEN_4[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MUDKIP_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 13), + ANIMCMD_FRAME(0, 7), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MARSHTOMP_1[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SWAMPERT_1[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 44), + ANIMCMD_FRAME(0, 18), + ANIMCMD_FRAME(1, 18), + ANIMCMD_FRAME(0, 7), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_POOCHYENA_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 44), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MIGHTYENA_1[] = +{ + ANIMCMD_FRAME(0, 27), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_ZIGZAGOON_1[] = +{ + ANIMCMD_FRAME(0, 27), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_LINOONE_1[] = +{ + ANIMCMD_FRAME(0, 14), + ANIMCMD_FRAME(1, 14), + ANIMCMD_FRAME(0, 14), + ANIMCMD_FRAME(1, 14), + ANIMCMD_FRAME(0, 14), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_WURMPLE_1[] = +{ + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 35), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SILCOON_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SILCOON_2[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_BEAUTIFLY_1[] = +{ + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_BEAUTIFLY_2[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CASCOON_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CASCOON_2[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_DUSTOX_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_DUSTOX_2[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_LOTAD_1[] = +{ + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 55), + ANIMCMD_FRAME(0, 22), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_LOMBRE_1[] = +{ + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 7), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_LUDICOLO_1[] = +{ + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 22), + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 22), + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 22), + ANIMCMD_FRAME(0, 22), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SEEDOT_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_NUZLEAF_1[] = +{ + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 7), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SHIFTRY_1[] = +{ + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 35), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_NINCADA_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 22), + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 33), + ANIMCMD_FRAME(0, 11), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_NINJASK_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 33), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 11), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SHEDINJA_1[] = +{ + ANIMCMD_FRAME(0, 33), + ANIMCMD_FRAME(1, 33), + ANIMCMD_FRAME(0, 33), + ANIMCMD_FRAME(1, 33), + ANIMCMD_FRAME(0, 11), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_TAILLOW_1[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SWELLOW_1[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 18), + ANIMCMD_FRAME(0, 11), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SHROOMISH_1[] = +{ + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_BRELOOM_1[] = +{ + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 7), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_WINGULL_1[] = +{ + ANIMCMD_FRAME(0, 17), + ANIMCMD_FRAME(1, 23), + ANIMCMD_FRAME(0, 13), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_PELIPPER_1[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SURSKIT_1[] = +{ + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 18), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 18), + ANIMCMD_FRAME(0, 8), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SURSKIT_2[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MASQUERAIN_1[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MASQUERAIN_2[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_WAILMER_1[] = +{ + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 22), + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 22), + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 22), + ANIMCMD_FRAME(0, 22), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_WAILORD_1[] = +{ + ANIMCMD_FRAME(0, 26), + ANIMCMD_FRAME(1, 48), + ANIMCMD_FRAME(0, 33), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SKITTY_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 35), + ANIMCMD_FRAME(0, 9), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_DELCATTY_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 46), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_KECLEON_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 18), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_BALTOY_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 50), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CLAYDOL_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_NOSEPASS_1[] = +{ + ANIMCMD_FRAME(0, 27), + ANIMCMD_FRAME(1, 27), + ANIMCMD_FRAME(0, 27), + ANIMCMD_FRAME(1, 27), + ANIMCMD_FRAME(0, 27), + ANIMCMD_FRAME(1, 27), + ANIMCMD_FRAME(0, 3), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_TORKOAL_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SABLEYE_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_BARBOACH_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 50), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_WHISCASH_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_LUVDISC_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CORPHISH_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 50), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CRAWDAUNT_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_FEEBAS_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MILOTIC_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CARVANHA_1[] = +{ + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SHARPEDO_1[] = +{ + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 22), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_TRAPINCH_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_VIBRAVA_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 50), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_FLYGON_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 50), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MAKUHITA_1[] = +{ + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 22), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_HARIYAMA_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 11), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_ELECTRIKE_1[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 17), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 3), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MANECTRIC_1[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 33), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 3), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_NUMEL_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 40), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CAMERUPT_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SPHEAL_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 43), + ANIMCMD_FRAME(1, 60), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SEALEO_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_WALREIN_1[] = +{ + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CACNEA_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CACTURNE_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SNORUNT_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_GLALIE_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_LUNATONE_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_LUNATONE_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SOLROCK_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SOLROCK_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_AZURILL_1[] = +{ + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(1, 12), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(1, 12), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(1, 12), + ANIMCMD_FRAME(0, 12), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SPOINK_1[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_GRUMPIG_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_PLUSLE_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MINUN_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MAWILE_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MEDITITE_1[] = +{ + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 22), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_MEDICHAM_1[] = +{ + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 11), + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 11), + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 11), + ANIMCMD_FRAME(0, 11), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SWABLU_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SWABLU_2[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(2, 8), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(2, 8), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(2, 8), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_ALTARIA_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_ALTARIA_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_WYNAUT_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_DUSKULL_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_DUSCLOPS_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_ROSELIA_1[] = +{ + ANIMCMD_FRAME(0, 18), + ANIMCMD_FRAME(1, 44), + ANIMCMD_FRAME(0, 22), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SLAKOTH_1[] = +{ + ANIMCMD_FRAME(0, 13), + ANIMCMD_FRAME(1, 22), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 22), + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(0, 11), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_VIGOROTH_1[] = +{ + ANIMCMD_FRAME(0, 13), + ANIMCMD_FRAME(1, 7), + ANIMCMD_FRAME(0, 13), + ANIMCMD_FRAME(1, 7), + ANIMCMD_FRAME(0, 13), + ANIMCMD_FRAME(1, 7), + ANIMCMD_FRAME(0, 11), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SLAKING_1[] = +{ + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 22), + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 22), + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 22), + ANIMCMD_FRAME(0, 22), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_GULPIN_1[] = +{ + ANIMCMD_FRAME(0, 14), + ANIMCMD_FRAME(1, 14), + ANIMCMD_FRAME(0, 14), + ANIMCMD_FRAME(1, 14), + ANIMCMD_FRAME(0, 4), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SWALOT_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 30), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_TROPIUS_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_WHISMUR_1[] = +{ + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(0, 33), + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(0, 9), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_LOUDRED_1[] = +{ + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(0, 33), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_EXPLOUD_1[] = +{ + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(1, 44), + ANIMCMD_FRAME(0, 9), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CLAMPERL_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_HUNTAIL_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_GOREBYSS_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_ABSOL_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SHUPPET_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_BANETTE_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SEVIPER_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 50), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_ZANGOOSE_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 50), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_RELICANTH_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_ARON_1[] = +{ + ANIMCMD_FRAME(0, 33), + ANIMCMD_FRAME(1, 44), + ANIMCMD_FRAME(0, 33), + ANIMCMD_FRAME(1, 33), + ANIMCMD_FRAME(0, 11), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_LAIRON_1[] = +{ + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(1, 29), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 29), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_AGGRON_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 44), + ANIMCMD_FRAME(0, 11), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CASTFORM_0[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CASTFORM_1[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CASTFORM_2[] = +{ + ANIMCMD_FRAME(2, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CASTFORM_3[] = +{ + ANIMCMD_FRAME(3, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_VOLBEAT_1[] = +{ + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 11), + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 11), + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 11), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_ILLUMISE_1[] = +{ + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 22), + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 22), + ANIMCMD_FRAME(0, 11), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_LILEEP_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CRADILY_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_ANORITH_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_ARMALDO_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_RALTS_1[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 8), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_KIRLIA_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 39), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_GARDEVOIR_1[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_BAGON_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SHELGON_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_SALAMENCE_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_BELDUM_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_METANG_1[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_METAGROSS_1[] = +{ + ANIMCMD_FRAME(0, 16), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 16), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 16), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_REGIROCK_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_REGIROCK_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_REGICE_1[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 18), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_REGISTEEL_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_REGISTEEL_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_KYOGRE_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_KYOGRE_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_GROUDON_1[] = +{ + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_GROUDON_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_RAYQUAZA_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_RAYQUAZA_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_LATIAS_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_LATIAS_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_LATIOS_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_LATIOS_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_JIRACHI_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_JIRACHI_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_DEOXYS_1[] = +{ + ANIMCMD_FRAME(0, 16), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 26), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 16), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_DEOXYS_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_CHIMECHO_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_EGG_1[] = +{ + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(2, 6), + ANIMCMD_FRAME(3, 6), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_B_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_C_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_D_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_E_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_F_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_G_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_H_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_I_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_J_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_K_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_L_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_M_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_N_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_O_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_P_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_Q_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_R_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_S_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_T_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_U_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_V_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_W_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_X_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_Y_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_Z_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_EMARK_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnimCmd_UNOWN_QMARK_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd *const gAnims_NONE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_NONE_1, +}; + +const union AnimCmd *const gAnims_BULBASAUR[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_BULBASAUR_1, +}; + +const union AnimCmd *const gAnims_IVYSAUR[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_IVYSAUR_1, +}; + +const union AnimCmd *const gAnims_VENUSAUR[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_VENUSAUR_1, +}; + +const union AnimCmd *const gAnims_CHARMANDER[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CHARMANDER_1, +}; + +const union AnimCmd *const gAnims_CHARMELEON[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CHARMELEON_1, +}; + +const union AnimCmd *const gAnims_CHARIZARD[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CHARIZARD_1, +}; + +const union AnimCmd *const gAnims_SQUIRTLE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SQUIRTLE_1, +}; + +const union AnimCmd *const gAnims_WARTORTLE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_WARTORTLE_1, +}; + +const union AnimCmd *const gAnims_BLASTOISE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_BLASTOISE_1, +}; + +const union AnimCmd *const gAnims_CATERPIE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CATERPIE_1, +}; + +const union AnimCmd *const gAnims_METAPOD[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_METAPOD_1, +}; + +const union AnimCmd *const gAnims_BUTTERFREE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_BUTTERFREE_1, +}; + +const union AnimCmd *const gAnims_WEEDLE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_WEEDLE_1, +}; + +const union AnimCmd *const gAnims_KAKUNA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_KAKUNA_1, +}; + +const union AnimCmd *const gAnims_BEEDRILL[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_BEEDRILL_1, +}; + +const union AnimCmd *const gAnims_PIDGEY[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_PIDGEY_1, +}; + +const union AnimCmd *const gAnims_PIDGEOTTO[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_PIDGEOTTO_1, +}; + +const union AnimCmd *const gAnims_PIDGEOT[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_PIDGEOT_1, +}; + +const union AnimCmd *const gAnims_RATTATA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_RATTATA_1, +}; + +const union AnimCmd *const gAnims_RATICATE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_RATICATE_1, +}; + +const union AnimCmd *const gAnims_SPEAROW[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SPEAROW_1, +}; + +const union AnimCmd *const gAnims_FEAROW[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_FEAROW_1, +}; + +const union AnimCmd *const gAnims_EKANS[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_EKANS_1, +}; + +const union AnimCmd *const gAnims_ARBOK[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_ARBOK_1, +}; + +const union AnimCmd *const gAnims_PIKACHU[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_PIKACHU_1, + gAnimCmd_PIKACHU_2, +}; + +const union AnimCmd *const gAnims_RAICHU[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_RAICHU_1, + gAnimCmd_RAICHU_2, +}; + +const union AnimCmd *const gAnims_SANDSHREW[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SANDSHREW_1, + gAnimCmd_SANDSHREW_2, +}; + +const union AnimCmd *const gAnims_SANDSLASH[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SANDSLASH_1, + gAnimCmd_SANDSLASH_2, +}; + +const union AnimCmd *const gAnims_NIDORAN_F[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_NIDORAN_F_1, +}; + +const union AnimCmd *const gAnims_NIDORINA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_NIDORINA_1, +}; + +const union AnimCmd *const gAnims_NIDOQUEEN[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_NIDOQUEEN_1, +}; + +const union AnimCmd *const gAnims_NIDORAN_M[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_NIDORAN_M_1, +}; + +const union AnimCmd *const gAnims_NIDORINO[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_NIDORINO_1, +}; + +const union AnimCmd *const gAnims_NIDOKING[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_NIDOKING_1, +}; + +const union AnimCmd *const gAnims_CLEFAIRY[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CLEFAIRY_1, +}; + +const union AnimCmd *const gAnims_CLEFABLE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CLEFABLE_1, +}; + +const union AnimCmd *const gAnims_VULPIX[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_VULPIX_1, + gAnimCmd_VULPIX_2, +}; + +const union AnimCmd *const gAnims_NINETALES[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_NINETALES_1, + gAnimCmd_NINETALES_2, +}; + +const union AnimCmd *const gAnims_JIGGLYPUFF[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_JIGGLYPUFF_1, + gAnimCmd_JIGGLYPUFF_2, +}; + +const union AnimCmd *const gAnims_WIGGLYTUFF[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_WIGGLYTUFF_1, + gAnimCmd_WIGGLYTUFF_2, +}; + +const union AnimCmd *const gAnims_ZUBAT[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_ZUBAT_1, +}; + +const union AnimCmd *const gAnims_GOLBAT[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_GOLBAT_1, +}; + +const union AnimCmd *const gAnims_ODDISH[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_ODDISH_1, +}; + +const union AnimCmd *const gAnims_GLOOM[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_GLOOM_1, +}; + +const union AnimCmd *const gAnims_VILEPLUME[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_VILEPLUME_1, +}; + +const union AnimCmd *const gAnims_PARAS[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_PARAS_1, +}; + +const union AnimCmd *const gAnims_PARASECT[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_PARASECT_1, +}; + +const union AnimCmd *const gAnims_VENONAT[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_VENONAT_1, +}; + +const union AnimCmd *const gAnims_VENOMOTH[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_VENOMOTH_1, +}; + +const union AnimCmd *const gAnims_DIGLETT[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_DIGLETT_1, +}; + +const union AnimCmd *const gAnims_DUGTRIO[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_DUGTRIO_1, +}; + +const union AnimCmd *const gAnims_MEOWTH[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MEOWTH_1, +}; + +const union AnimCmd *const gAnims_PERSIAN[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_PERSIAN_1, +}; + +const union AnimCmd *const gAnims_PSYDUCK[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_PSYDUCK_1, + gAnimCmd_PSYDUCK_2, +}; + +const union AnimCmd *const gAnims_GOLDUCK[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_GOLDUCK_1, + gAnimCmd_GOLDUCK_2, +}; + +const union AnimCmd *const gAnims_MANKEY[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MANKEY_1, +}; + +const union AnimCmd *const gAnims_PRIMEAPE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_PRIMEAPE_1, +}; + +const union AnimCmd *const gAnims_GROWLITHE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_GROWLITHE_1, +}; + +const union AnimCmd *const gAnims_ARCANINE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_ARCANINE_1, +}; + +const union AnimCmd *const gAnims_POLIWAG[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_POLIWAG_1, +}; + +const union AnimCmd *const gAnims_POLIWHIRL[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_POLIWHIRL_1, +}; + +const union AnimCmd *const gAnims_POLIWRATH[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_POLIWRATH_1, +}; + +const union AnimCmd *const gAnims_ABRA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_ABRA_1, +}; + +const union AnimCmd *const gAnims_KADABRA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_KADABRA_1, +}; + +const union AnimCmd *const gAnims_ALAKAZAM[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_ALAKAZAM_1, +}; + +const union AnimCmd *const gAnims_MACHOP[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MACHOP_1, +}; + +const union AnimCmd *const gAnims_MACHOKE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MACHOKE_1, +}; + +const union AnimCmd *const gAnims_MACHAMP[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MACHAMP_1, +}; + +const union AnimCmd *const gAnims_BELLSPROUT[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_BELLSPROUT_1, +}; + +const union AnimCmd *const gAnims_WEEPINBELL[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_WEEPINBELL_1, +}; + +const union AnimCmd *const gAnims_VICTREEBEL[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_VICTREEBEL_1, +}; + +const union AnimCmd *const gAnims_TENTACOOL[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_TENTACOOL_1, +}; + +const union AnimCmd *const gAnims_TENTACRUEL[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_TENTACRUEL_1, +}; + +const union AnimCmd *const gAnims_GEODUDE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_GEODUDE_1, +}; + +const union AnimCmd *const gAnims_GRAVELER[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_GRAVELER_1, +}; + +const union AnimCmd *const gAnims_GOLEM[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_GOLEM_1, +}; + +const union AnimCmd *const gAnims_PONYTA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_PONYTA_1, +}; + +const union AnimCmd *const gAnims_RAPIDASH[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_RAPIDASH_1, +}; + +const union AnimCmd *const gAnims_SLOWPOKE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SLOWPOKE_1, +}; + +const union AnimCmd *const gAnims_SLOWBRO[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SLOWBRO_1, +}; + +const union AnimCmd *const gAnims_MAGNEMITE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MAGNEMITE_1, +}; + +const union AnimCmd *const gAnims_MAGNETON[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MAGNETON_1, +}; + +const union AnimCmd *const gAnims_FARFETCHD[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_FARFETCHD_1, +}; + +const union AnimCmd *const gAnims_DODUO[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_DODUO_1, +}; + +const union AnimCmd *const gAnims_DODRIO[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_DODRIO_1, +}; + +const union AnimCmd *const gAnims_SEEL[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SEEL_1, +}; + +const union AnimCmd *const gAnims_DEWGONG[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_DEWGONG_1, +}; + +const union AnimCmd *const gAnims_GRIMER[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_GRIMER_1, + gAnimCmd_GRIMER_2, +}; + +const union AnimCmd *const gAnims_MUK[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MUK_1, + gAnimCmd_MUK_2, +}; + +const union AnimCmd *const gAnims_SHELLDER[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SHELLDER_1, +}; + +const union AnimCmd *const gAnims_CLOYSTER[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CLOYSTER_1, +}; + +const union AnimCmd *const gAnims_GASTLY[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_GASTLY_1, +}; + +const union AnimCmd *const gAnims_HAUNTER[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_HAUNTER_1, +}; + +const union AnimCmd *const gAnims_GENGAR[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_GENGAR_1, +}; + +const union AnimCmd *const gAnims_ONIX[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_ONIX_1, +}; + +const union AnimCmd *const gAnims_DROWZEE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_DROWZEE_1, +}; + +const union AnimCmd *const gAnims_HYPNO[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_HYPNO_1, +}; + +const union AnimCmd *const gAnims_KRABBY[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_KRABBY_1, +}; + +const union AnimCmd *const gAnims_KINGLER[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_KINGLER_1, +}; + +const union AnimCmd *const gAnims_VOLTORB[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_VOLTORB_1, +}; + +const union AnimCmd *const gAnims_ELECTRODE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_ELECTRODE_1, +}; + +const union AnimCmd *const gAnims_EXEGGCUTE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_EXEGGCUTE_1, +}; + +const union AnimCmd *const gAnims_EXEGGUTOR[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_EXEGGUTOR_1, +}; + +const union AnimCmd *const gAnims_CUBONE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CUBONE_1, +}; + +const union AnimCmd *const gAnims_MAROWAK[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MAROWAK_1, +}; + +const union AnimCmd *const gAnims_HITMONLEE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_HITMONLEE_1, +}; + +const union AnimCmd *const gAnims_HITMONCHAN[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_HITMONCHAN_1, +}; + +const union AnimCmd *const gAnims_LICKITUNG[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_LICKITUNG_1, +}; + +const union AnimCmd *const gAnims_KOFFING[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_KOFFING_1, + gAnimCmd_KOFFING_2, +}; + +const union AnimCmd *const gAnims_WEEZING[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_WEEZING_1, + gAnimCmd_WEEZING_2, +}; + +const union AnimCmd *const gAnims_RHYHORN[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_RHYHORN_1, + gAnimCmd_RHYHORN_2, +}; + +const union AnimCmd *const gAnims_RHYDON[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_RHYDON_1, + gAnimCmd_RHYDON_2, +}; + +const union AnimCmd *const gAnims_CHANSEY[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CHANSEY_1, +}; + +const union AnimCmd *const gAnims_TANGELA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_TANGELA_1, +}; + +const union AnimCmd *const gAnims_KANGASKHAN[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_KANGASKHAN_1, +}; + +const union AnimCmd *const gAnims_HORSEA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_HORSEA_1, + gAnimCmd_HORSEA_2, +}; + +const union AnimCmd *const gAnims_SEADRA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SEADRA_1, + gAnimCmd_SEADRA_2, +}; + +const union AnimCmd *const gAnims_GOLDEEN[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_GOLDEEN_1, +}; + +const union AnimCmd *const gAnims_SEAKING[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SEAKING_1, +}; + +const union AnimCmd *const gAnims_STARYU[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_STARYU_1, + gAnimCmd_STARYU_2, +}; + +const union AnimCmd *const gAnims_STARMIE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_STARMIE_1, + gAnimCmd_STARMIE_2, +}; + +const union AnimCmd *const gAnims_MR_MIME[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MR_MIME_1, +}; + +const union AnimCmd *const gAnims_SCYTHER[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SCYTHER_1, +}; + +const union AnimCmd *const gAnims_JYNX[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_JYNX_1, +}; + +const union AnimCmd *const gAnims_ELECTABUZZ[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_ELECTABUZZ_1, +}; + +const union AnimCmd *const gAnims_MAGMAR[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MAGMAR_1, +}; + +const union AnimCmd *const gAnims_PINSIR[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_PINSIR_1, + gAnimCmd_PINSIR_2, +}; + +const union AnimCmd *const gAnims_TAUROS[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_TAUROS_1, +}; + +const union AnimCmd *const gAnims_MAGIKARP[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MAGIKARP_1, +}; + +const union AnimCmd *const gAnims_GYARADOS[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_GYARADOS_1, +}; + +const union AnimCmd *const gAnims_LAPRAS[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_LAPRAS_1, +}; + +const union AnimCmd *const gAnims_DITTO[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_DITTO_1, +}; + +const union AnimCmd *const gAnims_EEVEE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_EEVEE_1, +}; + +const union AnimCmd *const gAnims_VAPOREON[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_VAPOREON_1, +}; + +const union AnimCmd *const gAnims_JOLTEON[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_JOLTEON_1, +}; + +const union AnimCmd *const gAnims_FLAREON[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_FLAREON_1, +}; + +const union AnimCmd *const gAnims_PORYGON[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_PORYGON_1, +}; + +const union AnimCmd *const gAnims_OMANYTE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_OMANYTE_1, +}; + +const union AnimCmd *const gAnims_OMASTAR[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_OMASTAR_1, +}; + +const union AnimCmd *const gAnims_KABUTO[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_KABUTO_1, +}; + +const union AnimCmd *const gAnims_KABUTOPS[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_KABUTOPS_1, +}; + +const union AnimCmd *const gAnims_AERODACTYL[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_AERODACTYL_1, +}; + +const union AnimCmd *const gAnims_SNORLAX[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SNORLAX_1, +}; + +const union AnimCmd *const gAnims_ARTICUNO[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_ARTICUNO_1, +}; + +const union AnimCmd *const gAnims_ZAPDOS[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_ZAPDOS_1, +}; + +const union AnimCmd *const gAnims_MOLTRES[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MOLTRES_1, +}; + +const union AnimCmd *const gAnims_DRATINI[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_DRATINI_1, +}; + +const union AnimCmd *const gAnims_DRAGONAIR[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_DRAGONAIR_1, +}; + +const union AnimCmd *const gAnims_DRAGONITE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_DRAGONITE_1, +}; + +const union AnimCmd *const gAnims_MEWTWO[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MEWTWO_1, +}; + +const union AnimCmd *const gAnims_MEW[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MEW_1, +}; + +const union AnimCmd *const gAnims_CHIKORITA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CHIKORITA_1, +}; + +const union AnimCmd *const gAnims_BAYLEEF[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_BAYLEEF_1, +}; + +const union AnimCmd *const gAnims_MEGANIUM[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MEGANIUM_1, +}; + +const union AnimCmd *const gAnims_CYNDAQUIL[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CYNDAQUIL_1, +}; + +const union AnimCmd *const gAnims_QUILAVA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_QUILAVA_1, +}; + +const union AnimCmd *const gAnims_TYPHLOSION[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_TYPHLOSION_1, +}; + +const union AnimCmd *const gAnims_TOTODILE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_TOTODILE_1, +}; + +const union AnimCmd *const gAnims_CROCONAW[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CROCONAW_1, +}; + +const union AnimCmd *const gAnims_FERALIGATR[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_FERALIGATR_1, +}; + +const union AnimCmd *const gAnims_SENTRET[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SENTRET_1, +}; + +const union AnimCmd *const gAnims_FURRET[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_FURRET_1, +}; + +const union AnimCmd *const gAnims_HOOTHOOT[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_HOOTHOOT_1, +}; + +const union AnimCmd *const gAnims_NOCTOWL[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_NOCTOWL_1, +}; + +const union AnimCmd *const gAnims_LEDYBA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_LEDYBA_1, +}; + +const union AnimCmd *const gAnims_LEDIAN[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_LEDIAN_1, +}; + +const union AnimCmd *const gAnims_SPINARAK[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SPINARAK_1, +}; + +const union AnimCmd *const gAnims_ARIADOS[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_ARIADOS_1, +}; + +const union AnimCmd *const gAnims_CROBAT[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CROBAT_1, +}; + +const union AnimCmd *const gAnims_CHINCHOU[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CHINCHOU_1, + gAnimCmd_CHINCHOU_2, +}; + +const union AnimCmd *const gAnims_LANTURN[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_LANTURN_1, + gAnimCmd_LANTURN_2, +}; + +const union AnimCmd *const gAnims_PICHU[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_PICHU_1, + gAnimCmd_PICHU_2, +}; + +const union AnimCmd *const gAnims_CLEFFA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CLEFFA_1, +}; + +const union AnimCmd *const gAnims_IGGLYBUFF[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_IGGLYBUFF_1, + gAnimCmd_IGGLYBUFF_2, +}; + +const union AnimCmd *const gAnims_TOGEPI[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_TOGEPI_1, +}; + +const union AnimCmd *const gAnims_TOGETIC[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_TOGETIC_1, +}; + +const union AnimCmd *const gAnims_NATU[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_NATU_1, + gAnimCmd_NATU_2, +}; + +const union AnimCmd *const gAnims_XATU[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_XATU_1, + gAnimCmd_XATU_2, +}; + +const union AnimCmd *const gAnims_MAREEP[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MAREEP_1, +}; + +const union AnimCmd *const gAnims_FLAAFFY[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_FLAAFFY_1, +}; + +const union AnimCmd *const gAnims_AMPHAROS[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_AMPHAROS_1, +}; + +const union AnimCmd *const gAnims_BELLOSSOM[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_BELLOSSOM_1, +}; + +const union AnimCmd *const gAnims_MARILL[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MARILL_1, +}; + +const union AnimCmd *const gAnims_AZUMARILL[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_AZUMARILL_1, +}; + +const union AnimCmd *const gAnims_SUDOWOODO[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SUDOWOODO_1, +}; + +const union AnimCmd *const gAnims_POLITOED[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_POLITOED_1, +}; + +const union AnimCmd *const gAnims_HOPPIP[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_HOPPIP_1, +}; + +const union AnimCmd *const gAnims_SKIPLOOM[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SKIPLOOM_1, +}; + +const union AnimCmd *const gAnims_JUMPLUFF[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_JUMPLUFF_1, +}; + +const union AnimCmd *const gAnims_AIPOM[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_AIPOM_1, +}; + +const union AnimCmd *const gAnims_SUNKERN[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SUNKERN_1, +}; + +const union AnimCmd *const gAnims_SUNFLORA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SUNFLORA_1, +}; + +const union AnimCmd *const gAnims_YANMA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_YANMA_1, +}; + +const union AnimCmd *const gAnims_WOOPER[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_WOOPER_1, +}; + +const union AnimCmd *const gAnims_QUAGSIRE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_QUAGSIRE_1, +}; + +const union AnimCmd *const gAnims_ESPEON[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_ESPEON_1, +}; + +const union AnimCmd *const gAnims_UMBREON[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UMBREON_1, +}; + +const union AnimCmd *const gAnims_MURKROW[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MURKROW_1, +}; + +const union AnimCmd *const gAnims_SLOWKING[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SLOWKING_1, +}; + +const union AnimCmd *const gAnims_MISDREAVUS[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MISDREAVUS_1, +}; + +const union AnimCmd *const gAnims_UNOWN[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_1, +}; + +const union AnimCmd *const gAnims_WOBBUFFET[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_WOBBUFFET_1, + gAnimCmd_WOBBUFFET_2, +}; + +const union AnimCmd *const gAnims_GIRAFARIG[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_GIRAFARIG_1, + gAnimCmd_GIRAFARIG_2, +}; + +const union AnimCmd *const gAnims_PINECO[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_PINECO_1, +}; + +const union AnimCmd *const gAnims_FORRETRESS[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_FORRETRESS_1, +}; + +const union AnimCmd *const gAnims_DUNSPARCE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_DUNSPARCE_1, +}; + +const union AnimCmd *const gAnims_GLIGAR[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_GLIGAR_1, +}; + +const union AnimCmd *const gAnims_STEELIX[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_STEELIX_1, +}; + +const union AnimCmd *const gAnims_SNUBBULL[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SNUBBULL_1, +}; + +const union AnimCmd *const gAnims_GRANBULL[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_GRANBULL_1, +}; + +const union AnimCmd *const gAnims_QWILFISH[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_QWILFISH_1, +}; + +const union AnimCmd *const gAnims_SCIZOR[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SCIZOR_1, +}; + +const union AnimCmd *const gAnims_SHUCKLE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SHUCKLE_1, +}; + +const union AnimCmd *const gAnims_HERACROSS[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_HERACROSS_1, + gAnimCmd_HERACROSS_2, +}; + +const union AnimCmd *const gAnims_SNEASEL[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SNEASEL_1, +}; + +const union AnimCmd *const gAnims_TEDDIURSA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_TEDDIURSA_1, +}; + +const union AnimCmd *const gAnims_URSARING[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_URSARING_1, +}; + +const union AnimCmd *const gAnims_SLUGMA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SLUGMA_1, + gAnimCmd_SLUGMA_2, +}; + +const union AnimCmd *const gAnims_MAGCARGO[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MAGCARGO_1, + gAnimCmd_MAGCARGO_2, +}; + +const union AnimCmd *const gAnims_SWINUB[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SWINUB_1, +}; + +const union AnimCmd *const gAnims_PILOSWINE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_PILOSWINE_1, +}; + +const union AnimCmd *const gAnims_CORSOLA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CORSOLA_1, + gAnimCmd_CORSOLA_2, +}; + +const union AnimCmd *const gAnims_REMORAID[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_REMORAID_1, +}; + +const union AnimCmd *const gAnims_OCTILLERY[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_OCTILLERY_1, +}; + +const union AnimCmd *const gAnims_DELIBIRD[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_DELIBIRD_1, +}; + +const union AnimCmd *const gAnims_MANTINE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MANTINE_1, +}; + +const union AnimCmd *const gAnims_SKARMORY[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SKARMORY_1, + gAnimCmd_SKARMORY_2, +}; + +const union AnimCmd *const gAnims_HOUNDOUR[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_HOUNDOUR_1, +}; + +const union AnimCmd *const gAnims_HOUNDOOM[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_HOUNDOOM_1, +}; + +const union AnimCmd *const gAnims_KINGDRA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_KINGDRA_1, + gAnimCmd_KINGDRA_2, +}; + +const union AnimCmd *const gAnims_PHANPY[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_PHANPY_1, + gAnimCmd_PHANPY_2, +}; + +const union AnimCmd *const gAnims_DONPHAN[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_DONPHAN_1, + gAnimCmd_DONPHAN_2, +}; + +const union AnimCmd *const gAnims_PORYGON2[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_PORYGON2_1, +}; + +const union AnimCmd *const gAnims_STANTLER[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_STANTLER_1, +}; + +const union AnimCmd *const gAnims_SMEARGLE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SMEARGLE_1, +}; + +const union AnimCmd *const gAnims_TYROGUE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_TYROGUE_1, +}; + +const union AnimCmd *const gAnims_HITMONTOP[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_HITMONTOP_1, +}; + +const union AnimCmd *const gAnims_SMOOCHUM[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SMOOCHUM_1, +}; + +const union AnimCmd *const gAnims_ELEKID[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_ELEKID_1, +}; + +const union AnimCmd *const gAnims_MAGBY[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MAGBY_1, +}; + +const union AnimCmd *const gAnims_MILTANK[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MILTANK_1, +}; + +const union AnimCmd *const gAnims_BLISSEY[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_BLISSEY_1, +}; + +const union AnimCmd *const gAnims_RAIKOU[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_RAIKOU_1, +}; + +const union AnimCmd *const gAnims_ENTEI[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_ENTEI_1, +}; + +const union AnimCmd *const gAnims_SUICUNE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SUICUNE_1, +}; + +const union AnimCmd *const gAnims_LARVITAR[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_LARVITAR_1, +}; + +const union AnimCmd *const gAnims_PUPITAR[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_PUPITAR_1, +}; + +const union AnimCmd *const gAnims_TYRANITAR[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_TYRANITAR_1, +}; + +const union AnimCmd *const gAnims_LUGIA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_LUGIA_1, +}; + +const union AnimCmd *const gAnims_HO_OH[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_HO_OH_1, +}; + +const union AnimCmd *const gAnims_CELEBI[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CELEBI_1, +}; + +const union AnimCmd *const gAnims_OLD_UNOWN_B[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_OLD_UNOWN_B_1, +}; + +const union AnimCmd *const gAnims_TREECKO[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_TREECKO_1, +}; + +const union AnimCmd *const gAnims_GROVYLE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_GROVYLE_1, +}; + +const union AnimCmd *const gAnims_SCEPTILE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SCEPTILE_1, +}; + +const union AnimCmd *const gAnims_TORCHIC[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_TORCHIC_1, +}; + +const union AnimCmd *const gAnims_COMBUSKEN[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_COMBUSKEN_1, +}; + +const union AnimCmd *const gAnims_BLAZIKEN[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_BLAZIKEN_1, + gAnimCmd_BLAZIKEN_2, + gAnimCmd_BLAZIKEN_3, + gAnimCmd_BLAZIKEN_4, +}; + +const union AnimCmd *const gAnims_MUDKIP[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MUDKIP_1, +}; + +const union AnimCmd *const gAnims_MARSHTOMP[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MARSHTOMP_1, +}; + +const union AnimCmd *const gAnims_SWAMPERT[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SWAMPERT_1, +}; + +const union AnimCmd *const gAnims_POOCHYENA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_POOCHYENA_1, +}; + +const union AnimCmd *const gAnims_MIGHTYENA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MIGHTYENA_1, +}; + +const union AnimCmd *const gAnims_ZIGZAGOON[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_ZIGZAGOON_1, +}; + +const union AnimCmd *const gAnims_LINOONE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_LINOONE_1, +}; + +const union AnimCmd *const gAnims_WURMPLE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_WURMPLE_1, +}; + +const union AnimCmd *const gAnims_SILCOON[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SILCOON_1, + gAnimCmd_SILCOON_2, +}; + +const union AnimCmd *const gAnims_BEAUTIFLY[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_BEAUTIFLY_1, + gAnimCmd_BEAUTIFLY_2, +}; + +const union AnimCmd *const gAnims_CASCOON[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CASCOON_1, + gAnimCmd_CASCOON_2, +}; + +const union AnimCmd *const gAnims_DUSTOX[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_DUSTOX_1, + gAnimCmd_DUSTOX_2, +}; + +const union AnimCmd *const gAnims_LOTAD[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_LOTAD_1, +}; + +const union AnimCmd *const gAnims_LOMBRE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_LOMBRE_1, +}; + +const union AnimCmd *const gAnims_LUDICOLO[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_LUDICOLO_1, +}; + +const union AnimCmd *const gAnims_SEEDOT[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SEEDOT_1, +}; + +const union AnimCmd *const gAnims_NUZLEAF[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_NUZLEAF_1, +}; + +const union AnimCmd *const gAnims_SHIFTRY[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SHIFTRY_1, +}; + +const union AnimCmd *const gAnims_NINCADA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_NINCADA_1, +}; + +const union AnimCmd *const gAnims_NINJASK[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_NINJASK_1, +}; + +const union AnimCmd *const gAnims_SHEDINJA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SHEDINJA_1, +}; + +const union AnimCmd *const gAnims_TAILLOW[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_TAILLOW_1, +}; + +const union AnimCmd *const gAnims_SWELLOW[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SWELLOW_1, +}; + +const union AnimCmd *const gAnims_SHROOMISH[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SHROOMISH_1, +}; + +const union AnimCmd *const gAnims_BRELOOM[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_BRELOOM_1, +}; + +const union AnimCmd *const gAnims_SPINDA[] ={ + gAnimCmd_General_Frame0, +}; + +const union AnimCmd *const gAnims_WINGULL[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_WINGULL_1, +}; + +const union AnimCmd *const gAnims_PELIPPER[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_PELIPPER_1, +}; + +const union AnimCmd *const gAnims_SURSKIT[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SURSKIT_1, + gAnimCmd_SURSKIT_2, +}; + +const union AnimCmd *const gAnims_MASQUERAIN[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MASQUERAIN_1, + gAnimCmd_MASQUERAIN_2, +}; + +const union AnimCmd *const gAnims_WAILMER[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_WAILMER_1, +}; + +const union AnimCmd *const gAnims_WAILORD[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_WAILORD_1, +}; + +const union AnimCmd *const gAnims_SKITTY[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SKITTY_1, +}; + +const union AnimCmd *const gAnims_DELCATTY[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_DELCATTY_1, +}; + +const union AnimCmd *const gAnims_KECLEON[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_KECLEON_1, +}; + +const union AnimCmd *const gAnims_BALTOY[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_BALTOY_1, +}; + +const union AnimCmd *const gAnims_CLAYDOL[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CLAYDOL_1, +}; + +const union AnimCmd *const gAnims_NOSEPASS[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_NOSEPASS_1, +}; + +const union AnimCmd *const gAnims_TORKOAL[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_TORKOAL_1, +}; + +const union AnimCmd *const gAnims_SABLEYE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SABLEYE_1, +}; + +const union AnimCmd *const gAnims_BARBOACH[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_BARBOACH_1, +}; + +const union AnimCmd *const gAnims_WHISCASH[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_WHISCASH_1, +}; + +const union AnimCmd *const gAnims_LUVDISC[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_LUVDISC_1, +}; + +const union AnimCmd *const gAnims_CORPHISH[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CORPHISH_1, +}; + +const union AnimCmd *const gAnims_CRAWDAUNT[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CRAWDAUNT_1, +}; + +const union AnimCmd *const gAnims_FEEBAS[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_FEEBAS_1, +}; + +const union AnimCmd *const gAnims_MILOTIC[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MILOTIC_1, +}; + +const union AnimCmd *const gAnims_CARVANHA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CARVANHA_1, +}; + +const union AnimCmd *const gAnims_SHARPEDO[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SHARPEDO_1, +}; + +const union AnimCmd *const gAnims_TRAPINCH[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_TRAPINCH_1, +}; + +const union AnimCmd *const gAnims_VIBRAVA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_VIBRAVA_1, +}; + +const union AnimCmd *const gAnims_FLYGON[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_FLYGON_1, +}; + +const union AnimCmd *const gAnims_MAKUHITA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MAKUHITA_1, +}; + +const union AnimCmd *const gAnims_HARIYAMA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_HARIYAMA_1, +}; + +const union AnimCmd *const gAnims_ELECTRIKE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_ELECTRIKE_1, +}; + +const union AnimCmd *const gAnims_MANECTRIC[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MANECTRIC_1, +}; + +const union AnimCmd *const gAnims_NUMEL[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_NUMEL_1, +}; + +const union AnimCmd *const gAnims_CAMERUPT[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CAMERUPT_1, +}; + +const union AnimCmd *const gAnims_SPHEAL[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SPHEAL_1, +}; + +const union AnimCmd *const gAnims_SEALEO[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SEALEO_1, +}; + +const union AnimCmd *const gAnims_WALREIN[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_WALREIN_1, +}; + +const union AnimCmd *const gAnims_CACNEA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CACNEA_1, +}; + +const union AnimCmd *const gAnims_CACTURNE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CACTURNE_1, +}; + +const union AnimCmd *const gAnims_SNORUNT[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SNORUNT_1, +}; + +const union AnimCmd *const gAnims_GLALIE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_GLALIE_1, +}; + +const union AnimCmd *const gAnims_LUNATONE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_LUNATONE_1, + gAnimCmd_LUNATONE_2, +}; + +const union AnimCmd *const gAnims_SOLROCK[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SOLROCK_1, + gAnimCmd_SOLROCK_2, +}; + +const union AnimCmd *const gAnims_AZURILL[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_AZURILL_1, +}; + +const union AnimCmd *const gAnims_SPOINK[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SPOINK_1, +}; + +const union AnimCmd *const gAnims_GRUMPIG[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_GRUMPIG_1, +}; + +const union AnimCmd *const gAnims_PLUSLE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_PLUSLE_1, +}; + +const union AnimCmd *const gAnims_MINUN[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MINUN_1, +}; + +const union AnimCmd *const gAnims_MAWILE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MAWILE_1, +}; + +const union AnimCmd *const gAnims_MEDITITE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MEDITITE_1, +}; + +const union AnimCmd *const gAnims_MEDICHAM[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_MEDICHAM_1, +}; + +const union AnimCmd *const gAnims_SWABLU[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SWABLU_1, + gAnimCmd_SWABLU_2, +}; + +const union AnimCmd *const gAnims_ALTARIA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_ALTARIA_1, + gAnimCmd_ALTARIA_2, +}; + +const union AnimCmd *const gAnims_WYNAUT[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_WYNAUT_1, +}; + +const union AnimCmd *const gAnims_DUSKULL[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_DUSKULL_1, +}; + +const union AnimCmd *const gAnims_DUSCLOPS[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_DUSCLOPS_1, +}; + +const union AnimCmd *const gAnims_ROSELIA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_ROSELIA_1, +}; + +const union AnimCmd *const gAnims_SLAKOTH[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SLAKOTH_1, +}; + +const union AnimCmd *const gAnims_VIGOROTH[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_VIGOROTH_1, +}; + +const union AnimCmd *const gAnims_SLAKING[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SLAKING_1, +}; + +const union AnimCmd *const gAnims_GULPIN[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_GULPIN_1, +}; + +const union AnimCmd *const gAnims_SWALOT[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SWALOT_1, +}; + +const union AnimCmd *const gAnims_TROPIUS[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_TROPIUS_1, +}; + +const union AnimCmd *const gAnims_WHISMUR[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_WHISMUR_1, +}; + +const union AnimCmd *const gAnims_LOUDRED[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_LOUDRED_1, +}; + +const union AnimCmd *const gAnims_EXPLOUD[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_EXPLOUD_1, +}; + +const union AnimCmd *const gAnims_CLAMPERL[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CLAMPERL_1, +}; + +const union AnimCmd *const gAnims_HUNTAIL[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_HUNTAIL_1, +}; + +const union AnimCmd *const gAnims_GOREBYSS[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_GOREBYSS_1, +}; + +const union AnimCmd *const gAnims_ABSOL[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_ABSOL_1, +}; + +const union AnimCmd *const gAnims_SHUPPET[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SHUPPET_1, +}; + +const union AnimCmd *const gAnims_BANETTE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_BANETTE_1, +}; + +const union AnimCmd *const gAnims_SEVIPER[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SEVIPER_1, +}; + +const union AnimCmd *const gAnims_ZANGOOSE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_ZANGOOSE_1, +}; + +const union AnimCmd *const gAnims_RELICANTH[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_RELICANTH_1, +}; + +const union AnimCmd *const gAnims_ARON[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_ARON_1, +}; + +const union AnimCmd *const gAnims_LAIRON[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_LAIRON_1, +}; + +const union AnimCmd *const gAnims_AGGRON[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_AGGRON_1, +}; + +const union AnimCmd *const gAnims_CASTFORM[] ={ + gAnimCmd_CASTFORM_0, + gAnimCmd_CASTFORM_1, + gAnimCmd_CASTFORM_2, + gAnimCmd_CASTFORM_3, +}; + +const union AnimCmd *const gAnims_VOLBEAT[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_VOLBEAT_1, +}; + +const union AnimCmd *const gAnims_ILLUMISE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_ILLUMISE_1, +}; + +const union AnimCmd *const gAnims_LILEEP[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_LILEEP_1, +}; + +const union AnimCmd *const gAnims_CRADILY[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CRADILY_1, +}; + +const union AnimCmd *const gAnims_ANORITH[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_ANORITH_1, +}; + +const union AnimCmd *const gAnims_ARMALDO[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_ARMALDO_1, +}; + +const union AnimCmd *const gAnims_RALTS[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_RALTS_1, +}; + +const union AnimCmd *const gAnims_KIRLIA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_KIRLIA_1, +}; + +const union AnimCmd *const gAnims_GARDEVOIR[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_GARDEVOIR_1, +}; + +const union AnimCmd *const gAnims_BAGON[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_BAGON_1, +}; + +const union AnimCmd *const gAnims_SHELGON[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SHELGON_1, +}; + +const union AnimCmd *const gAnims_SALAMENCE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_SALAMENCE_1, +}; + +const union AnimCmd *const gAnims_BELDUM[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_BELDUM_1, +}; + +const union AnimCmd *const gAnims_METANG[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_METANG_1, +}; + +const union AnimCmd *const gAnims_METAGROSS[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_METAGROSS_1, +}; + +const union AnimCmd *const gAnims_REGIROCK[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_REGIROCK_1, + gAnimCmd_REGIROCK_2, +}; + +const union AnimCmd *const gAnims_REGICE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_REGICE_1, +}; + +const union AnimCmd *const gAnims_REGISTEEL[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_REGISTEEL_1, + gAnimCmd_REGISTEEL_2, +}; + +const union AnimCmd *const gAnims_KYOGRE[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_KYOGRE_1, + gAnimCmd_KYOGRE_2, +}; + +const union AnimCmd *const gAnims_GROUDON[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_GROUDON_1, + gAnimCmd_GROUDON_2, +}; + +const union AnimCmd *const gAnims_RAYQUAZA[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_RAYQUAZA_1, + gAnimCmd_RAYQUAZA_2, +}; + +const union AnimCmd *const gAnims_LATIAS[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_LATIAS_1, + gAnimCmd_LATIAS_2, +}; + +const union AnimCmd *const gAnims_LATIOS[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_LATIOS_1, + gAnimCmd_LATIOS_2, +}; + +const union AnimCmd *const gAnims_JIRACHI[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_JIRACHI_1, + gAnimCmd_JIRACHI_2, +}; + +const union AnimCmd *const gAnims_DEOXYS[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_DEOXYS_1, + gAnimCmd_DEOXYS_2, +}; + +const union AnimCmd *const gAnims_CHIMECHO[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_CHIMECHO_1, +}; + +const union AnimCmd *const gAnims_EGG[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_EGG_1, +}; + +const union AnimCmd *const gAnims_UNOWN_B[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_B_1, +}; + +const union AnimCmd *const gAnims_UNOWN_C[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_C_1, +}; + +const union AnimCmd *const gAnims_UNOWN_D[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_D_1, +}; + +const union AnimCmd *const gAnims_UNOWN_E[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_E_1, +}; + +const union AnimCmd *const gAnims_UNOWN_F[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_F_1, +}; + +const union AnimCmd *const gAnims_UNOWN_G[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_G_1, +}; + +const union AnimCmd *const gAnims_UNOWN_H[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_H_1, +}; + +const union AnimCmd *const gAnims_UNOWN_I[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_I_1, +}; + +const union AnimCmd *const gAnims_UNOWN_J[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_J_1, +}; + +const union AnimCmd *const gAnims_UNOWN_K[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_K_1, +}; + +const union AnimCmd *const gAnims_UNOWN_L[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_L_1, +}; + +const union AnimCmd *const gAnims_UNOWN_M[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_M_1, +}; + +const union AnimCmd *const gAnims_UNOWN_N[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_N_1, +}; + +const union AnimCmd *const gAnims_UNOWN_O[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_O_1, +}; + +const union AnimCmd *const gAnims_UNOWN_P[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_P_1, +}; + +const union AnimCmd *const gAnims_UNOWN_Q[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_Q_1, +}; + +const union AnimCmd *const gAnims_UNOWN_R[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_R_1, +}; + +const union AnimCmd *const gAnims_UNOWN_S[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_S_1, +}; + +const union AnimCmd *const gAnims_UNOWN_T[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_T_1, +}; + +const union AnimCmd *const gAnims_UNOWN_U[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_U_1, +}; + +const union AnimCmd *const gAnims_UNOWN_V[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_V_1, +}; + +const union AnimCmd *const gAnims_UNOWN_W[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_W_1, +}; + +const union AnimCmd *const gAnims_UNOWN_X[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_X_1, +}; + +const union AnimCmd *const gAnims_UNOWN_Y[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_Y_1, +}; + +const union AnimCmd *const gAnims_UNOWN_Z[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_Z_1, +}; + +const union AnimCmd *const gAnims_UNOWN_EMARK[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_EMARK_1, +}; + +const union AnimCmd *const gAnims_UNOWN_QMARK[] ={ + gAnimCmd_General_Frame0, + gAnimCmd_UNOWN_QMARK_1, +}; + +const union AnimCmd* const * const gMonAnimationsSpriteAnimsPtrTable[] = +{ + gAnims_NONE, + gAnims_BULBASAUR, + gAnims_IVYSAUR, + gAnims_VENUSAUR, + gAnims_CHARMANDER, + gAnims_CHARMELEON, + gAnims_CHARIZARD, + gAnims_SQUIRTLE, + gAnims_WARTORTLE, + gAnims_BLASTOISE, + gAnims_CATERPIE, + gAnims_METAPOD, + gAnims_BUTTERFREE, + gAnims_WEEDLE, + gAnims_KAKUNA, + gAnims_BEEDRILL, + gAnims_PIDGEY, + gAnims_PIDGEOTTO, + gAnims_PIDGEOT, + gAnims_RATTATA, + gAnims_RATICATE, + gAnims_SPEAROW, + gAnims_FEAROW, + gAnims_EKANS, + gAnims_ARBOK, + gAnims_PIKACHU, + gAnims_RAICHU, + gAnims_SANDSHREW, + gAnims_SANDSLASH, + gAnims_NIDORAN_F, + gAnims_NIDORINA, + gAnims_NIDOQUEEN, + gAnims_NIDORAN_M, + gAnims_NIDORINO, + gAnims_NIDOKING, + gAnims_CLEFAIRY, + gAnims_CLEFABLE, + gAnims_VULPIX, + gAnims_NINETALES, + gAnims_JIGGLYPUFF, + gAnims_WIGGLYTUFF, + gAnims_ZUBAT, + gAnims_GOLBAT, + gAnims_ODDISH, + gAnims_GLOOM, + gAnims_VILEPLUME, + gAnims_PARAS, + gAnims_PARASECT, + gAnims_VENONAT, + gAnims_VENOMOTH, + gAnims_DIGLETT, + gAnims_DUGTRIO, + gAnims_MEOWTH, + gAnims_PERSIAN, + gAnims_PSYDUCK, + gAnims_GOLDUCK, + gAnims_MANKEY, + gAnims_PRIMEAPE, + gAnims_GROWLITHE, + gAnims_ARCANINE, + gAnims_POLIWAG, + gAnims_POLIWHIRL, + gAnims_POLIWRATH, + gAnims_ABRA, + gAnims_KADABRA, + gAnims_ALAKAZAM, + gAnims_MACHOP, + gAnims_MACHOKE, + gAnims_MACHAMP, + gAnims_BELLSPROUT, + gAnims_WEEPINBELL, + gAnims_VICTREEBEL, + gAnims_TENTACOOL, + gAnims_TENTACRUEL, + gAnims_GEODUDE, + gAnims_GRAVELER, + gAnims_GOLEM, + gAnims_PONYTA, + gAnims_RAPIDASH, + gAnims_SLOWPOKE, + gAnims_SLOWBRO, + gAnims_MAGNEMITE, + gAnims_MAGNETON, + gAnims_FARFETCHD, + gAnims_DODUO, + gAnims_DODRIO, + gAnims_SEEL, + gAnims_DEWGONG, + gAnims_GRIMER, + gAnims_MUK, + gAnims_SHELLDER, + gAnims_CLOYSTER, + gAnims_GASTLY, + gAnims_HAUNTER, + gAnims_GENGAR, + gAnims_ONIX, + gAnims_DROWZEE, + gAnims_HYPNO, + gAnims_KRABBY, + gAnims_KINGLER, + gAnims_VOLTORB, + gAnims_ELECTRODE, + gAnims_EXEGGCUTE, + gAnims_EXEGGUTOR, + gAnims_CUBONE, + gAnims_MAROWAK, + gAnims_HITMONLEE, + gAnims_HITMONCHAN, + gAnims_LICKITUNG, + gAnims_KOFFING, + gAnims_WEEZING, + gAnims_RHYHORN, + gAnims_RHYDON, + gAnims_CHANSEY, + gAnims_TANGELA, + gAnims_KANGASKHAN, + gAnims_HORSEA, + gAnims_SEADRA, + gAnims_GOLDEEN, + gAnims_SEAKING, + gAnims_STARYU, + gAnims_STARMIE, + gAnims_MR_MIME, + gAnims_SCYTHER, + gAnims_JYNX, + gAnims_ELECTABUZZ, + gAnims_MAGMAR, + gAnims_PINSIR, + gAnims_TAUROS, + gAnims_MAGIKARP, + gAnims_GYARADOS, + gAnims_LAPRAS, + gAnims_DITTO, + gAnims_EEVEE, + gAnims_VAPOREON, + gAnims_JOLTEON, + gAnims_FLAREON, + gAnims_PORYGON, + gAnims_OMANYTE, + gAnims_OMASTAR, + gAnims_KABUTO, + gAnims_KABUTOPS, + gAnims_AERODACTYL, + gAnims_SNORLAX, + gAnims_ARTICUNO, + gAnims_ZAPDOS, + gAnims_MOLTRES, + gAnims_DRATINI, + gAnims_DRAGONAIR, + gAnims_DRAGONITE, + gAnims_MEWTWO, + gAnims_MEW, + gAnims_CHIKORITA, + gAnims_BAYLEEF, + gAnims_MEGANIUM, + gAnims_CYNDAQUIL, + gAnims_QUILAVA, + gAnims_TYPHLOSION, + gAnims_TOTODILE, + gAnims_CROCONAW, + gAnims_FERALIGATR, + gAnims_SENTRET, + gAnims_FURRET, + gAnims_HOOTHOOT, + gAnims_NOCTOWL, + gAnims_LEDYBA, + gAnims_LEDIAN, + gAnims_SPINARAK, + gAnims_ARIADOS, + gAnims_CROBAT, + gAnims_CHINCHOU, + gAnims_LANTURN, + gAnims_PICHU, + gAnims_CLEFFA, + gAnims_IGGLYBUFF, + gAnims_TOGEPI, + gAnims_TOGETIC, + gAnims_NATU, + gAnims_XATU, + gAnims_MAREEP, + gAnims_FLAAFFY, + gAnims_AMPHAROS, + gAnims_BELLOSSOM, + gAnims_MARILL, + gAnims_AZUMARILL, + gAnims_SUDOWOODO, + gAnims_POLITOED, + gAnims_HOPPIP, + gAnims_SKIPLOOM, + gAnims_JUMPLUFF, + gAnims_AIPOM, + gAnims_SUNKERN, + gAnims_SUNFLORA, + gAnims_YANMA, + gAnims_WOOPER, + gAnims_QUAGSIRE, + gAnims_ESPEON, + gAnims_UMBREON, + gAnims_MURKROW, + gAnims_SLOWKING, + gAnims_MISDREAVUS, + gAnims_UNOWN, + gAnims_WOBBUFFET, + gAnims_GIRAFARIG, + gAnims_PINECO, + gAnims_FORRETRESS, + gAnims_DUNSPARCE, + gAnims_GLIGAR, + gAnims_STEELIX, + gAnims_SNUBBULL, + gAnims_GRANBULL, + gAnims_QWILFISH, + gAnims_SCIZOR, + gAnims_SHUCKLE, + gAnims_HERACROSS, + gAnims_SNEASEL, + gAnims_TEDDIURSA, + gAnims_URSARING, + gAnims_SLUGMA, + gAnims_MAGCARGO, + gAnims_SWINUB, + gAnims_PILOSWINE, + gAnims_CORSOLA, + gAnims_REMORAID, + gAnims_OCTILLERY, + gAnims_DELIBIRD, + gAnims_MANTINE, + gAnims_SKARMORY, + gAnims_HOUNDOUR, + gAnims_HOUNDOOM, + gAnims_KINGDRA, + gAnims_PHANPY, + gAnims_DONPHAN, + gAnims_PORYGON2, + gAnims_STANTLER, + gAnims_SMEARGLE, + gAnims_TYROGUE, + gAnims_HITMONTOP, + gAnims_SMOOCHUM, + gAnims_ELEKID, + gAnims_MAGBY, + gAnims_MILTANK, + gAnims_BLISSEY, + gAnims_RAIKOU, + gAnims_ENTEI, + gAnims_SUICUNE, + gAnims_LARVITAR, + gAnims_PUPITAR, + gAnims_TYRANITAR, + gAnims_LUGIA, + gAnims_HO_OH, + gAnims_CELEBI, + gAnims_OLD_UNOWN_B, + gAnims_OLD_UNOWN_B, + gAnims_OLD_UNOWN_B, + gAnims_OLD_UNOWN_B, + gAnims_OLD_UNOWN_B, + gAnims_OLD_UNOWN_B, + gAnims_OLD_UNOWN_B, + gAnims_OLD_UNOWN_B, + gAnims_OLD_UNOWN_B, + gAnims_OLD_UNOWN_B, + gAnims_OLD_UNOWN_B, + gAnims_OLD_UNOWN_B, + gAnims_OLD_UNOWN_B, + gAnims_OLD_UNOWN_B, + gAnims_OLD_UNOWN_B, + gAnims_OLD_UNOWN_B, + gAnims_OLD_UNOWN_B, + gAnims_OLD_UNOWN_B, + gAnims_OLD_UNOWN_B, + gAnims_OLD_UNOWN_B, + gAnims_OLD_UNOWN_B, + gAnims_OLD_UNOWN_B, + gAnims_OLD_UNOWN_B, + gAnims_OLD_UNOWN_B, + gAnims_OLD_UNOWN_B, + gAnims_TREECKO, + gAnims_GROVYLE, + gAnims_SCEPTILE, + gAnims_TORCHIC, + gAnims_COMBUSKEN, + gAnims_BLAZIKEN, + gAnims_MUDKIP, + gAnims_MARSHTOMP, + gAnims_SWAMPERT, + gAnims_POOCHYENA, + gAnims_MIGHTYENA, + gAnims_ZIGZAGOON, + gAnims_LINOONE, + gAnims_WURMPLE, + gAnims_SILCOON, + gAnims_BEAUTIFLY, + gAnims_CASCOON, + gAnims_DUSTOX, + gAnims_LOTAD, + gAnims_LOMBRE, + gAnims_LUDICOLO, + gAnims_SEEDOT, + gAnims_NUZLEAF, + gAnims_SHIFTRY, + gAnims_NINCADA, + gAnims_NINJASK, + gAnims_SHEDINJA, + gAnims_TAILLOW, + gAnims_SWELLOW, + gAnims_SHROOMISH, + gAnims_BRELOOM, + gAnims_SPINDA, + gAnims_WINGULL, + gAnims_PELIPPER, + gAnims_SURSKIT, + gAnims_MASQUERAIN, + gAnims_WAILMER, + gAnims_WAILORD, + gAnims_SKITTY, + gAnims_DELCATTY, + gAnims_KECLEON, + gAnims_BALTOY, + gAnims_CLAYDOL, + gAnims_NOSEPASS, + gAnims_TORKOAL, + gAnims_SABLEYE, + gAnims_BARBOACH, + gAnims_WHISCASH, + gAnims_LUVDISC, + gAnims_CORPHISH, + gAnims_CRAWDAUNT, + gAnims_FEEBAS, + gAnims_MILOTIC, + gAnims_CARVANHA, + gAnims_SHARPEDO, + gAnims_TRAPINCH, + gAnims_VIBRAVA, + gAnims_FLYGON, + gAnims_MAKUHITA, + gAnims_HARIYAMA, + gAnims_ELECTRIKE, + gAnims_MANECTRIC, + gAnims_NUMEL, + gAnims_CAMERUPT, + gAnims_SPHEAL, + gAnims_SEALEO, + gAnims_WALREIN, + gAnims_CACNEA, + gAnims_CACTURNE, + gAnims_SNORUNT, + gAnims_GLALIE, + gAnims_LUNATONE, + gAnims_SOLROCK, + gAnims_AZURILL, + gAnims_SPOINK, + gAnims_GRUMPIG, + gAnims_PLUSLE, + gAnims_MINUN, + gAnims_MAWILE, + gAnims_MEDITITE, + gAnims_MEDICHAM, + gAnims_SWABLU, + gAnims_ALTARIA, + gAnims_WYNAUT, + gAnims_DUSKULL, + gAnims_DUSCLOPS, + gAnims_ROSELIA, + gAnims_SLAKOTH, + gAnims_VIGOROTH, + gAnims_SLAKING, + gAnims_GULPIN, + gAnims_SWALOT, + gAnims_TROPIUS, + gAnims_WHISMUR, + gAnims_LOUDRED, + gAnims_EXPLOUD, + gAnims_CLAMPERL, + gAnims_HUNTAIL, + gAnims_GOREBYSS, + gAnims_ABSOL, + gAnims_SHUPPET, + gAnims_BANETTE, + gAnims_SEVIPER, + gAnims_ZANGOOSE, + gAnims_RELICANTH, + gAnims_ARON, + gAnims_LAIRON, + gAnims_AGGRON, + gAnims_CASTFORM, + gAnims_VOLBEAT, + gAnims_ILLUMISE, + gAnims_LILEEP, + gAnims_CRADILY, + gAnims_ANORITH, + gAnims_ARMALDO, + gAnims_RALTS, + gAnims_KIRLIA, + gAnims_GARDEVOIR, + gAnims_BAGON, + gAnims_SHELGON, + gAnims_SALAMENCE, + gAnims_BELDUM, + gAnims_METANG, + gAnims_METAGROSS, + gAnims_REGIROCK, + gAnims_REGICE, + gAnims_REGISTEEL, + gAnims_KYOGRE, + gAnims_GROUDON, + gAnims_RAYQUAZA, + gAnims_LATIAS, + gAnims_LATIOS, + gAnims_JIRACHI, + gAnims_DEOXYS, + gAnims_CHIMECHO, + gAnims_EGG, + gAnims_UNOWN_B, + gAnims_UNOWN_C, + gAnims_UNOWN_D, + gAnims_UNOWN_E, + gAnims_UNOWN_F, + gAnims_UNOWN_G, + gAnims_UNOWN_H, + gAnims_UNOWN_I, + gAnims_UNOWN_J, + gAnims_UNOWN_K, + gAnims_UNOWN_L, + gAnims_UNOWN_M, + gAnims_UNOWN_N, + gAnims_UNOWN_O, + gAnims_UNOWN_P, + gAnims_UNOWN_Q, + gAnims_UNOWN_R, + gAnims_UNOWN_S, + gAnims_UNOWN_T, + gAnims_UNOWN_U, + gAnims_UNOWN_V, + gAnims_UNOWN_W, + gAnims_UNOWN_X, + gAnims_UNOWN_Y, + gAnims_UNOWN_Z, + gAnims_UNOWN_EMARK, + gAnims_UNOWN_QMARK, +}; diff --git a/src/data/pokemon_graphics/front_pic_coordinates.h b/src/data/pokemon_graphics/front_pic_coordinates.h new file mode 100644 index 000000000..fde423570 --- /dev/null +++ b/src/data/pokemon_graphics/front_pic_coordinates.h @@ -0,0 +1,443 @@ +const struct MonCoords gMonFrontPicCoords[] = +{ + {0x88, 0x00}, // SPECIES_NONE + {0x45, 0x0e}, // SPECIES_BULBASAUR + {0x56, 0x0a}, // SPECIES_IVYSAUR + {0x88, 0x03}, // SPECIES_VENUSAUR + {0x55, 0x0c}, // SPECIES_CHARMANDER + {0x66, 0x09}, // SPECIES_CHARMELEON + {0x88, 0x01}, // SPECIES_CHARIZARD + {0x65, 0x0d}, // SPECIES_SQUIRTLE + {0x66, 0x08}, // SPECIES_WARTORTLE + {0x88, 0x00}, // SPECIES_BLASTOISE + {0x45, 0x10}, // SPECIES_CATERPIE + {0x54, 0x14}, // SPECIES_METAPOD + {0x76, 0x09}, // SPECIES_BUTTERFREE + {0x54, 0x12}, // SPECIES_WEEDLE + {0x45, 0x0e}, // SPECIES_KAKUNA + {0x86, 0x09}, // SPECIES_BEEDRILL + {0x65, 0x0d}, // SPECIES_PIDGEY + {0x67, 0x0b}, // SPECIES_PIDGEOTTO + {0x88, 0x01}, // SPECIES_PIDGEOT + {0x44, 0x10}, // SPECIES_RATTATA + {0x66, 0x0b}, // SPECIES_RATICATE + {0x45, 0x0f}, // SPECIES_SPEAROW + {0x78, 0x00}, // SPECIES_FEAROW + {0x65, 0x0c}, // SPECIES_EKANS + {0x88, 0x02}, // SPECIES_ARBOK + {0x67, 0x09}, // SPECIES_PIKACHU + {0x67, 0x04}, // SPECIES_RAICHU + {0x55, 0x0e}, // SPECIES_SANDSHREW + {0x76, 0x09}, // SPECIES_SANDSLASH + {0x45, 0x0f}, // SPECIES_NIDORAN_F + {0x66, 0x0b}, // SPECIES_NIDORINA + {0x78, 0x03}, // SPECIES_NIDOQUEEN + {0x55, 0x0c}, // SPECIES_NIDORAN_M + {0x66, 0x09}, // SPECIES_NIDORINO + {0x78, 0x02}, // SPECIES_NIDOKING + {0x55, 0x10}, // SPECIES_CLEFAIRY + {0x66, 0x08}, // SPECIES_CLEFABLE + {0x65, 0x0c}, // SPECIES_VULPIX + {0x88, 0x03}, // SPECIES_NINETALES + {0x45, 0x10}, // SPECIES_JIGGLYPUFF + {0x67, 0x08}, // SPECIES_WIGGLYTUFF + {0x67, 0x06}, // SPECIES_ZUBAT + {0x88, 0x03}, // SPECIES_GOLBAT + {0x45, 0x0f}, // SPECIES_ODDISH + {0x66, 0x0a}, // SPECIES_GLOOM + {0x77, 0x06}, // SPECIES_VILEPLUME + {0x55, 0x0f}, // SPECIES_PARAS + {0x86, 0x08}, // SPECIES_VENONAT + {0x66, 0x08}, // SPECIES_VENOMOTH + {0x88, 0x02}, // SPECIES_DIGLETT + {0x54, 0x12}, // SPECIES_DUGTRIO + {0x75, 0x0d}, // SPECIES_MEOWTH + {0x55, 0x0c}, // SPECIES_PERSIAN + {0x77, 0x07}, // SPECIES_PSYDUCK + {0x56, 0x09}, // SPECIES_GOLDUCK + {0x78, 0x02}, // SPECIES_MANKEY + {0x65, 0x0e}, // SPECIES_PRIMEAPE + {0x77, 0x07}, // SPECIES_GROWLITHE + {0x66, 0x0b}, // SPECIES_ARCANINE + {0x88, 0x02}, // SPECIES_POLIWAG + {0x74, 0x13}, // SPECIES_POLIWHIRL + {0x76, 0x0a}, // SPECIES_POLIWRATH + {0x76, 0x08}, // SPECIES_ABRA + {0x66, 0x0b}, // SPECIES_KADABRA + {0x77, 0x05}, // SPECIES_ALAKAZAM + {0x87, 0x04}, // SPECIES_MACHOP + {0x56, 0x0b}, // SPECIES_MACHOKE + {0x67, 0x06}, // SPECIES_MACHAMP + {0x88, 0x01}, // SPECIES_BELLSPROUT + {0x65, 0x0f}, // SPECIES_WEEPINBELL + {0x66, 0x0b}, // SPECIES_VICTREEBEL + {0x77, 0x05}, // SPECIES_TENTACOOL + {0x46, 0x09}, // SPECIES_TENTACRUEL + {0x87, 0x04}, // SPECIES_GEODUDE + {0x54, 0x12}, // SPECIES_GRAVELER + {0x87, 0x04}, // SPECIES_GOLEM + {0x77, 0x05}, // SPECIES_PONYTA + {0x66, 0x08}, // SPECIES_RAPIDASH + {0x88, 0x01}, // SPECIES_SLOWPOKE + {0x66, 0x0b}, // SPECIES_SLOWBRO + {0x86, 0x08}, // SPECIES_MAGNEMITE + {0x43, 0x15}, // SPECIES_MAGNETON + {0x76, 0x08}, // SPECIES_FARFETCHD + {0x66, 0x09}, // SPECIES_DODUO + {0x57, 0x05}, // SPECIES_DODRIO + {0x88, 0x00}, // SPECIES_SEEL + {0x76, 0x0a}, // SPECIES_DEWGONG + {0x87, 0x07}, // SPECIES_GRIMER + {0x65, 0x0c}, // SPECIES_MUK + {0x87, 0x04}, // SPECIES_SHELLDER + {0x55, 0x10}, // SPECIES_CLOYSTER + {0x87, 0x05}, // SPECIES_GASTLY + {0x77, 0x06}, // SPECIES_HAUNTER + {0x77, 0x05}, // SPECIES_GENGAR + {0x77, 0x05}, // SPECIES_ONIX + {0x78, 0x02}, // SPECIES_DROWZEE + {0x77, 0x07}, // SPECIES_HYPNO + {0x77, 0x04}, // SPECIES_KRABBY + {0x65, 0x0d}, // SPECIES_KINGLER + {0x88, 0x03}, // SPECIES_VOLTORB + {0x44, 0x13}, // SPECIES_ELECTRODE + {0x55, 0x0e}, // SPECIES_EXEGGCUTE + {0x87, 0x07}, // SPECIES_EXEGGUTOR + {0x88, 0x00}, // SPECIES_CUBONE + {0x55, 0x0f}, // SPECIES_MAROWAK + {0x76, 0x0b}, // SPECIES_HITMONLEE + {0x87, 0x04}, // SPECIES_HITMONCHAN + {0x67, 0x04}, // SPECIES_LICKITUNG + {0x86, 0x08}, // SPECIES_KOFFING + {0x66, 0x08}, // SPECIES_WEEZING + {0x88, 0x02}, // SPECIES_RHYHORN + {0x76, 0x09}, // SPECIES_RHYDON + {0x88, 0x02}, // SPECIES_CHANSEY + {0x76, 0x09}, // SPECIES_TANGELA + {0x67, 0x07}, // SPECIES_KANGASKHAN + {0x88, 0x00}, // SPECIES_HORSEA + {0x45, 0x0f}, // SPECIES_SEADRA + {0x67, 0x07}, // SPECIES_GOLDEEN + {0x66, 0x0a}, // SPECIES_SEAKING + {0x77, 0x04}, // SPECIES_STARYU + {0x66, 0x0a}, // SPECIES_STARMIE + {0x77, 0x06}, // SPECIES_MR_MIME + {0x66, 0x08}, // SPECIES_SCYTHER + {0x88, 0x00}, // SPECIES_JYNX + {0x77, 0x04}, // SPECIES_ELECTABUZZ + {0x78, 0x02}, // SPECIES_MAGMAR + {0x77, 0x04}, // SPECIES_PINSIR + {0x77, 0x04}, // SPECIES_TAUROS + {0x78, 0x00}, // SPECIES_MAGIKARP + {0x67, 0x06}, // SPECIES_GYARADOS + {0x88, 0x08}, // SPECIES_LAPRAS + {0x85, 0x0d}, // SPECIES_DITTO + {0x54, 0x11}, // SPECIES_EEVEE + {0x56, 0x09}, // SPECIES_VAPOREON + {0x67, 0x06}, // SPECIES_JOLTEON + {0x76, 0x09}, // SPECIES_FLAREON + {0x66, 0x0a}, // SPECIES_PORYGON + {0x55, 0x0d}, // SPECIES_OMANYTE + {0x45, 0x0f}, // SPECIES_OMASTAR + {0x67, 0x07}, // SPECIES_KABUTO + {0x54, 0x11}, // SPECIES_KABUTOPS + {0x88, 0x03}, // SPECIES_AERODACTYL + {0x88, 0x01}, // SPECIES_SNORLAX + {0x87, 0x05}, // SPECIES_ARTICUNO + {0x88, 0x03}, // SPECIES_ZAPDOS + {0x87, 0x04}, // SPECIES_MOLTRES + {0x88, 0x00}, // SPECIES_DRATINI + {0x75, 0x0e}, // SPECIES_DRAGONAIR + {0x87, 0x06}, // SPECIES_DRAGONITE + {0x88, 0x00}, // SPECIES_MEWTWO + {0x88, 0x00}, // SPECIES_MEW + {0x55, 0x0d}, // SPECIES_CHIKORITA + {0x75, 0x0d}, // SPECIES_BAYLEEF + {0x77, 0x04}, // SPECIES_MEGANIUM + {0x88, 0x00}, // SPECIES_CYNDAQUIL + {0x55, 0x0e}, // SPECIES_QUILAVA + {0x76, 0x08}, // SPECIES_TYPHLOSION + {0x78, 0x00}, // SPECIES_TOTODILE + {0x55, 0x0f}, // SPECIES_CROCONAW + {0x67, 0x06}, // SPECIES_FERALIGATR + {0x88, 0x00}, // SPECIES_SENTRET + {0x47, 0x04}, // SPECIES_FURRET + {0x67, 0x07}, // SPECIES_HOOTHOOT + {0x55, 0x0d}, // SPECIES_NOCTOWL + {0x58, 0x03}, // SPECIES_LEDYBA + {0x56, 0x0c}, // SPECIES_LEDIAN + {0x67, 0x04}, // SPECIES_SPINARAK + {0x54, 0x13}, // SPECIES_ARIADOS + {0x87, 0x05}, // SPECIES_CROBAT + {0x88, 0x00}, // SPECIES_CHINCHOU + {0x75, 0x10}, // SPECIES_LANTURN + {0x87, 0x0b}, // SPECIES_PICHU + {0x45, 0x0c}, // SPECIES_CLEFFA + {0x44, 0x14}, // SPECIES_IGGLYBUFF + {0x44, 0x12}, // SPECIES_TOGEPI + {0x34, 0x14}, // SPECIES_TOGETIC + {0x46, 0x09}, // SPECIES_NATU + {0x44, 0x14}, // SPECIES_XATU + {0x47, 0x07}, // SPECIES_MAREEP + {0x55, 0x10}, // SPECIES_FLAAFFY + {0x56, 0x0a}, // SPECIES_AMPHAROS + {0x77, 0x05}, // SPECIES_BELLOSSOM + {0x45, 0x0e}, // SPECIES_MARILL + {0x65, 0x0e}, // SPECIES_AZUMARILL + {0x76, 0x09}, // SPECIES_SUDOWOODO + {0x67, 0x06}, // SPECIES_POLITOED + {0x67, 0x06}, // SPECIES_HOPPIP + {0x66, 0x0a}, // SPECIES_SKIPLOOM + {0x55, 0x0f}, // SPECIES_JUMPLUFF + {0x77, 0x07}, // SPECIES_AIPOM + {0x58, 0x03}, // SPECIES_SUNKERN + {0x44, 0x10}, // SPECIES_SUNFLORA + {0x56, 0x08}, // SPECIES_YANMA + {0x86, 0x0a}, // SPECIES_WOOPER + {0x54, 0x10}, // SPECIES_QUAGSIRE + {0x77, 0x07}, // SPECIES_ESPEON + {0x66, 0x08}, // SPECIES_UMBREON + {0x67, 0x08}, // SPECIES_MURKROW + {0x66, 0x0b}, // SPECIES_SLOWKING + {0x58, 0x01}, // SPECIES_MISDREAVUS + {0x55, 0x0c}, // SPECIES_UNOWN + {0x35, 0x0f}, // SPECIES_WOBBUFFET + {0x77, 0x06}, // SPECIES_GIRAFARIG + {0x88, 0x03}, // SPECIES_PINECO + {0x56, 0x0a}, // SPECIES_FORRETRESS + {0x76, 0x09}, // SPECIES_DUNSPARCE + {0x74, 0x11}, // SPECIES_GLIGAR + {0x78, 0x03}, // SPECIES_STEELIX + {0x88, 0x00}, // SPECIES_SNUBBULL + {0x55, 0x0d}, // SPECIES_GRANBULL + {0x57, 0x06}, // SPECIES_QWILFISH + {0x56, 0x0a}, // SPECIES_SCIZOR + {0x88, 0x00}, // SPECIES_SHUCKLE + {0x66, 0x09}, // SPECIES_HERACROSS + {0x88, 0x03}, // SPECIES_SNEASEL + {0x67, 0x05}, // SPECIES_TEDDIURSA + {0x45, 0x0d}, // SPECIES_URSARING + {0x78, 0x01}, // SPECIES_SLUGMA + {0x45, 0x0d}, // SPECIES_MAGCARGO + {0x57, 0x0d}, // SPECIES_SWINUB + {0x43, 0x14}, // SPECIES_PILOSWINE + {0x66, 0x08}, // SPECIES_CORSOLA + {0x65, 0x0c}, // SPECIES_REMORAID + {0x55, 0x0e}, // SPECIES_OCTILLERY + {0x66, 0x0a}, // SPECIES_DELIBIRD + {0x56, 0x08}, // SPECIES_MANTINE + {0x88, 0x01}, // SPECIES_SKARMORY + {0x88, 0x00}, // SPECIES_HOUNDOUR + {0x56, 0x0b}, // SPECIES_HOUNDOOM + {0x77, 0x05}, // SPECIES_KINGDRA + {0x78, 0x04}, // SPECIES_PHANPY + {0x54, 0x10}, // SPECIES_DONPHAN + {0x86, 0x08}, // SPECIES_PORYGON2 + {0x55, 0x0f}, // SPECIES_STANTLER + {0x88, 0x00}, // SPECIES_SMEARGLE + {0x77, 0x06}, // SPECIES_TYROGUE + {0x46, 0x09}, // SPECIES_HITMONTOP + {0x67, 0x05}, // SPECIES_SMOOCHUM + {0x35, 0x0f}, // SPECIES_ELEKID + {0x76, 0x0a}, // SPECIES_MAGBY + {0x45, 0x0d}, // SPECIES_MILTANK + {0x77, 0x04}, // SPECIES_BLISSEY + {0x77, 0x06}, // SPECIES_RAIKOU + {0x88, 0x00}, // SPECIES_ENTEI + {0x88, 0x00}, // SPECIES_SUICUNE + {0x88, 0x00}, // SPECIES_LARVITAR + {0x46, 0x09}, // SPECIES_PUPITAR + {0x56, 0x09}, // SPECIES_TYRANITAR + {0x88, 0x00}, // SPECIES_LUGIA + {0x88, 0x00}, // SPECIES_HO_OH + {0x88, 0x00}, // SPECIES_CELEBI + {0x55, 0x0e}, // SPECIES_OLD_UNOWN_B + {0x87, 0x04}, // SPECIES_OLD_UNOWN_C + {0x87, 0x04}, // SPECIES_OLD_UNOWN_D + {0x87, 0x04}, // SPECIES_OLD_UNOWN_E + {0x87, 0x04}, // SPECIES_OLD_UNOWN_F + {0x87, 0x04}, // SPECIES_OLD_UNOWN_G + {0x87, 0x04}, // SPECIES_OLD_UNOWN_H + {0x87, 0x04}, // SPECIES_OLD_UNOWN_I + {0x87, 0x04}, // SPECIES_OLD_UNOWN_J + {0x87, 0x04}, // SPECIES_OLD_UNOWN_K + {0x87, 0x04}, // SPECIES_OLD_UNOWN_L + {0x87, 0x04}, // SPECIES_OLD_UNOWN_M + {0x87, 0x04}, // SPECIES_OLD_UNOWN_N + {0x87, 0x04}, // SPECIES_OLD_UNOWN_O + {0x87, 0x04}, // SPECIES_OLD_UNOWN_P + {0x87, 0x04}, // SPECIES_OLD_UNOWN_Q + {0x87, 0x04}, // SPECIES_OLD_UNOWN_R + {0x87, 0x04}, // SPECIES_OLD_UNOWN_S + {0x87, 0x04}, // SPECIES_OLD_UNOWN_T + {0x87, 0x04}, // SPECIES_OLD_UNOWN_U + {0x87, 0x04}, // SPECIES_OLD_UNOWN_V + {0x87, 0x04}, // SPECIES_OLD_UNOWN_W + {0x87, 0x04}, // SPECIES_OLD_UNOWN_X + {0x87, 0x04}, // SPECIES_OLD_UNOWN_Y + {0x87, 0x04}, // SPECIES_OLD_UNOWN_Z + {0x87, 0x04}, // SPECIES_TREECKO + {0x66, 0x08}, // SPECIES_GROVYLE + {0x87, 0x04}, // SPECIES_SCEPTILE + {0x88, 0x00}, // SPECIES_TORCHIC + {0x56, 0x08}, // SPECIES_COMBUSKEN + {0x88, 0x01}, // SPECIES_BLAZIKEN + {0x88, 0x00}, // SPECIES_MUDKIP + {0x56, 0x0c}, // SPECIES_MARSHTOMP + {0x67, 0x06}, // SPECIES_SWAMPERT + {0x88, 0x00}, // SPECIES_POOCHYENA + {0x55, 0x0c}, // SPECIES_MIGHTYENA + {0x87, 0x04}, // SPECIES_ZIGZAGOON + {0x85, 0x0f}, // SPECIES_LINOONE + {0x78, 0x03}, // SPECIES_WURMPLE + {0x45, 0x0e}, // SPECIES_SILCOON + {0x75, 0x11}, // SPECIES_BEAUTIFLY + {0x86, 0x09}, // SPECIES_CASCOON + {0x74, 0x10}, // SPECIES_DUSTOX + {0x86, 0x0f}, // SPECIES_LOTAD + {0x65, 0x0e}, // SPECIES_LOMBRE + {0x66, 0x09}, // SPECIES_LUDICOLO + {0x88, 0x00}, // SPECIES_SEEDOT + {0x46, 0x10}, // SPECIES_NUZLEAF + {0x56, 0x08}, // SPECIES_SHIFTRY + {0x88, 0x02}, // SPECIES_NINCADA + {0x74, 0x12}, // SPECIES_NINJASK + {0x86, 0x0a}, // SPECIES_SHEDINJA + {0x66, 0x0a}, // SPECIES_TAILLOW + {0x64, 0x10}, // SPECIES_SWELLOW + {0x87, 0x06}, // SPECIES_SHROOMISH + {0x54, 0x10}, // SPECIES_BRELOOM + {0x77, 0x04}, // SPECIES_SPINDA + {0x68, 0x08}, // SPECIES_WINGULL + {0x84, 0x18}, // SPECIES_PELIPPER + {0x77, 0x04}, // SPECIES_SURSKIT + {0x65, 0x0f}, // SPECIES_MASQUERAIN + {0x88, 0x01}, // SPECIES_WAILMER + {0x75, 0x0f}, // SPECIES_WAILORD + {0x87, 0x0a}, // SPECIES_SKITTY + {0x66, 0x0b}, // SPECIES_DELCATTY + {0x66, 0x08}, // SPECIES_KECLEON + {0x67, 0x07}, // SPECIES_BALTOY + {0x55, 0x10}, // SPECIES_CLAYDOL + {0x78, 0x06}, // SPECIES_NOSEPASS + {0x56, 0x0c}, // SPECIES_TORKOAL + {0x88, 0x02}, // SPECIES_SABLEYE + {0x66, 0x09}, // SPECIES_BARBOACH + {0x46, 0x0b}, // SPECIES_WHISCASH + {0x76, 0x09}, // SPECIES_LUVDISC + {0x46, 0x18}, // SPECIES_CORPHISH + {0x66, 0x0c}, // SPECIES_CRAWDAUNT + {0x88, 0x01}, // SPECIES_FEEBAS + {0x46, 0x0d}, // SPECIES_MILOTIC + {0x88, 0x00}, // SPECIES_CARVANHA + {0x67, 0x06}, // SPECIES_SHARPEDO + {0x78, 0x03}, // SPECIES_TRAPINCH + {0x54, 0x10}, // SPECIES_VIBRAVA + {0x86, 0x0c}, // SPECIES_FLYGON + {0x88, 0x01}, // SPECIES_MAKUHITA + {0x65, 0x0c}, // SPECIES_HARIYAMA + {0x88, 0x01}, // SPECIES_ELECTRIKE + {0x64, 0x12}, // SPECIES_MANECTRIC + {0x67, 0x04}, // SPECIES_NUMEL + {0x65, 0x0f}, // SPECIES_CAMERUPT + {0x87, 0x09}, // SPECIES_SPHEAL + {0x65, 0x10}, // SPECIES_SEALEO + {0x86, 0x0a}, // SPECIES_WALREIN + {0x88, 0x01}, // SPECIES_CACNEA + {0x74, 0x10}, // SPECIES_CACTURNE + {0x88, 0x00}, // SPECIES_SNORUNT + {0x56, 0x0b}, // SPECIES_GLALIE + {0x76, 0x0a}, // SPECIES_LUNATONE + {0x66, 0x09}, // SPECIES_SOLROCK + {0x88, 0x01}, // SPECIES_AZURILL + {0x55, 0x0f}, // SPECIES_SPOINK + {0x46, 0x09}, // SPECIES_GRUMPIG + {0x77, 0x05}, // SPECIES_PLUSLE + {0x56, 0x0e}, // SPECIES_MINUN + {0x66, 0x0c}, // SPECIES_MAWILE + {0x76, 0x08}, // SPECIES_MEDITITE + {0x65, 0x0c}, // SPECIES_MEDICHAM + {0x68, 0x01}, // SPECIES_SWABLU + {0x76, 0x11}, // SPECIES_ALTARIA + {0x88, 0x02}, // SPECIES_WYNAUT + {0x55, 0x0c}, // SPECIES_DUSKULL + {0x66, 0x0a}, // SPECIES_DUSCLOPS + {0x77, 0x05}, // SPECIES_ROSELIA + {0x76, 0x08}, // SPECIES_SLAKOTH + {0x74, 0x12}, // SPECIES_VIGOROTH + {0x78, 0x00}, // SPECIES_SLAKING + {0x86, 0x08}, // SPECIES_GULPIN + {0x55, 0x12}, // SPECIES_SWALOT + {0x66, 0x08}, // SPECIES_TROPIUS + {0x88, 0x00}, // SPECIES_WHISMUR + {0x55, 0x0e}, // SPECIES_LOUDRED + {0x78, 0x03}, // SPECIES_EXPLOUD + {0x88, 0x01}, // SPECIES_CLAMPERL + {0x55, 0x0e}, // SPECIES_HUNTAIL + {0x78, 0x03}, // SPECIES_GOREBYSS + {0x86, 0x0b}, // SPECIES_ABSOL + {0x68, 0x00}, // SPECIES_SHUPPET + {0x56, 0x0e}, // SPECIES_BANETTE + {0x55, 0x0c}, // SPECIES_SEVIPER + {0x77, 0x08}, // SPECIES_ZANGOOSE + {0x87, 0x05}, // SPECIES_RELICANTH + {0x77, 0x0b}, // SPECIES_ARON + {0x43, 0x14}, // SPECIES_LAIRON + {0x75, 0x0d}, // SPECIES_AGGRON + {0x88, 0x00}, // SPECIES_CASTFORM + {0x34, 0x11}, // SPECIES_VOLBEAT + {0x66, 0x08}, // SPECIES_ILLUMISE + {0x56, 0x08}, // SPECIES_LILEEP + {0x67, 0x07}, // SPECIES_CRADILY + {0x78, 0x00}, // SPECIES_ANORITH + {0x66, 0x08}, // SPECIES_ARMALDO + {0x88, 0x00}, // SPECIES_RALTS + {0x35, 0x0f}, // SPECIES_KIRLIA + {0x47, 0x06}, // SPECIES_GARDEVOIR + {0x78, 0x01}, // SPECIES_BAGON + {0x56, 0x0b}, // SPECIES_SHELGON + {0x66, 0x09}, // SPECIES_SALAMENCE + {0x87, 0x04}, // SPECIES_BELDUM + {0x55, 0x0f}, // SPECIES_METANG + {0x87, 0x07}, // SPECIES_METAGROSS + {0x87, 0x06}, // SPECIES_REGIROCK + {0x78, 0x04}, // SPECIES_REGICE + {0x88, 0x02}, // SPECIES_REGISTEEL + {0x88, 0x03}, // SPECIES_KYOGRE + {0x87, 0x04}, // SPECIES_GROUDON + {0x88, 0x01}, // SPECIES_RAYQUAZA + {0x88, 0x00}, // SPECIES_LATIAS + {0x88, 0x01}, // SPECIES_LATIOS + {0x88, 0x02}, // SPECIES_JIRACHI + {0x66, 0x0d}, // SPECIES_DEOXYS + {0x88, 0x01}, // SPECIES_CHIMECHO + {0x37, 0x06}, // SPECIES_EGG + {0x33, 0x14}, // SPECIES_UNOWN_B + {0x34, 0x10}, // SPECIES_UNOWN_C + {0x44, 0x10}, // SPECIES_UNOWN_D + {0x44, 0x10}, // SPECIES_UNOWN_E + {0x44, 0x11}, // SPECIES_UNOWN_F + {0x44, 0x11}, // SPECIES_UNOWN_G + {0x35, 0x0e}, // SPECIES_UNOWN_H + {0x44, 0x10}, // SPECIES_UNOWN_I + {0x34, 0x10}, // SPECIES_UNOWN_J + {0x34, 0x11}, // SPECIES_UNOWN_K + {0x44, 0x11}, // SPECIES_UNOWN_L + {0x34, 0x13}, // SPECIES_UNOWN_M + {0x44, 0x13}, // SPECIES_UNOWN_N + {0x43, 0x14}, // SPECIES_UNOWN_O + {0x44, 0x10}, // SPECIES_UNOWN_P + {0x34, 0x13}, // SPECIES_UNOWN_Q + {0x43, 0x15}, // SPECIES_UNOWN_R + {0x34, 0x13}, // SPECIES_UNOWN_S + {0x45, 0x0c}, // SPECIES_UNOWN_T + {0x34, 0x12}, // SPECIES_UNOWN_U + {0x44, 0x12}, // SPECIES_UNOWN_V + {0x44, 0x12}, // SPECIES_UNOWN_W + {0x44, 0x13}, // SPECIES_UNOWN_X + {0x33, 0x15}, // SPECIES_UNOWN_Y + {0x34, 0x11}, // SPECIES_UNOWN_Z + {0x34, 0x10}, // SPECIES_UNOWN_EMARK + {0x35, 0x0f}, // SPECIES_UNOWN_QMARK + {0x35, 0x0d}, +}; diff --git a/src/data/pokemon_graphics/front_pic_table.h b/src/data/pokemon_graphics/front_pic_table.h new file mode 100644 index 000000000..5aa22f4f8 --- /dev/null +++ b/src/data/pokemon_graphics/front_pic_table.h @@ -0,0 +1,446 @@ +const struct CompressedSpriteSheet gMonFrontPicTable[] = +{ //.data .size .tag + gMonFrontPic_CircledQuestionMark, 0x800, 0, + gMonFrontPic_Bulbasaur, 0x800, 1, + gMonFrontPic_Ivysaur, 0x800, 2, + gMonFrontPic_Venusaur, 0x800, 3, + gMonFrontPic_Charmander, 0x800, 4, + gMonFrontPic_Charmeleon, 0x800, 5, + gMonFrontPic_Charizard, 0x800, 6, + gMonFrontPic_Squirtle, 0x800, 7, + gMonFrontPic_Wartortle, 0x800, 8, + gMonFrontPic_Blastoise, 0x800, 9, + gMonFrontPic_Caterpie, 0x800, 10, + gMonFrontPic_Metapod, 0x800, 11, + gMonFrontPic_Butterfree, 0x800, 12, + gMonFrontPic_Weedle, 0x800, 13, + gMonFrontPic_Kakuna, 0x800, 14, + gMonFrontPic_Beedrill, 0x800, 15, + gMonFrontPic_Pidgey, 0x800, 16, + gMonFrontPic_Pidgeotto, 0x800, 17, + gMonFrontPic_Pidgeot, 0x800, 18, + gMonFrontPic_Rattata, 0x800, 19, + gMonFrontPic_Raticate, 0x800, 20, + gMonFrontPic_Spearow, 0x800, 21, + gMonFrontPic_Fearow, 0x800, 22, + gMonFrontPic_Ekans, 0x800, 23, + gMonFrontPic_Arbok, 0x800, 24, + gMonFrontPic_Pikachu, 0x800, 25, + gMonFrontPic_Raichu, 0x800, 26, + gMonFrontPic_Sandshrew, 0x800, 27, + gMonFrontPic_Sandslash, 0x800, 28, + gMonFrontPic_NidoranF, 0x800, 29, + gMonFrontPic_Nidorina, 0x800, 30, + gMonFrontPic_Nidoqueen, 0x800, 31, + gMonFrontPic_NidoranM, 0x800, 32, + gMonFrontPic_Nidorino, 0x800, 33, + gMonFrontPic_Nidoking, 0x800, 34, + gMonFrontPic_Clefairy, 0x800, 35, + gMonFrontPic_Clefable, 0x800, 36, + gMonFrontPic_Vulpix, 0x800, 37, + gMonFrontPic_Ninetales, 0x800, 38, + gMonFrontPic_Jigglypuff, 0x800, 39, + gMonFrontPic_Wigglytuff, 0x800, 40, + gMonFrontPic_Zubat, 0x800, 41, + gMonFrontPic_Golbat, 0x800, 42, + gMonFrontPic_Oddish, 0x800, 43, + gMonFrontPic_Gloom, 0x800, 44, + gMonFrontPic_Vileplume, 0x800, 45, + gMonFrontPic_Paras, 0x800, 46, + gMonFrontPic_Parasect, 0x800, 47, + gMonFrontPic_Venonat, 0x800, 48, + gMonFrontPic_Venomoth, 0x800, 49, + gMonFrontPic_Diglett, 0x800, 50, + gMonFrontPic_Dugtrio, 0x800, 51, + gMonFrontPic_Meowth, 0x800, 52, + gMonFrontPic_Persian, 0x800, 53, + gMonFrontPic_Psyduck, 0x800, 54, + gMonFrontPic_Golduck, 0x800, 55, + gMonFrontPic_Mankey, 0x800, 56, + gMonFrontPic_Primeape, 0x800, 57, + gMonFrontPic_Growlithe, 0x800, 58, + gMonFrontPic_Arcanine, 0x800, 59, + gMonFrontPic_Poliwag, 0x800, 60, + gMonFrontPic_Poliwhirl, 0x800, 61, + gMonFrontPic_Poliwrath, 0x800, 62, + gMonFrontPic_Abra, 0x800, 63, + gMonFrontPic_Kadabra, 0x800, 64, + gMonFrontPic_Alakazam, 0x800, 65, + gMonFrontPic_Machop, 0x800, 66, + gMonFrontPic_Machoke, 0x800, 67, + gMonFrontPic_Machamp, 0x800, 68, + gMonFrontPic_Bellsprout, 0x800, 69, + gMonFrontPic_Weepinbell, 0x800, 70, + gMonFrontPic_Victreebel, 0x800, 71, + gMonFrontPic_Tentacool, 0x800, 72, + gMonFrontPic_Tentacruel, 0x800, 73, + gMonFrontPic_Geodude, 0x800, 74, + gMonFrontPic_Graveler, 0x800, 75, + gMonFrontPic_Golem, 0x800, 76, + gMonFrontPic_Ponyta, 0x800, 77, + gMonFrontPic_Rapidash, 0x800, 78, + gMonFrontPic_Slowpoke, 0x800, 79, + gMonFrontPic_Slowbro, 0x800, 80, + gMonFrontPic_Magnemite, 0x800, 81, + gMonFrontPic_Magneton, 0x800, 82, + gMonFrontPic_Farfetchd, 0x800, 83, + gMonFrontPic_Doduo, 0x800, 84, + gMonFrontPic_Dodrio, 0x800, 85, + gMonFrontPic_Seel, 0x800, 86, + gMonFrontPic_Dewgong, 0x800, 87, + gMonFrontPic_Grimer, 0x800, 88, + gMonFrontPic_Muk, 0x800, 89, + gMonFrontPic_Shellder, 0x800, 90, + gMonFrontPic_Cloyster, 0x800, 91, + gMonFrontPic_Gastly, 0x800, 92, + gMonFrontPic_Haunter, 0x800, 93, + gMonFrontPic_Gengar, 0x800, 94, + gMonFrontPic_Onix, 0x800, 95, + gMonFrontPic_Drowzee, 0x800, 96, + gMonFrontPic_Hypno, 0x800, 97, + gMonFrontPic_Krabby, 0x800, 98, + gMonFrontPic_Kingler, 0x800, 99, + gMonFrontPic_Voltorb, 0x800, 100, + gMonFrontPic_Electrode, 0x800, 101, + gMonFrontPic_Exeggcute, 0x800, 102, + gMonFrontPic_Exeggutor, 0x800, 103, + gMonFrontPic_Cubone, 0x800, 104, + gMonFrontPic_Marowak, 0x800, 105, + gMonFrontPic_Hitmonlee, 0x800, 106, + gMonFrontPic_Hitmonchan, 0x800, 107, + gMonFrontPic_Lickitung, 0x800, 108, + gMonFrontPic_Koffing, 0x800, 109, + gMonFrontPic_Weezing, 0x800, 110, + gMonFrontPic_Rhyhorn, 0x800, 111, + gMonFrontPic_Rhydon, 0x800, 112, + gMonFrontPic_Chansey, 0x800, 113, + gMonFrontPic_Tangela, 0x800, 114, + gMonFrontPic_Kangaskhan, 0x800, 115, + gMonFrontPic_Horsea, 0x800, 116, + gMonFrontPic_Seadra, 0x800, 117, + gMonFrontPic_Goldeen, 0x800, 118, + gMonFrontPic_Seaking, 0x800, 119, + gMonFrontPic_Staryu, 0x800, 120, + gMonFrontPic_Starmie, 0x800, 121, + gMonFrontPic_Mrmime, 0x800, 122, + gMonFrontPic_Scyther, 0x800, 123, + gMonFrontPic_Jynx, 0x800, 124, + gMonFrontPic_Electabuzz, 0x800, 125, + gMonFrontPic_Magmar, 0x800, 126, + gMonFrontPic_Pinsir, 0x800, 127, + gMonFrontPic_Tauros, 0x800, 128, + gMonFrontPic_Magikarp, 0x800, 129, + gMonFrontPic_Gyarados, 0x800, 130, + gMonFrontPic_Lapras, 0x800, 131, + gMonFrontPic_Ditto, 0x800, 132, + gMonFrontPic_Eevee, 0x800, 133, + gMonFrontPic_Vaporeon, 0x800, 134, + gMonFrontPic_Jolteon, 0x800, 135, + gMonFrontPic_Flareon, 0x800, 136, + gMonFrontPic_Porygon, 0x800, 137, + gMonFrontPic_Omanyte, 0x800, 138, + gMonFrontPic_Omastar, 0x800, 139, + gMonFrontPic_Kabuto, 0x800, 140, + gMonFrontPic_Kabutops, 0x800, 141, + gMonFrontPic_Aerodactyl, 0x800, 142, + gMonFrontPic_Snorlax, 0x800, 143, + gMonFrontPic_Articuno, 0x800, 144, + gMonFrontPic_Zapdos, 0x800, 145, + gMonFrontPic_Moltres, 0x800, 146, + gMonFrontPic_Dratini, 0x800, 147, + gMonFrontPic_Dragonair, 0x800, 148, + gMonFrontPic_Dragonite, 0x800, 149, + gMonFrontPic_Mewtwo, 0x800, 150, + gMonFrontPic_Mew, 0x800, 151, +// Gen II + gMonFrontPic_Chikorita, 0x800, 152, + gMonFrontPic_Bayleef, 0x800, 153, + gMonFrontPic_Meganium, 0x800, 154, + gMonFrontPic_Cyndaquil, 0x800, 155, + gMonFrontPic_Quilava, 0x800, 156, + gMonFrontPic_Typhlosion, 0x800, 157, + gMonFrontPic_Totodile, 0x800, 158, + gMonFrontPic_Croconaw, 0x800, 159, + gMonFrontPic_Feraligatr, 0x800, 160, + gMonFrontPic_Sentret, 0x800, 161, + gMonFrontPic_Furret, 0x800, 162, + gMonFrontPic_Hoothoot, 0x800, 163, + gMonFrontPic_Noctowl, 0x800, 164, + gMonFrontPic_Ledyba, 0x800, 165, + gMonFrontPic_Ledian, 0x800, 166, + gMonFrontPic_Spinarak, 0x800, 167, + gMonFrontPic_Ariados, 0x800, 168, + gMonFrontPic_Crobat, 0x800, 169, + gMonFrontPic_Chinchou, 0x800, 170, + gMonFrontPic_Lanturn, 0x800, 171, + gMonFrontPic_Pichu, 0x800, 172, + gMonFrontPic_Cleffa, 0x800, 173, + gMonFrontPic_Igglybuff, 0x800, 174, + gMonFrontPic_Togepi, 0x800, 175, + gMonFrontPic_Togetic, 0x800, 176, + gMonFrontPic_Natu, 0x800, 177, + gMonFrontPic_Xatu, 0x800, 178, + gMonFrontPic_Mareep, 0x800, 179, + gMonFrontPic_Flaaffy, 0x800, 180, + gMonFrontPic_Ampharos, 0x800, 181, + gMonFrontPic_Bellossom, 0x800, 182, + gMonFrontPic_Marill, 0x800, 183, + gMonFrontPic_Azumarill, 0x800, 184, + gMonFrontPic_Sudowoodo, 0x800, 185, + gMonFrontPic_Politoed, 0x800, 186, + gMonFrontPic_Hoppip, 0x800, 187, + gMonFrontPic_Skiploom, 0x800, 188, + gMonFrontPic_Jumpluff, 0x800, 189, + gMonFrontPic_Aipom, 0x800, 190, + gMonFrontPic_Sunkern, 0x800, 191, + gMonFrontPic_Sunflora, 0x800, 192, + gMonFrontPic_Yanma, 0x800, 193, + gMonFrontPic_Wooper, 0x800, 194, + gMonFrontPic_Quagsire, 0x800, 195, + gMonFrontPic_Espeon, 0x800, 196, + gMonFrontPic_Umbreon, 0x800, 197, + gMonFrontPic_Murkrow, 0x800, 198, + gMonFrontPic_Slowking, 0x800, 199, + gMonFrontPic_Misdreavus, 0x800, 200, + gMonFrontPic_UnownA, 0x800, 201, + gMonFrontPic_Wobbuffet, 0x800, 202, + gMonFrontPic_Girafarig, 0x800, 203, + gMonFrontPic_Pineco, 0x800, 204, + gMonFrontPic_Forretress, 0x800, 205, + gMonFrontPic_Dunsparce, 0x800, 206, + gMonFrontPic_Gligar, 0x800, 207, + gMonFrontPic_Steelix, 0x800, 208, + gMonFrontPic_Snubbull, 0x800, 209, + gMonFrontPic_Granbull, 0x800, 210, + gMonFrontPic_Qwilfish, 0x800, 211, + gMonFrontPic_Scizor, 0x800, 212, + gMonFrontPic_Shuckle, 0x800, 213, + gMonFrontPic_Heracross, 0x800, 214, + gMonFrontPic_Sneasel, 0x800, 215, + gMonFrontPic_Teddiursa, 0x800, 216, + gMonFrontPic_Ursaring, 0x800, 217, + gMonFrontPic_Slugma, 0x800, 218, + gMonFrontPic_Magcargo, 0x800, 219, + gMonFrontPic_Swinub, 0x800, 220, + gMonFrontPic_Piloswine, 0x800, 221, + gMonFrontPic_Corsola, 0x800, 222, + gMonFrontPic_Remoraid, 0x800, 223, + gMonFrontPic_Octillery, 0x800, 224, + gMonFrontPic_Delibird, 0x800, 225, + gMonFrontPic_Mantine, 0x800, 226, + gMonFrontPic_Skarmory, 0x800, 227, + gMonFrontPic_Houndour, 0x800, 228, + gMonFrontPic_Houndoom, 0x800, 229, + gMonFrontPic_Kingdra, 0x800, 230, + gMonFrontPic_Phanpy, 0x800, 231, + gMonFrontPic_Donphan, 0x800, 232, + gMonFrontPic_Porygon2, 0x800, 233, + gMonFrontPic_Stantler, 0x800, 234, + gMonFrontPic_Smeargle, 0x800, 235, + gMonFrontPic_Tyrogue, 0x800, 236, + gMonFrontPic_Hitmontop, 0x800, 237, + gMonFrontPic_Smoochum, 0x800, 238, + gMonFrontPic_Elekid, 0x800, 239, + gMonFrontPic_Magby, 0x800, 240, + gMonFrontPic_Miltank, 0x800, 241, + gMonFrontPic_Blissey, 0x800, 242, + gMonFrontPic_Raikou, 0x800, 243, + gMonFrontPic_Entei, 0x800, 244, + gMonFrontPic_Suicune, 0x800, 245, + gMonFrontPic_Larvitar, 0x800, 246, + gMonFrontPic_Pupitar, 0x800, 247, + gMonFrontPic_Tyranitar, 0x800, 248, + gMonFrontPic_Lugia, 0x800, 249, + gMonFrontPic_HoOh, 0x800, 250, + gMonFrontPic_Celebi, 0x800, 251, +// Empty slots + gMonFrontPic_DoubleQuestionMark, 0x800, 252, + gMonFrontPic_DoubleQuestionMark, 0x800, 253, + gMonFrontPic_DoubleQuestionMark, 0x800, 254, + gMonFrontPic_DoubleQuestionMark, 0x800, 255, + gMonFrontPic_DoubleQuestionMark, 0x800, 256, + gMonFrontPic_DoubleQuestionMark, 0x800, 257, + gMonFrontPic_DoubleQuestionMark, 0x800, 258, + gMonFrontPic_DoubleQuestionMark, 0x800, 259, + gMonFrontPic_DoubleQuestionMark, 0x800, 260, + gMonFrontPic_DoubleQuestionMark, 0x800, 261, + gMonFrontPic_DoubleQuestionMark, 0x800, 262, + gMonFrontPic_DoubleQuestionMark, 0x800, 263, + gMonFrontPic_DoubleQuestionMark, 0x800, 264, + gMonFrontPic_DoubleQuestionMark, 0x800, 265, + gMonFrontPic_DoubleQuestionMark, 0x800, 266, + gMonFrontPic_DoubleQuestionMark, 0x800, 267, + gMonFrontPic_DoubleQuestionMark, 0x800, 268, + gMonFrontPic_DoubleQuestionMark, 0x800, 269, + gMonFrontPic_DoubleQuestionMark, 0x800, 270, + gMonFrontPic_DoubleQuestionMark, 0x800, 271, + gMonFrontPic_DoubleQuestionMark, 0x800, 272, + gMonFrontPic_DoubleQuestionMark, 0x800, 273, + gMonFrontPic_DoubleQuestionMark, 0x800, 274, + gMonFrontPic_DoubleQuestionMark, 0x800, 275, + gMonFrontPic_DoubleQuestionMark, 0x800, 276, +// Gen III + gMonFrontPic_Treecko, 0x800, 277, + gMonFrontPic_Grovyle, 0x800, 278, + gMonFrontPic_Sceptile, 0x800, 279, + gMonFrontPic_Torchic, 0x800, 280, + gMonFrontPic_Combusken, 0x800, 281, + gMonFrontPic_Blaziken, 0x800, 282, + gMonFrontPic_Mudkip, 0x800, 283, + gMonFrontPic_Marshtomp, 0x800, 284, + gMonFrontPic_Swampert, 0x800, 285, + gMonFrontPic_Poochyena, 0x800, 286, + gMonFrontPic_Mightyena, 0x800, 287, + gMonFrontPic_Zigzagoon, 0x800, 288, + gMonFrontPic_Linoone, 0x800, 289, + gMonFrontPic_Wurmple, 0x800, 290, + gMonFrontPic_Silcoon, 0x800, 291, + gMonFrontPic_Beautifly, 0x800, 292, + gMonFrontPic_Cascoon, 0x800, 293, + gMonFrontPic_Dustox, 0x800, 294, + gMonFrontPic_Lotad, 0x800, 295, + gMonFrontPic_Lombre, 0x800, 296, + gMonFrontPic_Ludicolo, 0x800, 297, + gMonFrontPic_Seedot, 0x800, 298, + gMonFrontPic_Nuzleaf, 0x800, 299, + gMonFrontPic_Shiftry, 0x800, 300, + gMonFrontPic_Nincada, 0x800, 301, + gMonFrontPic_Ninjask, 0x800, 302, + gMonFrontPic_Shedinja, 0x800, 303, + gMonFrontPic_Taillow, 0x800, 304, + gMonFrontPic_Swellow, 0x800, 305, + gMonFrontPic_Shroomish, 0x800, 306, + gMonFrontPic_Breloom, 0x800, 307, + gMonFrontPic_Spinda, 0x800, 308, + gMonFrontPic_Wingull, 0x800, 309, + gMonFrontPic_Pelipper, 0x800, 310, + gMonFrontPic_Surskit, 0x800, 311, + gMonFrontPic_Masquerain, 0x800, 312, + gMonFrontPic_Wailmer, 0x800, 313, + gMonFrontPic_Wailord, 0x800, 314, + gMonFrontPic_Skitty, 0x800, 315, + gMonFrontPic_Delcatty, 0x800, 316, + gMonFrontPic_Kecleon, 0x800, 317, + gMonFrontPic_Baltoy, 0x800, 318, + gMonFrontPic_Claydol, 0x800, 319, + gMonFrontPic_Nosepass, 0x800, 320, + gMonFrontPic_Torkoal, 0x800, 321, + gMonFrontPic_Sableye, 0x800, 322, + gMonFrontPic_Barboach, 0x800, 323, + gMonFrontPic_Whiscash, 0x800, 324, + gMonFrontPic_Luvdisc, 0x800, 325, + gMonFrontPic_Corphish, 0x800, 326, + gMonFrontPic_Crawdaunt, 0x800, 327, + gMonFrontPic_Feebas, 0x800, 328, + gMonFrontPic_Milotic, 0x800, 329, + gMonFrontPic_Carvanha, 0x800, 330, + gMonFrontPic_Sharpedo, 0x800, 331, + gMonFrontPic_Trapinch, 0x800, 332, + gMonFrontPic_Vibrava, 0x800, 333, + gMonFrontPic_Flygon, 0x800, 334, + gMonFrontPic_Makuhita, 0x800, 335, + gMonFrontPic_Hariyama, 0x800, 336, + gMonFrontPic_Electrike, 0x800, 337, + gMonFrontPic_Manectric, 0x800, 338, + gMonFrontPic_Numel, 0x800, 339, + gMonFrontPic_Camerupt, 0x800, 340, + gMonFrontPic_Spheal, 0x800, 341, + gMonFrontPic_Sealeo, 0x800, 342, + gMonFrontPic_Walrein, 0x800, 343, + gMonFrontPic_Cacnea, 0x800, 344, + gMonFrontPic_Cacturne, 0x800, 345, + gMonFrontPic_Snorunt, 0x800, 346, + gMonFrontPic_Glalie, 0x800, 347, + gMonFrontPic_Lunatone, 0x800, 348, + gMonFrontPic_Solrock, 0x800, 349, + gMonFrontPic_Azurill, 0x800, 350, + gMonFrontPic_Spoink, 0x800, 351, + gMonFrontPic_Grumpig, 0x800, 352, + gMonFrontPic_Plusle, 0x800, 353, + gMonFrontPic_Minun, 0x800, 354, + gMonFrontPic_Mawile, 0x800, 355, + gMonFrontPic_Meditite, 0x800, 356, + gMonFrontPic_Medicham, 0x800, 357, + gMonFrontPic_Swablu, 0x800, 358, + gMonFrontPic_Altaria, 0x800, 359, + gMonFrontPic_Wynaut, 0x800, 360, + gMonFrontPic_Duskull, 0x800, 361, + gMonFrontPic_Dusclops, 0x800, 362, + gMonFrontPic_Roselia, 0x800, 363, + gMonFrontPic_Slakoth, 0x800, 364, + gMonFrontPic_Vigoroth, 0x800, 365, + gMonFrontPic_Slaking, 0x800, 366, + gMonFrontPic_Gulpin, 0x800, 367, + gMonFrontPic_Swalot, 0x800, 368, + gMonFrontPic_Tropius, 0x800, 369, + gMonFrontPic_Whismur, 0x800, 370, + gMonFrontPic_Loudred, 0x800, 371, + gMonFrontPic_Exploud, 0x800, 372, + gMonFrontPic_Clamperl, 0x800, 373, + gMonFrontPic_Huntail, 0x800, 374, + gMonFrontPic_Gorebyss, 0x800, 375, + gMonFrontPic_Absol, 0x800, 376, + gMonFrontPic_Shuppet, 0x800, 377, + gMonFrontPic_Banette, 0x800, 378, + gMonFrontPic_Seviper, 0x800, 379, + gMonFrontPic_Zangoose, 0x800, 380, + gMonFrontPic_Relicanth, 0x800, 381, + gMonFrontPic_Aron, 0x800, 382, + gMonFrontPic_Lairon, 0x800, 383, + gMonFrontPic_Aggron, 0x800, 384, + gMonFrontPic_Castform, 0x800, 385, + gMonFrontPic_Volbeat, 0x800, 386, + gMonFrontPic_Illumise, 0x800, 387, + gMonFrontPic_Lileep, 0x800, 388, + gMonFrontPic_Cradily, 0x800, 389, + gMonFrontPic_Anorith, 0x800, 390, + gMonFrontPic_Armaldo, 0x800, 391, + gMonFrontPic_Ralts, 0x800, 392, + gMonFrontPic_Kirlia, 0x800, 393, + gMonFrontPic_Gardevoir, 0x800, 394, + gMonFrontPic_Bagon, 0x800, 395, + gMonFrontPic_Shelgon, 0x800, 396, + gMonFrontPic_Salamence, 0x800, 397, + gMonFrontPic_Beldum, 0x800, 398, + gMonFrontPic_Metang, 0x800, 399, + gMonFrontPic_Metagross, 0x800, 400, + gMonFrontPic_Regirock, 0x800, 401, + gMonFrontPic_Regice, 0x800, 402, + gMonFrontPic_Registeel, 0x800, 403, + gMonFrontPic_Kyogre, 0x800, 404, + gMonFrontPic_Groudon, 0x800, 405, + gMonFrontPic_Rayquaza, 0x800, 406, + gMonFrontPic_Latias, 0x800, 407, + gMonFrontPic_Latios, 0x800, 408, + gMonFrontPic_Jirachi, 0x800, 409, + gMonFrontPic_Deoxys, 0x800, 410, + gMonFrontPic_Chimecho, 0x800, 411, + gMonFrontPic_Egg, 0x800, 412, + gMonFrontPic_UnownB, 0x800, 413, + gMonFrontPic_UnownC, 0x800, 414, + gMonFrontPic_UnownD, 0x800, 415, + gMonFrontPic_UnownE, 0x800, 416, + gMonFrontPic_UnownF, 0x800, 417, + gMonFrontPic_UnownG, 0x800, 418, + gMonFrontPic_UnownH, 0x800, 419, + gMonFrontPic_UnownI, 0x800, 420, + gMonFrontPic_UnownJ, 0x800, 421, + gMonFrontPic_UnownK, 0x800, 422, + gMonFrontPic_UnownL, 0x800, 423, + gMonFrontPic_UnownM, 0x800, 424, + gMonFrontPic_UnownN, 0x800, 425, + gMonFrontPic_UnownO, 0x800, 426, + gMonFrontPic_UnownP, 0x800, 427, + gMonFrontPic_UnownQ, 0x800, 428, + gMonFrontPic_UnownR, 0x800, 429, + gMonFrontPic_UnownS, 0x800, 430, + gMonFrontPic_UnownT, 0x800, 431, + gMonFrontPic_UnownU, 0x800, 432, + gMonFrontPic_UnownV, 0x800, 433, + gMonFrontPic_UnownW, 0x800, 434, + gMonFrontPic_UnownX, 0x800, 435, + gMonFrontPic_UnownY, 0x800, 436, + gMonFrontPic_UnownZ, 0x800, 437, + gMonFrontPic_UnownExclamationMark, 0x800, 438, + gMonFrontPic_UnownQuestionMark, 0x800, 439, +}; diff --git a/src/data/pokemon_graphics/palette_table.h b/src/data/pokemon_graphics/palette_table.h new file mode 100644 index 000000000..99412daa5 --- /dev/null +++ b/src/data/pokemon_graphics/palette_table.h @@ -0,0 +1,443 @@ +const struct CompressedSpritePalette gMonPaletteTable[] = +{ + gMonPalette_CircledQuestionMark, 0, + gMonPalette_Bulbasaur, 1, + gMonPalette_Ivysaur, 2, + gMonPalette_Venusaur, 3, + gMonPalette_Charmander, 4, + gMonPalette_Charmeleon, 5, + gMonPalette_Charizard, 6, + gMonPalette_Squirtle, 7, + gMonPalette_Wartortle, 8, + gMonPalette_Blastoise, 9, + gMonPalette_Caterpie, 10, + gMonPalette_Metapod, 11, + gMonPalette_Butterfree, 12, + gMonPalette_Weedle, 13, + gMonPalette_Kakuna, 14, + gMonPalette_Beedrill, 15, + gMonPalette_Pidgey, 16, + gMonPalette_Pidgeotto, 17, + gMonPalette_Pidgeot, 18, + gMonPalette_Rattata, 19, + gMonPalette_Raticate, 20, + gMonPalette_Spearow, 21, + gMonPalette_Fearow, 22, + gMonPalette_Ekans, 23, + gMonPalette_Arbok, 24, + gMonPalette_Pikachu, 25, + gMonPalette_Raichu, 26, + gMonPalette_Sandshrew, 27, + gMonPalette_Sandslash, 28, + gMonPalette_NidoranF, 29, + gMonPalette_Nidorina, 30, + gMonPalette_Nidoqueen, 31, + gMonPalette_NidoranM, 32, + gMonPalette_Nidorino, 33, + gMonPalette_Nidoking, 34, + gMonPalette_Clefairy, 35, + gMonPalette_Clefable, 36, + gMonPalette_Vulpix, 37, + gMonPalette_Ninetales, 38, + gMonPalette_Jigglypuff, 39, + gMonPalette_Wigglytuff, 40, + gMonPalette_Zubat, 41, + gMonPalette_Golbat, 42, + gMonPalette_Oddish, 43, + gMonPalette_Gloom, 44, + gMonPalette_Vileplume, 45, + gMonPalette_Paras, 46, + gMonPalette_Parasect, 47, + gMonPalette_Venonat, 48, + gMonPalette_Venomoth, 49, + gMonPalette_Diglett, 50, + gMonPalette_Dugtrio, 51, + gMonPalette_Meowth, 52, + gMonPalette_Persian, 53, + gMonPalette_Psyduck, 54, + gMonPalette_Golduck, 55, + gMonPalette_Mankey, 56, + gMonPalette_Primeape, 57, + gMonPalette_Growlithe, 58, + gMonPalette_Arcanine, 59, + gMonPalette_Poliwag, 60, + gMonPalette_Poliwhirl, 61, + gMonPalette_Poliwrath, 62, + gMonPalette_Abra, 63, + gMonPalette_Kadabra, 64, + gMonPalette_Alakazam, 65, + gMonPalette_Machop, 66, + gMonPalette_Machoke, 67, + gMonPalette_Machamp, 68, + gMonPalette_Bellsprout, 69, + gMonPalette_Weepinbell, 70, + gMonPalette_Victreebel, 71, + gMonPalette_Tentacool, 72, + gMonPalette_Tentacruel, 73, + gMonPalette_Geodude, 74, + gMonPalette_Graveler, 75, + gMonPalette_Golem, 76, + gMonPalette_Ponyta, 77, + gMonPalette_Rapidash, 78, + gMonPalette_Slowpoke, 79, + gMonPalette_Slowbro, 80, + gMonPalette_Magnemite, 81, + gMonPalette_Magneton, 82, + gMonPalette_Farfetchd, 83, + gMonPalette_Doduo, 84, + gMonPalette_Dodrio, 85, + gMonPalette_Seel, 86, + gMonPalette_Dewgong, 87, + gMonPalette_Grimer, 88, + gMonPalette_Muk, 89, + gMonPalette_Shellder, 90, + gMonPalette_Cloyster, 91, + gMonPalette_Gastly, 92, + gMonPalette_Haunter, 93, + gMonPalette_Gengar, 94, + gMonPalette_Onix, 95, + gMonPalette_Drowzee, 96, + gMonPalette_Hypno, 97, + gMonPalette_Krabby, 98, + gMonPalette_Kingler, 99, + gMonPalette_Voltorb, 100, + gMonPalette_Electrode, 101, + gMonPalette_Exeggcute, 102, + gMonPalette_Exeggutor, 103, + gMonPalette_Cubone, 104, + gMonPalette_Marowak, 105, + gMonPalette_Hitmonlee, 106, + gMonPalette_Hitmonchan, 107, + gMonPalette_Lickitung, 108, + gMonPalette_Koffing, 109, + gMonPalette_Weezing, 110, + gMonPalette_Rhyhorn, 111, + gMonPalette_Rhydon, 112, + gMonPalette_Chansey, 113, + gMonPalette_Tangela, 114, + gMonPalette_Kangaskhan, 115, + gMonPalette_Horsea, 116, + gMonPalette_Seadra, 117, + gMonPalette_Goldeen, 118, + gMonPalette_Seaking, 119, + gMonPalette_Staryu, 120, + gMonPalette_Starmie, 121, + gMonPalette_Mrmime, 122, + gMonPalette_Scyther, 123, + gMonPalette_Jynx, 124, + gMonPalette_Electabuzz, 125, + gMonPalette_Magmar, 126, + gMonPalette_Pinsir, 127, + gMonPalette_Tauros, 128, + gMonPalette_Magikarp, 129, + gMonPalette_Gyarados, 130, + gMonPalette_Lapras, 131, + gMonPalette_Ditto, 132, + gMonPalette_Eevee, 133, + gMonPalette_Vaporeon, 134, + gMonPalette_Jolteon, 135, + gMonPalette_Flareon, 136, + gMonPalette_Porygon, 137, + gMonPalette_Omanyte, 138, + gMonPalette_Omastar, 139, + gMonPalette_Kabuto, 140, + gMonPalette_Kabutops, 141, + gMonPalette_Aerodactyl, 142, + gMonPalette_Snorlax, 143, + gMonPalette_Articuno, 144, + gMonPalette_Zapdos, 145, + gMonPalette_Moltres, 146, + gMonPalette_Dratini, 147, + gMonPalette_Dragonair, 148, + gMonPalette_Dragonite, 149, + gMonPalette_Mewtwo, 150, + gMonPalette_Mew, 151, + gMonPalette_Chikorita, 152, + gMonPalette_Bayleef, 153, + gMonPalette_Meganium, 154, + gMonPalette_Cyndaquil, 155, + gMonPalette_Quilava, 156, + gMonPalette_Typhlosion, 157, + gMonPalette_Totodile, 158, + gMonPalette_Croconaw, 159, + gMonPalette_Feraligatr, 160, + gMonPalette_Sentret, 161, + gMonPalette_Furret, 162, + gMonPalette_Hoothoot, 163, + gMonPalette_Noctowl, 164, + gMonPalette_Ledyba, 165, + gMonPalette_Ledian, 166, + gMonPalette_Spinarak, 167, + gMonPalette_Ariados, 168, + gMonPalette_Crobat, 169, + gMonPalette_Chinchou, 170, + gMonPalette_Lanturn, 171, + gMonPalette_Pichu, 172, + gMonPalette_Cleffa, 173, + gMonPalette_Igglybuff, 174, + gMonPalette_Togepi, 175, + gMonPalette_Togetic, 176, + gMonPalette_Natu, 177, + gMonPalette_Xatu, 178, + gMonPalette_Mareep, 179, + gMonPalette_Flaaffy, 180, + gMonPalette_Ampharos, 181, + gMonPalette_Bellossom, 182, + gMonPalette_Marill, 183, + gMonPalette_Azumarill, 184, + gMonPalette_Sudowoodo, 185, + gMonPalette_Politoed, 186, + gMonPalette_Hoppip, 187, + gMonPalette_Skiploom, 188, + gMonPalette_Jumpluff, 189, + gMonPalette_Aipom, 190, + gMonPalette_Sunkern, 191, + gMonPalette_Sunflora, 192, + gMonPalette_Yanma, 193, + gMonPalette_Wooper, 194, + gMonPalette_Quagsire, 195, + gMonPalette_Espeon, 196, + gMonPalette_Umbreon, 197, + gMonPalette_Murkrow, 198, + gMonPalette_Slowking, 199, + gMonPalette_Misdreavus, 200, + gMonPalette_Unown, 201, + gMonPalette_Wobbuffet, 202, + gMonPalette_Girafarig, 203, + gMonPalette_Pineco, 204, + gMonPalette_Forretress, 205, + gMonPalette_Dunsparce, 206, + gMonPalette_Gligar, 207, + gMonPalette_Steelix, 208, + gMonPalette_Snubbull, 209, + gMonPalette_Granbull, 210, + gMonPalette_Qwilfish, 211, + gMonPalette_Scizor, 212, + gMonPalette_Shuckle, 213, + gMonPalette_Heracross, 214, + gMonPalette_Sneasel, 215, + gMonPalette_Teddiursa, 216, + gMonPalette_Ursaring, 217, + gMonPalette_Slugma, 218, + gMonPalette_Magcargo, 219, + gMonPalette_Swinub, 220, + gMonPalette_Piloswine, 221, + gMonPalette_Corsola, 222, + gMonPalette_Remoraid, 223, + gMonPalette_Octillery, 224, + gMonPalette_Delibird, 225, + gMonPalette_Mantine, 226, + gMonPalette_Skarmory, 227, + gMonPalette_Houndour, 228, + gMonPalette_Houndoom, 229, + gMonPalette_Kingdra, 230, + gMonPalette_Phanpy, 231, + gMonPalette_Donphan, 232, + gMonPalette_Porygon2, 233, + gMonPalette_Stantler, 234, + gMonPalette_Smeargle, 235, + gMonPalette_Tyrogue, 236, + gMonPalette_Hitmontop, 237, + gMonPalette_Smoochum, 238, + gMonPalette_Elekid, 239, + gMonPalette_Magby, 240, + gMonPalette_Miltank, 241, + gMonPalette_Blissey, 242, + gMonPalette_Raikou, 243, + gMonPalette_Entei, 244, + gMonPalette_Suicune, 245, + gMonPalette_Larvitar, 246, + gMonPalette_Pupitar, 247, + gMonPalette_Tyranitar, 248, + gMonPalette_Lugia, 249, + gMonPalette_HoOh, 250, + gMonPalette_Celebi, 251, + gMonPalette_DoubleQuestionMark, 252, + gMonPalette_DoubleQuestionMark, 253, + gMonPalette_DoubleQuestionMark, 254, + gMonPalette_DoubleQuestionMark, 255, + gMonPalette_DoubleQuestionMark, 256, + gMonPalette_DoubleQuestionMark, 257, + gMonPalette_DoubleQuestionMark, 258, + gMonPalette_DoubleQuestionMark, 259, + gMonPalette_DoubleQuestionMark, 260, + gMonPalette_DoubleQuestionMark, 261, + gMonPalette_DoubleQuestionMark, 262, + gMonPalette_DoubleQuestionMark, 263, + gMonPalette_DoubleQuestionMark, 264, + gMonPalette_DoubleQuestionMark, 265, + gMonPalette_DoubleQuestionMark, 266, + gMonPalette_DoubleQuestionMark, 267, + gMonPalette_DoubleQuestionMark, 268, + gMonPalette_DoubleQuestionMark, 269, + gMonPalette_DoubleQuestionMark, 270, + gMonPalette_DoubleQuestionMark, 271, + gMonPalette_DoubleQuestionMark, 272, + gMonPalette_DoubleQuestionMark, 273, + gMonPalette_DoubleQuestionMark, 274, + gMonPalette_DoubleQuestionMark, 275, + gMonPalette_DoubleQuestionMark, 276, + gMonPalette_Treecko, 277, + gMonPalette_Grovyle, 278, + gMonPalette_Sceptile, 279, + gMonPalette_Torchic, 280, + gMonPalette_Combusken, 281, + gMonPalette_Blaziken, 282, + gMonPalette_Mudkip, 283, + gMonPalette_Marshtomp, 284, + gMonPalette_Swampert, 285, + gMonPalette_Poochyena, 286, + gMonPalette_Mightyena, 287, + gMonPalette_Zigzagoon, 288, + gMonPalette_Linoone, 289, + gMonPalette_Wurmple, 290, + gMonPalette_Silcoon, 291, + gMonPalette_Beautifly, 292, + gMonPalette_Cascoon, 293, + gMonPalette_Dustox, 294, + gMonPalette_Lotad, 295, + gMonPalette_Lombre, 296, + gMonPalette_Ludicolo, 297, + gMonPalette_Seedot, 298, + gMonPalette_Nuzleaf, 299, + gMonPalette_Shiftry, 300, + gMonPalette_Nincada, 301, + gMonPalette_Ninjask, 302, + gMonPalette_Shedinja, 303, + gMonPalette_Taillow, 304, + gMonPalette_Swellow, 305, + gMonPalette_Shroomish, 306, + gMonPalette_Breloom, 307, + gMonPalette_Spinda, 308, + gMonPalette_Wingull, 309, + gMonPalette_Pelipper, 310, + gMonPalette_Surskit, 311, + gMonPalette_Masquerain, 312, + gMonPalette_Wailmer, 313, + gMonPalette_Wailord, 314, + gMonPalette_Skitty, 315, + gMonPalette_Delcatty, 316, + gMonPalette_Kecleon, 317, + gMonPalette_Baltoy, 318, + gMonPalette_Claydol, 319, + gMonPalette_Nosepass, 320, + gMonPalette_Torkoal, 321, + gMonPalette_Sableye, 322, + gMonPalette_Barboach, 323, + gMonPalette_Whiscash, 324, + gMonPalette_Luvdisc, 325, + gMonPalette_Corphish, 326, + gMonPalette_Crawdaunt, 327, + gMonPalette_Feebas, 328, + gMonPalette_Milotic, 329, + gMonPalette_Carvanha, 330, + gMonPalette_Sharpedo, 331, + gMonPalette_Trapinch, 332, + gMonPalette_Vibrava, 333, + gMonPalette_Flygon, 334, + gMonPalette_Makuhita, 335, + gMonPalette_Hariyama, 336, + gMonPalette_Electrike, 337, + gMonPalette_Manectric, 338, + gMonPalette_Numel, 339, + gMonPalette_Camerupt, 340, + gMonPalette_Spheal, 341, + gMonPalette_Sealeo, 342, + gMonPalette_Walrein, 343, + gMonPalette_Cacnea, 344, + gMonPalette_Cacturne, 345, + gMonPalette_Snorunt, 346, + gMonPalette_Glalie, 347, + gMonPalette_Lunatone, 348, + gMonPalette_Solrock, 349, + gMonPalette_Azurill, 350, + gMonPalette_Spoink, 351, + gMonPalette_Grumpig, 352, + gMonPalette_Plusle, 353, + gMonPalette_Minun, 354, + gMonPalette_Mawile, 355, + gMonPalette_Meditite, 356, + gMonPalette_Medicham, 357, + gMonPalette_Swablu, 358, + gMonPalette_Altaria, 359, + gMonPalette_Wynaut, 360, + gMonPalette_Duskull, 361, + gMonPalette_Dusclops, 362, + gMonPalette_Roselia, 363, + gMonPalette_Slakoth, 364, + gMonPalette_Vigoroth, 365, + gMonPalette_Slaking, 366, + gMonPalette_Gulpin, 367, + gMonPalette_Swalot, 368, + gMonPalette_Tropius, 369, + gMonPalette_Whismur, 370, + gMonPalette_Loudred, 371, + gMonPalette_Exploud, 372, + gMonPalette_Clamperl, 373, + gMonPalette_Huntail, 374, + gMonPalette_Gorebyss, 375, + gMonPalette_Absol, 376, + gMonPalette_Shuppet, 377, + gMonPalette_Banette, 378, + gMonPalette_Seviper, 379, + gMonPalette_Zangoose, 380, + gMonPalette_Relicanth, 381, + gMonPalette_Aron, 382, + gMonPalette_Lairon, 383, + gMonPalette_Aggron, 384, + gMonPalette_Castform, 385, + gMonPalette_Volbeat, 386, + gMonPalette_Illumise, 387, + gMonPalette_Lileep, 388, + gMonPalette_Cradily, 389, + gMonPalette_Anorith, 390, + gMonPalette_Armaldo, 391, + gMonPalette_Ralts, 392, + gMonPalette_Kirlia, 393, + gMonPalette_Gardevoir, 394, + gMonPalette_Bagon, 395, + gMonPalette_Shelgon, 396, + gMonPalette_Salamence, 397, + gMonPalette_Beldum, 398, + gMonPalette_Metang, 399, + gMonPalette_Metagross, 400, + gMonPalette_Regirock, 401, + gMonPalette_Regice, 402, + gMonPalette_Registeel, 403, + gMonPalette_Kyogre, 404, + gMonPalette_Groudon, 405, + gMonPalette_Rayquaza, 406, + gMonPalette_Latias, 407, + gMonPalette_Latios, 408, + gMonPalette_Jirachi, 409, + gMonPalette_Deoxys, 410, + gMonPalette_Chimecho, 411, + gMonPalette_Egg, 412, + gMonPalette_Unown, 413, + gMonPalette_Unown, 414, + gMonPalette_Unown, 415, + gMonPalette_Unown, 416, + gMonPalette_Unown, 417, + gMonPalette_Unown, 418, + gMonPalette_Unown, 419, + gMonPalette_Unown, 420, + gMonPalette_Unown, 421, + gMonPalette_Unown, 422, + gMonPalette_Unown, 423, + gMonPalette_Unown, 424, + gMonPalette_Unown, 425, + gMonPalette_Unown, 426, + gMonPalette_Unown, 427, + gMonPalette_Unown, 428, + gMonPalette_Unown, 429, + gMonPalette_Unown, 430, + gMonPalette_Unown, 431, + gMonPalette_Unown, 432, + gMonPalette_Unown, 433, + gMonPalette_Unown, 434, + gMonPalette_Unown, 435, + gMonPalette_Unown, 436, + gMonPalette_Unown, 437, + gMonPalette_Unown, 438, + gMonPalette_Unown, 439, +}; diff --git a/src/data/pokemon_graphics/shiny_palette_table.h b/src/data/pokemon_graphics/shiny_palette_table.h new file mode 100644 index 000000000..91708fafa --- /dev/null +++ b/src/data/pokemon_graphics/shiny_palette_table.h @@ -0,0 +1,443 @@ +const struct CompressedSpritePalette gMonShinyPaletteTable[] = +{ + gMonShinyPalette_CircledQuestionMark, 500, + gMonShinyPalette_Bulbasaur, 501, + gMonShinyPalette_Ivysaur, 502, + gMonShinyPalette_Venusaur, 503, + gMonShinyPalette_Charmander, 504, + gMonShinyPalette_Charmeleon, 505, + gMonShinyPalette_Charizard, 506, + gMonShinyPalette_Squirtle, 507, + gMonShinyPalette_Wartortle, 508, + gMonShinyPalette_Blastoise, 509, + gMonShinyPalette_Caterpie, 510, + gMonShinyPalette_Metapod, 511, + gMonShinyPalette_Butterfree, 512, + gMonShinyPalette_Weedle, 513, + gMonShinyPalette_Kakuna, 514, + gMonShinyPalette_Beedrill, 515, + gMonShinyPalette_Pidgey, 516, + gMonShinyPalette_Pidgeotto, 517, + gMonShinyPalette_Pidgeot, 518, + gMonShinyPalette_Rattata, 519, + gMonShinyPalette_Raticate, 520, + gMonShinyPalette_Spearow, 521, + gMonShinyPalette_Fearow, 522, + gMonShinyPalette_Ekans, 523, + gMonShinyPalette_Arbok, 524, + gMonShinyPalette_Pikachu, 525, + gMonShinyPalette_Raichu, 526, + gMonShinyPalette_Sandshrew, 527, + gMonShinyPalette_Sandslash, 528, + gMonShinyPalette_NidoranF, 529, + gMonShinyPalette_Nidorina, 530, + gMonShinyPalette_Nidoqueen, 531, + gMonShinyPalette_NidoranM, 532, + gMonShinyPalette_Nidorino, 533, + gMonShinyPalette_Nidoking, 534, + gMonShinyPalette_Clefairy, 535, + gMonShinyPalette_Clefable, 536, + gMonShinyPalette_Vulpix, 537, + gMonShinyPalette_Ninetales, 538, + gMonShinyPalette_Jigglypuff, 539, + gMonShinyPalette_Wigglytuff, 540, + gMonShinyPalette_Zubat, 541, + gMonShinyPalette_Golbat, 542, + gMonShinyPalette_Oddish, 543, + gMonShinyPalette_Gloom, 544, + gMonShinyPalette_Vileplume, 545, + gMonShinyPalette_Paras, 546, + gMonShinyPalette_Parasect, 547, + gMonShinyPalette_Venonat, 548, + gMonShinyPalette_Venomoth, 549, + gMonShinyPalette_Diglett, 550, + gMonShinyPalette_Dugtrio, 551, + gMonShinyPalette_Meowth, 552, + gMonShinyPalette_Persian, 553, + gMonShinyPalette_Psyduck, 554, + gMonShinyPalette_Golduck, 555, + gMonShinyPalette_Mankey, 556, + gMonShinyPalette_Primeape, 557, + gMonShinyPalette_Growlithe, 558, + gMonShinyPalette_Arcanine, 559, + gMonShinyPalette_Poliwag, 560, + gMonShinyPalette_Poliwhirl, 561, + gMonShinyPalette_Poliwrath, 562, + gMonShinyPalette_Abra, 563, + gMonShinyPalette_Kadabra, 564, + gMonShinyPalette_Alakazam, 565, + gMonShinyPalette_Machop, 566, + gMonShinyPalette_Machoke, 567, + gMonShinyPalette_Machamp, 568, + gMonShinyPalette_Bellsprout, 569, + gMonShinyPalette_Weepinbell, 570, + gMonShinyPalette_Victreebel, 571, + gMonShinyPalette_Tentacool, 572, + gMonShinyPalette_Tentacruel, 573, + gMonShinyPalette_Geodude, 574, + gMonShinyPalette_Graveler, 575, + gMonShinyPalette_Golem, 576, + gMonShinyPalette_Ponyta, 577, + gMonShinyPalette_Rapidash, 578, + gMonShinyPalette_Slowpoke, 579, + gMonShinyPalette_Slowbro, 580, + gMonShinyPalette_Magnemite, 581, + gMonShinyPalette_Magneton, 582, + gMonShinyPalette_Farfetchd, 583, + gMonShinyPalette_Doduo, 584, + gMonShinyPalette_Dodrio, 585, + gMonShinyPalette_Seel, 586, + gMonShinyPalette_Dewgong, 587, + gMonShinyPalette_Grimer, 588, + gMonShinyPalette_Muk, 589, + gMonShinyPalette_Shellder, 590, + gMonShinyPalette_Cloyster, 591, + gMonShinyPalette_Gastly, 592, + gMonShinyPalette_Haunter, 593, + gMonShinyPalette_Gengar, 594, + gMonShinyPalette_Onix, 595, + gMonShinyPalette_Drowzee, 596, + gMonShinyPalette_Hypno, 597, + gMonShinyPalette_Krabby, 598, + gMonShinyPalette_Kingler, 599, + gMonShinyPalette_Voltorb, 600, + gMonShinyPalette_Electrode, 601, + gMonShinyPalette_Exeggcute, 602, + gMonShinyPalette_Exeggutor, 603, + gMonShinyPalette_Cubone, 604, + gMonShinyPalette_Marowak, 605, + gMonShinyPalette_Hitmonlee, 606, + gMonShinyPalette_Hitmonchan, 607, + gMonShinyPalette_Lickitung, 608, + gMonShinyPalette_Koffing, 609, + gMonShinyPalette_Weezing, 610, + gMonShinyPalette_Rhyhorn, 611, + gMonShinyPalette_Rhydon, 612, + gMonShinyPalette_Chansey, 613, + gMonShinyPalette_Tangela, 614, + gMonShinyPalette_Kangaskhan, 615, + gMonShinyPalette_Horsea, 616, + gMonShinyPalette_Seadra, 617, + gMonShinyPalette_Goldeen, 618, + gMonShinyPalette_Seaking, 619, + gMonShinyPalette_Staryu, 620, + gMonShinyPalette_Starmie, 621, + gMonShinyPalette_Mrmime, 622, + gMonShinyPalette_Scyther, 623, + gMonShinyPalette_Jynx, 624, + gMonShinyPalette_Electabuzz, 625, + gMonShinyPalette_Magmar, 626, + gMonShinyPalette_Pinsir, 627, + gMonShinyPalette_Tauros, 628, + gMonShinyPalette_Magikarp, 629, + gMonShinyPalette_Gyarados, 630, + gMonShinyPalette_Lapras, 631, + gMonShinyPalette_Ditto, 632, + gMonShinyPalette_Eevee, 633, + gMonShinyPalette_Vaporeon, 634, + gMonShinyPalette_Jolteon, 635, + gMonShinyPalette_Flareon, 636, + gMonShinyPalette_Porygon, 637, + gMonShinyPalette_Omanyte, 638, + gMonShinyPalette_Omastar, 639, + gMonShinyPalette_Kabuto, 640, + gMonShinyPalette_Kabutops, 641, + gMonShinyPalette_Aerodactyl, 642, + gMonShinyPalette_Snorlax, 643, + gMonShinyPalette_Articuno, 644, + gMonShinyPalette_Zapdos, 645, + gMonShinyPalette_Moltres, 646, + gMonShinyPalette_Dratini, 647, + gMonShinyPalette_Dragonair, 648, + gMonShinyPalette_Dragonite, 649, + gMonShinyPalette_Mewtwo, 650, + gMonShinyPalette_Mew, 651, + gMonShinyPalette_Chikorita, 652, + gMonShinyPalette_Bayleef, 653, + gMonShinyPalette_Meganium, 654, + gMonShinyPalette_Cyndaquil, 655, + gMonShinyPalette_Quilava, 656, + gMonShinyPalette_Typhlosion, 657, + gMonShinyPalette_Totodile, 658, + gMonShinyPalette_Croconaw, 659, + gMonShinyPalette_Feraligatr, 660, + gMonShinyPalette_Sentret, 661, + gMonShinyPalette_Furret, 662, + gMonShinyPalette_Hoothoot, 663, + gMonShinyPalette_Noctowl, 664, + gMonShinyPalette_Ledyba, 665, + gMonShinyPalette_Ledian, 666, + gMonShinyPalette_Spinarak, 667, + gMonShinyPalette_Ariados, 668, + gMonShinyPalette_Crobat, 669, + gMonShinyPalette_Chinchou, 670, + gMonShinyPalette_Lanturn, 671, + gMonShinyPalette_Pichu, 672, + gMonShinyPalette_Cleffa, 673, + gMonShinyPalette_Igglybuff, 674, + gMonShinyPalette_Togepi, 675, + gMonShinyPalette_Togetic, 676, + gMonShinyPalette_Natu, 677, + gMonShinyPalette_Xatu, 678, + gMonShinyPalette_Mareep, 679, + gMonShinyPalette_Flaaffy, 680, + gMonShinyPalette_Ampharos, 681, + gMonShinyPalette_Bellossom, 682, + gMonShinyPalette_Marill, 683, + gMonShinyPalette_Azumarill, 684, + gMonShinyPalette_Sudowoodo, 685, + gMonShinyPalette_Politoed, 686, + gMonShinyPalette_Hoppip, 687, + gMonShinyPalette_Skiploom, 688, + gMonShinyPalette_Jumpluff, 689, + gMonShinyPalette_Aipom, 690, + gMonShinyPalette_Sunkern, 691, + gMonShinyPalette_Sunflora, 692, + gMonShinyPalette_Yanma, 693, + gMonShinyPalette_Wooper, 694, + gMonShinyPalette_Quagsire, 695, + gMonShinyPalette_Espeon, 696, + gMonShinyPalette_Umbreon, 697, + gMonShinyPalette_Murkrow, 698, + gMonShinyPalette_Slowking, 699, + gMonShinyPalette_Misdreavus, 700, + gMonShinyPalette_Unown, 701, + gMonShinyPalette_Wobbuffet, 702, + gMonShinyPalette_Girafarig, 703, + gMonShinyPalette_Pineco, 704, + gMonShinyPalette_Forretress, 705, + gMonShinyPalette_Dunsparce, 706, + gMonShinyPalette_Gligar, 707, + gMonShinyPalette_Steelix, 708, + gMonShinyPalette_Snubbull, 709, + gMonShinyPalette_Granbull, 710, + gMonShinyPalette_Qwilfish, 711, + gMonShinyPalette_Scizor, 712, + gMonShinyPalette_Shuckle, 713, + gMonShinyPalette_Heracross, 714, + gMonShinyPalette_Sneasel, 715, + gMonShinyPalette_Teddiursa, 716, + gMonShinyPalette_Ursaring, 717, + gMonShinyPalette_Slugma, 718, + gMonShinyPalette_Magcargo, 719, + gMonShinyPalette_Swinub, 720, + gMonShinyPalette_Piloswine, 721, + gMonShinyPalette_Corsola, 722, + gMonShinyPalette_Remoraid, 723, + gMonShinyPalette_Octillery, 724, + gMonShinyPalette_Delibird, 725, + gMonShinyPalette_Mantine, 726, + gMonShinyPalette_Skarmory, 727, + gMonShinyPalette_Houndour, 728, + gMonShinyPalette_Houndoom, 729, + gMonShinyPalette_Kingdra, 730, + gMonShinyPalette_Phanpy, 731, + gMonShinyPalette_Donphan, 732, + gMonShinyPalette_Porygon2, 733, + gMonShinyPalette_Stantler, 734, + gMonShinyPalette_Smeargle, 735, + gMonShinyPalette_Tyrogue, 736, + gMonShinyPalette_Hitmontop, 737, + gMonShinyPalette_Smoochum, 738, + gMonShinyPalette_Elekid, 739, + gMonShinyPalette_Magby, 740, + gMonShinyPalette_Miltank, 741, + gMonShinyPalette_Blissey, 742, + gMonShinyPalette_Raikou, 743, + gMonShinyPalette_Entei, 744, + gMonShinyPalette_Suicune, 745, + gMonShinyPalette_Larvitar, 746, + gMonShinyPalette_Pupitar, 747, + gMonShinyPalette_Tyranitar, 748, + gMonShinyPalette_Lugia, 749, + gMonShinyPalette_HoOh, 750, + gMonShinyPalette_Celebi, 751, + gMonShinyPalette_DoubleQuestionMark, 752, + gMonShinyPalette_DoubleQuestionMark, 753, + gMonShinyPalette_DoubleQuestionMark, 754, + gMonShinyPalette_DoubleQuestionMark, 755, + gMonShinyPalette_DoubleQuestionMark, 756, + gMonShinyPalette_DoubleQuestionMark, 757, + gMonShinyPalette_DoubleQuestionMark, 758, + gMonShinyPalette_DoubleQuestionMark, 759, + gMonShinyPalette_DoubleQuestionMark, 760, + gMonShinyPalette_DoubleQuestionMark, 761, + gMonShinyPalette_DoubleQuestionMark, 762, + gMonShinyPalette_DoubleQuestionMark, 763, + gMonShinyPalette_DoubleQuestionMark, 764, + gMonShinyPalette_DoubleQuestionMark, 765, + gMonShinyPalette_DoubleQuestionMark, 766, + gMonShinyPalette_DoubleQuestionMark, 767, + gMonShinyPalette_DoubleQuestionMark, 768, + gMonShinyPalette_DoubleQuestionMark, 769, + gMonShinyPalette_DoubleQuestionMark, 770, + gMonShinyPalette_DoubleQuestionMark, 771, + gMonShinyPalette_DoubleQuestionMark, 772, + gMonShinyPalette_DoubleQuestionMark, 773, + gMonShinyPalette_DoubleQuestionMark, 774, + gMonShinyPalette_DoubleQuestionMark, 775, + gMonShinyPalette_DoubleQuestionMark, 776, + gMonShinyPalette_Treecko, 777, + gMonShinyPalette_Grovyle, 778, + gMonShinyPalette_Sceptile, 779, + gMonShinyPalette_Torchic, 780, + gMonShinyPalette_Combusken, 781, + gMonShinyPalette_Blaziken, 782, + gMonShinyPalette_Mudkip, 783, + gMonShinyPalette_Marshtomp, 784, + gMonShinyPalette_Swampert, 785, + gMonShinyPalette_Poochyena, 786, + gMonShinyPalette_Mightyena, 787, + gMonShinyPalette_Zigzagoon, 788, + gMonShinyPalette_Linoone, 789, + gMonShinyPalette_Wurmple, 790, + gMonShinyPalette_Silcoon, 791, + gMonShinyPalette_Beautifly, 792, + gMonShinyPalette_Cascoon, 793, + gMonShinyPalette_Dustox, 794, + gMonShinyPalette_Lotad, 795, + gMonShinyPalette_Lombre, 796, + gMonShinyPalette_Ludicolo, 797, + gMonShinyPalette_Seedot, 798, + gMonShinyPalette_Nuzleaf, 799, + gMonShinyPalette_Shiftry, 800, + gMonShinyPalette_Nincada, 801, + gMonShinyPalette_Ninjask, 802, + gMonShinyPalette_Shedinja, 803, + gMonShinyPalette_Taillow, 804, + gMonShinyPalette_Swellow, 805, + gMonShinyPalette_Shroomish, 806, + gMonShinyPalette_Breloom, 807, + gMonShinyPalette_Spinda, 808, + gMonShinyPalette_Wingull, 809, + gMonShinyPalette_Pelipper, 810, + gMonShinyPalette_Surskit, 811, + gMonShinyPalette_Masquerain, 812, + gMonShinyPalette_Wailmer, 813, + gMonShinyPalette_Wailord, 814, + gMonShinyPalette_Skitty, 815, + gMonShinyPalette_Delcatty, 816, + gMonShinyPalette_Kecleon, 817, + gMonShinyPalette_Baltoy, 818, + gMonShinyPalette_Claydol, 819, + gMonShinyPalette_Nosepass, 820, + gMonShinyPalette_Torkoal, 821, + gMonShinyPalette_Sableye, 822, + gMonShinyPalette_Barboach, 823, + gMonShinyPalette_Whiscash, 824, + gMonShinyPalette_Luvdisc, 825, + gMonShinyPalette_Corphish, 826, + gMonShinyPalette_Crawdaunt, 827, + gMonShinyPalette_Feebas, 828, + gMonShinyPalette_Milotic, 829, + gMonShinyPalette_Carvanha, 830, + gMonShinyPalette_Sharpedo, 831, + gMonShinyPalette_Trapinch, 832, + gMonShinyPalette_Vibrava, 833, + gMonShinyPalette_Flygon, 834, + gMonShinyPalette_Makuhita, 835, + gMonShinyPalette_Hariyama, 836, + gMonShinyPalette_Electrike, 837, + gMonShinyPalette_Manectric, 838, + gMonShinyPalette_Numel, 839, + gMonShinyPalette_Camerupt, 840, + gMonShinyPalette_Spheal, 841, + gMonShinyPalette_Sealeo, 842, + gMonShinyPalette_Walrein, 843, + gMonShinyPalette_Cacnea, 844, + gMonShinyPalette_Cacturne, 845, + gMonShinyPalette_Snorunt, 846, + gMonShinyPalette_Glalie, 847, + gMonShinyPalette_Lunatone, 848, + gMonShinyPalette_Solrock, 849, + gMonShinyPalette_Azurill, 850, + gMonShinyPalette_Spoink, 851, + gMonShinyPalette_Grumpig, 852, + gMonShinyPalette_Plusle, 853, + gMonShinyPalette_Minun, 854, + gMonShinyPalette_Mawile, 855, + gMonShinyPalette_Meditite, 856, + gMonShinyPalette_Medicham, 857, + gMonShinyPalette_Swablu, 858, + gMonShinyPalette_Altaria, 859, + gMonShinyPalette_Wynaut, 860, + gMonShinyPalette_Duskull, 861, + gMonShinyPalette_Dusclops, 862, + gMonShinyPalette_Roselia, 863, + gMonShinyPalette_Slakoth, 864, + gMonShinyPalette_Vigoroth, 865, + gMonShinyPalette_Slaking, 866, + gMonShinyPalette_Gulpin, 867, + gMonShinyPalette_Swalot, 868, + gMonShinyPalette_Tropius, 869, + gMonShinyPalette_Whismur, 870, + gMonShinyPalette_Loudred, 871, + gMonShinyPalette_Exploud, 872, + gMonShinyPalette_Clamperl, 873, + gMonShinyPalette_Huntail, 874, + gMonShinyPalette_Gorebyss, 875, + gMonShinyPalette_Absol, 876, + gMonShinyPalette_Shuppet, 877, + gMonShinyPalette_Banette, 878, + gMonShinyPalette_Seviper, 879, + gMonShinyPalette_Zangoose, 880, + gMonShinyPalette_Relicanth, 881, + gMonShinyPalette_Aron, 882, + gMonShinyPalette_Lairon, 883, + gMonShinyPalette_Aggron, 884, + gMonShinyPalette_Castform, 885, + gMonShinyPalette_Volbeat, 886, + gMonShinyPalette_Illumise, 887, + gMonShinyPalette_Lileep, 888, + gMonShinyPalette_Cradily, 889, + gMonShinyPalette_Anorith, 890, + gMonShinyPalette_Armaldo, 891, + gMonShinyPalette_Ralts, 892, + gMonShinyPalette_Kirlia, 893, + gMonShinyPalette_Gardevoir, 894, + gMonShinyPalette_Bagon, 895, + gMonShinyPalette_Shelgon, 896, + gMonShinyPalette_Salamence, 897, + gMonShinyPalette_Beldum, 898, + gMonShinyPalette_Metang, 899, + gMonShinyPalette_Metagross, 900, + gMonShinyPalette_Regirock, 901, + gMonShinyPalette_Regice, 902, + gMonShinyPalette_Registeel, 903, + gMonShinyPalette_Kyogre, 904, + gMonShinyPalette_Groudon, 905, + gMonShinyPalette_Rayquaza, 906, + gMonShinyPalette_Latias, 907, + gMonShinyPalette_Latios, 908, + gMonShinyPalette_Jirachi, 909, + gMonShinyPalette_Deoxys, 910, + gMonShinyPalette_Chimecho, 911, + gMonPalette_Egg, 912, + gMonShinyPalette_Unown, 913, + gMonShinyPalette_Unown, 914, + gMonShinyPalette_Unown, 915, + gMonShinyPalette_Unown, 916, + gMonShinyPalette_Unown, 917, + gMonShinyPalette_Unown, 918, + gMonShinyPalette_Unown, 919, + gMonShinyPalette_Unown, 920, + gMonShinyPalette_Unown, 921, + gMonShinyPalette_Unown, 922, + gMonShinyPalette_Unown, 923, + gMonShinyPalette_Unown, 924, + gMonShinyPalette_Unown, 925, + gMonShinyPalette_Unown, 926, + gMonShinyPalette_Unown, 927, + gMonShinyPalette_Unown, 928, + gMonShinyPalette_Unown, 929, + gMonShinyPalette_Unown, 930, + gMonShinyPalette_Unown, 931, + gMonShinyPalette_Unown, 932, + gMonShinyPalette_Unown, 933, + gMonShinyPalette_Unown, 934, + gMonShinyPalette_Unown, 935, + gMonShinyPalette_Unown, 936, + gMonShinyPalette_Unown, 937, + gMonShinyPalette_Unown, 938, + gMonShinyPalette_Unown, 939, +}; diff --git a/src/data/pokemon_graphics/still_front_pic_table.h b/src/data/pokemon_graphics/still_front_pic_table.h new file mode 100644 index 000000000..a345a3d43 --- /dev/null +++ b/src/data/pokemon_graphics/still_front_pic_table.h @@ -0,0 +1,446 @@ +const struct CompressedSpriteSheet gMonStillFrontPicTable[] = +{ //.data .size .tag + gMonStillFrontPic_CircledQuestionMark, 0x800, 0, + gMonStillFrontPic_Bulbasaur, 0x800, 1, + gMonStillFrontPic_Ivysaur, 0x800, 2, + gMonStillFrontPic_Venusaur, 0x800, 3, + gMonStillFrontPic_Charmander, 0x800, 4, + gMonStillFrontPic_Charmeleon, 0x800, 5, + gMonStillFrontPic_Charizard, 0x800, 6, + gMonStillFrontPic_Squirtle, 0x800, 7, + gMonStillFrontPic_Wartortle, 0x800, 8, + gMonStillFrontPic_Blastoise, 0x800, 9, + gMonStillFrontPic_Caterpie, 0x800, 10, + gMonStillFrontPic_Metapod, 0x800, 11, + gMonStillFrontPic_Butterfree, 0x800, 12, + gMonStillFrontPic_Weedle, 0x800, 13, + gMonStillFrontPic_Kakuna, 0x800, 14, + gMonStillFrontPic_Beedrill, 0x800, 15, + gMonStillFrontPic_Pidgey, 0x800, 16, + gMonStillFrontPic_Pidgeotto, 0x800, 17, + gMonStillFrontPic_Pidgeot, 0x800, 18, + gMonStillFrontPic_Rattata, 0x800, 19, + gMonStillFrontPic_Raticate, 0x800, 20, + gMonStillFrontPic_Spearow, 0x800, 21, + gMonStillFrontPic_Fearow, 0x800, 22, + gMonStillFrontPic_Ekans, 0x800, 23, + gMonStillFrontPic_Arbok, 0x800, 24, + gMonStillFrontPic_Pikachu, 0x800, 25, + gMonStillFrontPic_Raichu, 0x800, 26, + gMonStillFrontPic_Sandshrew, 0x800, 27, + gMonStillFrontPic_Sandslash, 0x800, 28, + gMonStillFrontPic_NidoranF, 0x800, 29, + gMonStillFrontPic_Nidorina, 0x800, 30, + gMonStillFrontPic_Nidoqueen, 0x800, 31, + gMonStillFrontPic_NidoranM, 0x800, 32, + gMonStillFrontPic_Nidorino, 0x800, 33, + gMonStillFrontPic_Nidoking, 0x800, 34, + gMonStillFrontPic_Clefairy, 0x800, 35, + gMonStillFrontPic_Clefable, 0x800, 36, + gMonStillFrontPic_Vulpix, 0x800, 37, + gMonStillFrontPic_Ninetales, 0x800, 38, + gMonStillFrontPic_Jigglypuff, 0x800, 39, + gMonStillFrontPic_Wigglytuff, 0x800, 40, + gMonStillFrontPic_Zubat, 0x800, 41, + gMonStillFrontPic_Golbat, 0x800, 42, + gMonStillFrontPic_Oddish, 0x800, 43, + gMonStillFrontPic_Gloom, 0x800, 44, + gMonStillFrontPic_Vileplume, 0x800, 45, + gMonStillFrontPic_Paras, 0x800, 46, + gMonStillFrontPic_Parasect, 0x800, 47, + gMonStillFrontPic_Venonat, 0x800, 48, + gMonStillFrontPic_Venomoth, 0x800, 49, + gMonStillFrontPic_Diglett, 0x800, 50, + gMonStillFrontPic_Dugtrio, 0x800, 51, + gMonStillFrontPic_Meowth, 0x800, 52, + gMonStillFrontPic_Persian, 0x800, 53, + gMonStillFrontPic_Psyduck, 0x800, 54, + gMonStillFrontPic_Golduck, 0x800, 55, + gMonStillFrontPic_Mankey, 0x800, 56, + gMonStillFrontPic_Primeape, 0x800, 57, + gMonStillFrontPic_Growlithe, 0x800, 58, + gMonStillFrontPic_Arcanine, 0x800, 59, + gMonStillFrontPic_Poliwag, 0x800, 60, + gMonStillFrontPic_Poliwhirl, 0x800, 61, + gMonStillFrontPic_Poliwrath, 0x800, 62, + gMonStillFrontPic_Abra, 0x800, 63, + gMonStillFrontPic_Kadabra, 0x800, 64, + gMonStillFrontPic_Alakazam, 0x800, 65, + gMonStillFrontPic_Machop, 0x800, 66, + gMonStillFrontPic_Machoke, 0x800, 67, + gMonStillFrontPic_Machamp, 0x800, 68, + gMonStillFrontPic_Bellsprout, 0x800, 69, + gMonStillFrontPic_Weepinbell, 0x800, 70, + gMonStillFrontPic_Victreebel, 0x800, 71, + gMonStillFrontPic_Tentacool, 0x800, 72, + gMonStillFrontPic_Tentacruel, 0x800, 73, + gMonStillFrontPic_Geodude, 0x800, 74, + gMonStillFrontPic_Graveler, 0x800, 75, + gMonStillFrontPic_Golem, 0x800, 76, + gMonStillFrontPic_Ponyta, 0x800, 77, + gMonStillFrontPic_Rapidash, 0x800, 78, + gMonStillFrontPic_Slowpoke, 0x800, 79, + gMonStillFrontPic_Slowbro, 0x800, 80, + gMonStillFrontPic_Magnemite, 0x800, 81, + gMonStillFrontPic_Magneton, 0x800, 82, + gMonStillFrontPic_Farfetchd, 0x800, 83, + gMonStillFrontPic_Doduo, 0x800, 84, + gMonStillFrontPic_Dodrio, 0x800, 85, + gMonStillFrontPic_Seel, 0x800, 86, + gMonStillFrontPic_Dewgong, 0x800, 87, + gMonStillFrontPic_Grimer, 0x800, 88, + gMonStillFrontPic_Muk, 0x800, 89, + gMonStillFrontPic_Shellder, 0x800, 90, + gMonStillFrontPic_Cloyster, 0x800, 91, + gMonStillFrontPic_Gastly, 0x800, 92, + gMonStillFrontPic_Haunter, 0x800, 93, + gMonStillFrontPic_Gengar, 0x800, 94, + gMonStillFrontPic_Onix, 0x800, 95, + gMonStillFrontPic_Drowzee, 0x800, 96, + gMonStillFrontPic_Hypno, 0x800, 97, + gMonStillFrontPic_Krabby, 0x800, 98, + gMonStillFrontPic_Kingler, 0x800, 99, + gMonStillFrontPic_Voltorb, 0x800, 100, + gMonStillFrontPic_Electrode, 0x800, 101, + gMonStillFrontPic_Exeggcute, 0x800, 102, + gMonStillFrontPic_Exeggutor, 0x800, 103, + gMonStillFrontPic_Cubone, 0x800, 104, + gMonStillFrontPic_Marowak, 0x800, 105, + gMonStillFrontPic_Hitmonlee, 0x800, 106, + gMonStillFrontPic_Hitmonchan, 0x800, 107, + gMonStillFrontPic_Lickitung, 0x800, 108, + gMonStillFrontPic_Koffing, 0x800, 109, + gMonStillFrontPic_Weezing, 0x800, 110, + gMonStillFrontPic_Rhyhorn, 0x800, 111, + gMonStillFrontPic_Rhydon, 0x800, 112, + gMonStillFrontPic_Chansey, 0x800, 113, + gMonStillFrontPic_Tangela, 0x800, 114, + gMonStillFrontPic_Kangaskhan, 0x800, 115, + gMonStillFrontPic_Horsea, 0x800, 116, + gMonStillFrontPic_Seadra, 0x800, 117, + gMonStillFrontPic_Goldeen, 0x800, 118, + gMonStillFrontPic_Seaking, 0x800, 119, + gMonStillFrontPic_Staryu, 0x800, 120, + gMonStillFrontPic_Starmie, 0x800, 121, + gMonStillFrontPic_Mrmime, 0x800, 122, + gMonStillFrontPic_Scyther, 0x800, 123, + gMonStillFrontPic_Jynx, 0x800, 124, + gMonStillFrontPic_Electabuzz, 0x800, 125, + gMonStillFrontPic_Magmar, 0x800, 126, + gMonStillFrontPic_Pinsir, 0x800, 127, + gMonStillFrontPic_Tauros, 0x800, 128, + gMonStillFrontPic_Magikarp, 0x800, 129, + gMonStillFrontPic_Gyarados, 0x800, 130, + gMonStillFrontPic_Lapras, 0x800, 131, + gMonStillFrontPic_Ditto, 0x800, 132, + gMonStillFrontPic_Eevee, 0x800, 133, + gMonStillFrontPic_Vaporeon, 0x800, 134, + gMonStillFrontPic_Jolteon, 0x800, 135, + gMonStillFrontPic_Flareon, 0x800, 136, + gMonStillFrontPic_Porygon, 0x800, 137, + gMonStillFrontPic_Omanyte, 0x800, 138, + gMonStillFrontPic_Omastar, 0x800, 139, + gMonStillFrontPic_Kabuto, 0x800, 140, + gMonStillFrontPic_Kabutops, 0x800, 141, + gMonStillFrontPic_Aerodactyl, 0x800, 142, + gMonStillFrontPic_Snorlax, 0x800, 143, + gMonStillFrontPic_Articuno, 0x800, 144, + gMonStillFrontPic_Zapdos, 0x800, 145, + gMonStillFrontPic_Moltres, 0x800, 146, + gMonStillFrontPic_Dratini, 0x800, 147, + gMonStillFrontPic_Dragonair, 0x800, 148, + gMonStillFrontPic_Dragonite, 0x800, 149, + gMonStillFrontPic_Mewtwo, 0x800, 150, + gMonStillFrontPic_Mew, 0x800, 151, +// Gen II + gMonStillFrontPic_Chikorita, 0x800, 152, + gMonStillFrontPic_Bayleef, 0x800, 153, + gMonStillFrontPic_Meganium, 0x800, 154, + gMonStillFrontPic_Cyndaquil, 0x800, 155, + gMonStillFrontPic_Quilava, 0x800, 156, + gMonStillFrontPic_Typhlosion, 0x800, 157, + gMonStillFrontPic_Totodile, 0x800, 158, + gMonStillFrontPic_Croconaw, 0x800, 159, + gMonStillFrontPic_Feraligatr, 0x800, 160, + gMonStillFrontPic_Sentret, 0x800, 161, + gMonStillFrontPic_Furret, 0x800, 162, + gMonStillFrontPic_Hoothoot, 0x800, 163, + gMonStillFrontPic_Noctowl, 0x800, 164, + gMonStillFrontPic_Ledyba, 0x800, 165, + gMonStillFrontPic_Ledian, 0x800, 166, + gMonStillFrontPic_Spinarak, 0x800, 167, + gMonStillFrontPic_Ariados, 0x800, 168, + gMonStillFrontPic_Crobat, 0x800, 169, + gMonStillFrontPic_Chinchou, 0x800, 170, + gMonStillFrontPic_Lanturn, 0x800, 171, + gMonStillFrontPic_Pichu, 0x800, 172, + gMonStillFrontPic_Cleffa, 0x800, 173, + gMonStillFrontPic_Igglybuff, 0x800, 174, + gMonStillFrontPic_Togepi, 0x800, 175, + gMonStillFrontPic_Togetic, 0x800, 176, + gMonStillFrontPic_Natu, 0x800, 177, + gMonStillFrontPic_Xatu, 0x800, 178, + gMonStillFrontPic_Mareep, 0x800, 179, + gMonStillFrontPic_Flaaffy, 0x800, 180, + gMonStillFrontPic_Ampharos, 0x800, 181, + gMonStillFrontPic_Bellossom, 0x800, 182, + gMonStillFrontPic_Marill, 0x800, 183, + gMonStillFrontPic_Azumarill, 0x800, 184, + gMonStillFrontPic_Sudowoodo, 0x800, 185, + gMonStillFrontPic_Politoed, 0x800, 186, + gMonStillFrontPic_Hoppip, 0x800, 187, + gMonStillFrontPic_Skiploom, 0x800, 188, + gMonStillFrontPic_Jumpluff, 0x800, 189, + gMonStillFrontPic_Aipom, 0x800, 190, + gMonStillFrontPic_Sunkern, 0x800, 191, + gMonStillFrontPic_Sunflora, 0x800, 192, + gMonStillFrontPic_Yanma, 0x800, 193, + gMonStillFrontPic_Wooper, 0x800, 194, + gMonStillFrontPic_Quagsire, 0x800, 195, + gMonStillFrontPic_Espeon, 0x800, 196, + gMonStillFrontPic_Umbreon, 0x800, 197, + gMonStillFrontPic_Murkrow, 0x800, 198, + gMonStillFrontPic_Slowking, 0x800, 199, + gMonStillFrontPic_Misdreavus, 0x800, 200, + gMonStillFrontPic_UnownA, 0x800, 201, + gMonStillFrontPic_Wobbuffet, 0x800, 202, + gMonStillFrontPic_Girafarig, 0x800, 203, + gMonStillFrontPic_Pineco, 0x800, 204, + gMonStillFrontPic_Forretress, 0x800, 205, + gMonStillFrontPic_Dunsparce, 0x800, 206, + gMonStillFrontPic_Gligar, 0x800, 207, + gMonStillFrontPic_Steelix, 0x800, 208, + gMonStillFrontPic_Snubbull, 0x800, 209, + gMonStillFrontPic_Granbull, 0x800, 210, + gMonStillFrontPic_Qwilfish, 0x800, 211, + gMonStillFrontPic_Scizor, 0x800, 212, + gMonStillFrontPic_Shuckle, 0x800, 213, + gMonStillFrontPic_Heracross, 0x800, 214, + gMonStillFrontPic_Sneasel, 0x800, 215, + gMonStillFrontPic_Teddiursa, 0x800, 216, + gMonStillFrontPic_Ursaring, 0x800, 217, + gMonStillFrontPic_Slugma, 0x800, 218, + gMonStillFrontPic_Magcargo, 0x800, 219, + gMonStillFrontPic_Swinub, 0x800, 220, + gMonStillFrontPic_Piloswine, 0x800, 221, + gMonStillFrontPic_Corsola, 0x800, 222, + gMonStillFrontPic_Remoraid, 0x800, 223, + gMonStillFrontPic_Octillery, 0x800, 224, + gMonStillFrontPic_Delibird, 0x800, 225, + gMonStillFrontPic_Mantine, 0x800, 226, + gMonStillFrontPic_Skarmory, 0x800, 227, + gMonStillFrontPic_Houndour, 0x800, 228, + gMonStillFrontPic_Houndoom, 0x800, 229, + gMonStillFrontPic_Kingdra, 0x800, 230, + gMonStillFrontPic_Phanpy, 0x800, 231, + gMonStillFrontPic_Donphan, 0x800, 232, + gMonStillFrontPic_Porygon2, 0x800, 233, + gMonStillFrontPic_Stantler, 0x800, 234, + gMonStillFrontPic_Smeargle, 0x800, 235, + gMonStillFrontPic_Tyrogue, 0x800, 236, + gMonStillFrontPic_Hitmontop, 0x800, 237, + gMonStillFrontPic_Smoochum, 0x800, 238, + gMonStillFrontPic_Elekid, 0x800, 239, + gMonStillFrontPic_Magby, 0x800, 240, + gMonStillFrontPic_Miltank, 0x800, 241, + gMonStillFrontPic_Blissey, 0x800, 242, + gMonStillFrontPic_Raikou, 0x800, 243, + gMonStillFrontPic_Entei, 0x800, 244, + gMonStillFrontPic_Suicune, 0x800, 245, + gMonStillFrontPic_Larvitar, 0x800, 246, + gMonStillFrontPic_Pupitar, 0x800, 247, + gMonStillFrontPic_Tyranitar, 0x800, 248, + gMonStillFrontPic_Lugia, 0x800, 249, + gMonStillFrontPic_HoOh, 0x800, 250, + gMonStillFrontPic_Celebi, 0x800, 251, +// Empty slots + gMonStillFrontPic_DoubleQuestionMark, 0x800, 252, + gMonStillFrontPic_DoubleQuestionMark, 0x800, 253, + gMonStillFrontPic_DoubleQuestionMark, 0x800, 254, + gMonStillFrontPic_DoubleQuestionMark, 0x800, 255, + gMonStillFrontPic_DoubleQuestionMark, 0x800, 256, + gMonStillFrontPic_DoubleQuestionMark, 0x800, 257, + gMonStillFrontPic_DoubleQuestionMark, 0x800, 258, + gMonStillFrontPic_DoubleQuestionMark, 0x800, 259, + gMonStillFrontPic_DoubleQuestionMark, 0x800, 260, + gMonStillFrontPic_DoubleQuestionMark, 0x800, 261, + gMonStillFrontPic_DoubleQuestionMark, 0x800, 262, + gMonStillFrontPic_DoubleQuestionMark, 0x800, 263, + gMonStillFrontPic_DoubleQuestionMark, 0x800, 264, + gMonStillFrontPic_DoubleQuestionMark, 0x800, 265, + gMonStillFrontPic_DoubleQuestionMark, 0x800, 266, + gMonStillFrontPic_DoubleQuestionMark, 0x800, 267, + gMonStillFrontPic_DoubleQuestionMark, 0x800, 268, + gMonStillFrontPic_DoubleQuestionMark, 0x800, 269, + gMonStillFrontPic_DoubleQuestionMark, 0x800, 270, + gMonStillFrontPic_DoubleQuestionMark, 0x800, 271, + gMonStillFrontPic_DoubleQuestionMark, 0x800, 272, + gMonStillFrontPic_DoubleQuestionMark, 0x800, 273, + gMonStillFrontPic_DoubleQuestionMark, 0x800, 274, + gMonStillFrontPic_DoubleQuestionMark, 0x800, 275, + gMonStillFrontPic_DoubleQuestionMark, 0x800, 276, +// Gen III + gMonStillFrontPic_Treecko, 0x800, 277, + gMonStillFrontPic_Grovyle, 0x800, 278, + gMonStillFrontPic_Sceptile, 0x800, 279, + gMonStillFrontPic_Torchic, 0x800, 280, + gMonStillFrontPic_Combusken, 0x800, 281, + gMonStillFrontPic_Blaziken, 0x800, 282, + gMonStillFrontPic_Mudkip, 0x800, 283, + gMonStillFrontPic_Marshtomp, 0x800, 284, + gMonStillFrontPic_Swampert, 0x800, 285, + gMonStillFrontPic_Poochyena, 0x800, 286, + gMonStillFrontPic_Mightyena, 0x800, 287, + gMonStillFrontPic_Zigzagoon, 0x800, 288, + gMonStillFrontPic_Linoone, 0x800, 289, + gMonStillFrontPic_Wurmple, 0x800, 290, + gMonStillFrontPic_Silcoon, 0x800, 291, + gMonStillFrontPic_Beautifly, 0x800, 292, + gMonStillFrontPic_Cascoon, 0x800, 293, + gMonStillFrontPic_Dustox, 0x800, 294, + gMonStillFrontPic_Lotad, 0x800, 295, + gMonStillFrontPic_Lombre, 0x800, 296, + gMonStillFrontPic_Ludicolo, 0x800, 297, + gMonStillFrontPic_Seedot, 0x800, 298, + gMonStillFrontPic_Nuzleaf, 0x800, 299, + gMonStillFrontPic_Shiftry, 0x800, 300, + gMonStillFrontPic_Nincada, 0x800, 301, + gMonStillFrontPic_Ninjask, 0x800, 302, + gMonStillFrontPic_Shedinja, 0x800, 303, + gMonStillFrontPic_Taillow, 0x800, 304, + gMonStillFrontPic_Swellow, 0x800, 305, + gMonStillFrontPic_Shroomish, 0x800, 306, + gMonStillFrontPic_Breloom, 0x800, 307, + gMonStillFrontPic_Spinda, 0x800, 308, + gMonStillFrontPic_Wingull, 0x800, 309, + gMonStillFrontPic_Pelipper, 0x800, 310, + gMonStillFrontPic_Surskit, 0x800, 311, + gMonStillFrontPic_Masquerain, 0x800, 312, + gMonStillFrontPic_Wailmer, 0x800, 313, + gMonStillFrontPic_Wailord, 0x800, 314, + gMonStillFrontPic_Skitty, 0x800, 315, + gMonStillFrontPic_Delcatty, 0x800, 316, + gMonStillFrontPic_Kecleon, 0x800, 317, + gMonStillFrontPic_Baltoy, 0x800, 318, + gMonStillFrontPic_Claydol, 0x800, 319, + gMonStillFrontPic_Nosepass, 0x800, 320, + gMonStillFrontPic_Torkoal, 0x800, 321, + gMonStillFrontPic_Sableye, 0x800, 322, + gMonStillFrontPic_Barboach, 0x800, 323, + gMonStillFrontPic_Whiscash, 0x800, 324, + gMonStillFrontPic_Luvdisc, 0x800, 325, + gMonStillFrontPic_Corphish, 0x800, 326, + gMonStillFrontPic_Crawdaunt, 0x800, 327, + gMonStillFrontPic_Feebas, 0x800, 328, + gMonStillFrontPic_Milotic, 0x800, 329, + gMonStillFrontPic_Carvanha, 0x800, 330, + gMonStillFrontPic_Sharpedo, 0x800, 331, + gMonStillFrontPic_Trapinch, 0x800, 332, + gMonStillFrontPic_Vibrava, 0x800, 333, + gMonStillFrontPic_Flygon, 0x800, 334, + gMonStillFrontPic_Makuhita, 0x800, 335, + gMonStillFrontPic_Hariyama, 0x800, 336, + gMonStillFrontPic_Electrike, 0x800, 337, + gMonStillFrontPic_Manectric, 0x800, 338, + gMonStillFrontPic_Numel, 0x800, 339, + gMonStillFrontPic_Camerupt, 0x800, 340, + gMonStillFrontPic_Spheal, 0x800, 341, + gMonStillFrontPic_Sealeo, 0x800, 342, + gMonStillFrontPic_Walrein, 0x800, 343, + gMonStillFrontPic_Cacnea, 0x800, 344, + gMonStillFrontPic_Cacturne, 0x800, 345, + gMonStillFrontPic_Snorunt, 0x800, 346, + gMonStillFrontPic_Glalie, 0x800, 347, + gMonStillFrontPic_Lunatone, 0x800, 348, + gMonStillFrontPic_Solrock, 0x800, 349, + gMonStillFrontPic_Azurill, 0x800, 350, + gMonStillFrontPic_Spoink, 0x800, 351, + gMonStillFrontPic_Grumpig, 0x800, 352, + gMonStillFrontPic_Plusle, 0x800, 353, + gMonStillFrontPic_Minun, 0x800, 354, + gMonStillFrontPic_Mawile, 0x800, 355, + gMonStillFrontPic_Meditite, 0x800, 356, + gMonStillFrontPic_Medicham, 0x800, 357, + gMonStillFrontPic_Swablu, 0x800, 358, + gMonStillFrontPic_Altaria, 0x800, 359, + gMonStillFrontPic_Wynaut, 0x800, 360, + gMonStillFrontPic_Duskull, 0x800, 361, + gMonStillFrontPic_Dusclops, 0x800, 362, + gMonStillFrontPic_Roselia, 0x800, 363, + gMonStillFrontPic_Slakoth, 0x800, 364, + gMonStillFrontPic_Vigoroth, 0x800, 365, + gMonStillFrontPic_Slaking, 0x800, 366, + gMonStillFrontPic_Gulpin, 0x800, 367, + gMonStillFrontPic_Swalot, 0x800, 368, + gMonStillFrontPic_Tropius, 0x800, 369, + gMonStillFrontPic_Whismur, 0x800, 370, + gMonStillFrontPic_Loudred, 0x800, 371, + gMonStillFrontPic_Exploud, 0x800, 372, + gMonStillFrontPic_Clamperl, 0x800, 373, + gMonStillFrontPic_Huntail, 0x800, 374, + gMonStillFrontPic_Gorebyss, 0x800, 375, + gMonStillFrontPic_Absol, 0x800, 376, + gMonStillFrontPic_Shuppet, 0x800, 377, + gMonStillFrontPic_Banette, 0x800, 378, + gMonStillFrontPic_Seviper, 0x800, 379, + gMonStillFrontPic_Zangoose, 0x800, 380, + gMonStillFrontPic_Relicanth, 0x800, 381, + gMonStillFrontPic_Aron, 0x800, 382, + gMonStillFrontPic_Lairon, 0x800, 383, + gMonStillFrontPic_Aggron, 0x800, 384, + gMonStillFrontPic_Castform, 0x800, 385, + gMonStillFrontPic_Volbeat, 0x800, 386, + gMonStillFrontPic_Illumise, 0x800, 387, + gMonStillFrontPic_Lileep, 0x800, 388, + gMonStillFrontPic_Cradily, 0x800, 389, + gMonStillFrontPic_Anorith, 0x800, 390, + gMonStillFrontPic_Armaldo, 0x800, 391, + gMonStillFrontPic_Ralts, 0x800, 392, + gMonStillFrontPic_Kirlia, 0x800, 393, + gMonStillFrontPic_Gardevoir, 0x800, 394, + gMonStillFrontPic_Bagon, 0x800, 395, + gMonStillFrontPic_Shelgon, 0x800, 396, + gMonStillFrontPic_Salamence, 0x800, 397, + gMonStillFrontPic_Beldum, 0x800, 398, + gMonStillFrontPic_Metang, 0x800, 399, + gMonStillFrontPic_Metagross, 0x800, 400, + gMonStillFrontPic_Regirock, 0x800, 401, + gMonStillFrontPic_Regice, 0x800, 402, + gMonStillFrontPic_Registeel, 0x800, 403, + gMonStillFrontPic_Kyogre, 0x800, 404, + gMonStillFrontPic_Groudon, 0x800, 405, + gMonStillFrontPic_Rayquaza, 0x800, 406, + gMonStillFrontPic_Latias, 0x800, 407, + gMonStillFrontPic_Latios, 0x800, 408, + gMonStillFrontPic_Jirachi, 0x800, 409, + gMonStillFrontPic_Deoxys, 0x800, 410, + gMonStillFrontPic_Chimecho, 0x800, 411, + gMonStillFrontPic_Egg, 0x800, 412, + gMonStillFrontPic_UnownB, 0x800, 413, + gMonStillFrontPic_UnownC, 0x800, 414, + gMonStillFrontPic_UnownD, 0x800, 415, + gMonStillFrontPic_UnownE, 0x800, 416, + gMonStillFrontPic_UnownF, 0x800, 417, + gMonStillFrontPic_UnownG, 0x800, 418, + gMonStillFrontPic_UnownH, 0x800, 419, + gMonStillFrontPic_UnownI, 0x800, 420, + gMonStillFrontPic_UnownJ, 0x800, 421, + gMonStillFrontPic_UnownK, 0x800, 422, + gMonStillFrontPic_UnownL, 0x800, 423, + gMonStillFrontPic_UnownM, 0x800, 424, + gMonStillFrontPic_UnownN, 0x800, 425, + gMonStillFrontPic_UnownO, 0x800, 426, + gMonStillFrontPic_UnownP, 0x800, 427, + gMonStillFrontPic_UnownQ, 0x800, 428, + gMonStillFrontPic_UnownR, 0x800, 429, + gMonStillFrontPic_UnownS, 0x800, 430, + gMonStillFrontPic_UnownT, 0x800, 431, + gMonStillFrontPic_UnownU, 0x800, 432, + gMonStillFrontPic_UnownV, 0x800, 433, + gMonStillFrontPic_UnownW, 0x800, 434, + gMonStillFrontPic_UnownX, 0x800, 435, + gMonStillFrontPic_UnownY, 0x800, 436, + gMonStillFrontPic_UnownZ, 0x800, 437, + gMonStillFrontPic_UnownExclamationMark, 0x800, 438, + gMonStillFrontPic_UnownQuestionMark, 0x800, 439, +}; diff --git a/src/data/pokemon_graphics/unknown_anims.h b/src/data/pokemon_graphics/unknown_anims.h new file mode 100644 index 000000000..a4ae43eb6 --- /dev/null +++ b/src/data/pokemon_graphics/unknown_anims.h @@ -0,0 +1,2347 @@ +const union AnimCmd gUnknown_082FF6EC[] = +{ + ANIMCMD_FRAME(0, 0), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF6F4[] = +{ + ANIMCMD_FRAME(1, 0), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF6FC[] = +{ + ANIMCMD_FRAME(2, 0), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF704[] = +{ + ANIMCMD_FRAME(3, 0), + ANIMCMD_END, +}; + +const union AnimCmd *const gPlayerMonSpriteAnimsTable[] = +{ + gUnknown_082FF6EC, + gUnknown_082FF6F4, + gUnknown_082FF6FC, + gUnknown_082FF704, +}; + +const union AnimCmd gUnknown_082FF71C[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 7), + ANIMCMD_FRAME(0, 7), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF734[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(2, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF744[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(2, 10), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF750[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF758[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF774[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(2, 12), + ANIMCMD_FRAME(0, 14), + ANIMCMD_FRAME(2, 12), + ANIMCMD_FRAME(0, 14), + ANIMCMD_FRAME(2, 12), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF790[] = +{ + ANIMCMD_FRAME(0, 14), + ANIMCMD_FRAME(2, 12), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF79C[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF7B0[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(2, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(2, 10), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF7C4[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF7CC[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF7D4[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF7DC[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF7E4[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF7EC[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF7F4[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF7FC[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF804[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF80C[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF814[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF81C[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF824[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF82C[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF834[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF83C[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF844[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF84C[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF854[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF85C[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF864[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF86C[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF874[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF87C[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF884[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF88C[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF894[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF89C[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF8A4[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF8AC[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF8B4[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF8BC[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(8, 15), + ANIMCMD_FRAME(2, 22), + ANIMCMD_FRAME(8, 5), + ANIMCMD_FRAME(3, 8), + ANIMCMD_FRAME(4, 5), + ANIMCMD_FRAME(6, 5), + ANIMCMD_FRAME(4, 5), + ANIMCMD_FRAME(6, 5), + ANIMCMD_FRAME(4, 5), + ANIMCMD_FRAME(6, 5), + ANIMCMD_FRAME(4, 5), + ANIMCMD_FRAME(6, 5), + ANIMCMD_FRAME(5, 5), + ANIMCMD_FRAME(7, 5), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF8FC[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(8, 15), + ANIMCMD_FRAME(2, 15), + ANIMCMD_FRAME(8, 15), + ANIMCMD_FRAME(9, 15), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(9, 10), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF91C[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(9, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(10, 20), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF930[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(11, 15), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF93C[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF944[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF94C[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 7), + ANIMCMD_FRAME(2, 7), + ANIMCMD_FRAME(3, 4), + ANIMCMD_FRAME(4, 4), + ANIMCMD_FRAME(3, 4), + ANIMCMD_FRAME(4, 4), + ANIMCMD_FRAME(3, 4), + ANIMCMD_FRAME(4, 4), + ANIMCMD_FRAME(3, 4), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(5, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(5, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(5, 2), + ANIMCMD_FRAME(6, 2), + ANIMCMD_FRAME(5, 2), + ANIMCMD_FRAME(6, 2), + ANIMCMD_FRAME(6, 10), + ANIMCMD_FRAME(5, 4), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FF9A8[] = +{ + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(7, 12), + ANIMCMD_FRAME(8, 12), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(7, 12), + ANIMCMD_FRAME(8, 12), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(7, 12), + ANIMCMD_FRAME(8, 12), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(7, 12), + ANIMCMD_FRAME(8, 12), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(7, 12), + ANIMCMD_FRAME(8, 12), + ANIMCMD_FRAME(9, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(9, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(7, 12), + ANIMCMD_FRAME(8, 12), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFA00[] = +{ + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(7, 12), + ANIMCMD_FRAME(8, 12), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(7, 12), + ANIMCMD_FRAME(8, 12), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(7, 12), + ANIMCMD_FRAME(8, 12), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(7, 12), + ANIMCMD_FRAME(8, 12), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(7, 12), + ANIMCMD_FRAME(8, 12), + ANIMCMD_FRAME(9, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(9, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(7, 12), + ANIMCMD_FRAME(8, 12), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFA58[] = +{ + ANIMCMD_FRAME(0,18), + ANIMCMD_FRAME(10, 18), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFA64[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFA6C[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFA74[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFA7C[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFA84[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFA8C[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFA94[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFA9C[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFAA4[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFAAC[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFAB4[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFABC[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFAC4[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFACC[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFAD4[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFADC[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFAE4[] = +{ + ANIMCMD_FRAME(0, 63), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFAEC[] = +{ + ANIMCMD_FRAME(0, 63), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFAF4[] = +{ + ANIMCMD_FRAME(0, 63), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFAFC[] = +{ + ANIMCMD_FRAME(0, 63), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFB04[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFB0C[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFB14[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFB1C[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFB24[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFB2C[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFB34[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFB3C[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFB44[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 18), + ANIMCMD_FRAME(0, 18), + ANIMCMD_FRAME(1, 18), + ANIMCMD_FRAME(0, 18), + ANIMCMD_FRAME(1, 18), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFB60[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(2, 18), + ANIMCMD_FRAME(0, 18), + ANIMCMD_FRAME(2, 18), + ANIMCMD_FRAME(0, 18), + ANIMCMD_FRAME(2, 18), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFB7C[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(2, 5), + ANIMCMD_FRAME(3, 6), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(2, 5), + ANIMCMD_FRAME(3, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 7), + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(4, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(4, 4), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFBBC[] = +{ + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(2, 6), + ANIMCMD_FRAME(3, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 30), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFBE0[] = +{ + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(5, 12), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(6, 12), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFBF4[] = +{ + ANIMCMD_FRAME(7, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFBFC[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFC04[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFC0C[] = +{ + ANIMCMD_FRAME(0, 63), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFC14[] = +{ + ANIMCMD_FRAME(0, 63), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFC1C[] = +{ + ANIMCMD_FRAME(0, 63), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFC24[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFC2C[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFC34[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFC3C[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFC58[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(2, 8), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(2, 8), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(2, 8), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFC74[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFC7C[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFC84[] = +{ + ANIMCMD_FRAME(1, 9), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFC8C[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFC94[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFC9C[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFCA4[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFCAC[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFCB4[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFCBC[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFCC4[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFCCC[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFCD4[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFCDC[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFCE4[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFCEC[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFCF4[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFCFC[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFD04[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFD0C[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFD14[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFD1C[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFD24[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFD2C[] = +{ + ANIMCMD_FRAME(2, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFD34[] = +{ + ANIMCMD_FRAME(3, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFD3C[] = +{ + ANIMCMD_FRAME(0, 63), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFD44[] = +{ + ANIMCMD_FRAME(0, 63), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFD4C[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFD54[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFD5C[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFD64[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFD6C[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFD74[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFD7C[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFD84[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFD8C[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(1, 30), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFDA0[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFDB4[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFDBC[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_082FFDC4[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_082FFDCC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFDD0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFDD4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFDD8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFDDC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFDE0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFDE4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFDE8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFDEC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFDF0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFDF4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFDF8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFDFC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE00[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE04[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE08[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE0C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE10[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE14[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE18[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE1C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE20[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE24[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE28[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE2C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE30[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE34[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE38[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE3C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE40[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE44[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE48[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE4C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE50[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE54[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE58[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE5C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE60[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE64[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE68[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE6C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE70[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE74[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE78[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE7C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE80[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE84[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE88[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE8C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE90[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE94[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE98[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFE9C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFEA0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFEA4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFEA8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFEAC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFEB0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFEB4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFEB8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFEBC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFEC0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFEC4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFEC8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFECC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFED0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFED4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFED8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFEDC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFEE0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFEE4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFEE8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFEEC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFEF0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFEF4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFEF8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFEFC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF00[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF04[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF08[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF0C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF10[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF14[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF18[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF1C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF20[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF24[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF28[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF2C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF30[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF34[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF38[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF3C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF40[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF44[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF48[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF4C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF50[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF54[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF58[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF5C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF60[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF64[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF68[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF6C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF70[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF74[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF78[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF7C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF80[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF84[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF88[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF8C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF90[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF94[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF98[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFF9C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFFA0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFFA4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFFA8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFFAC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFFB0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFFB4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFFB8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFFBC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFFC0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFFC4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFFC8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFFCC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFFD0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFFD4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFFD8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFFDC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFFE0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFFE4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFFE8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFFEC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFFF0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFFF4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFFF8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_082FFFFC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300000[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300004[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300008[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830000C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300010[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300014[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300018[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830001C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300020[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300024[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300028[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830002C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300030[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300034[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300038[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830003C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300040[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300044[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300048[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830004C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300050[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300054[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300058[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830005C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300060[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300064[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300068[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830006C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300070[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300074[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300078[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830007C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300080[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300084[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300088[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830008C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300090[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300094[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300098[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830009C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083000A0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083000A4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083000A8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083000AC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083000B0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083000B4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083000B8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083000BC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083000C0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083000C4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083000C8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083000CC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083000D0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083000D4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083000D8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083000DC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083000E0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083000E4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083000E8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083000EC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083000F0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083000F4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083000F8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083000FC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300100[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300104[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300108[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830010C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300110[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300114[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300118[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830011C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300120[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300124[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300128[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830012C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300130[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300134[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300138[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830013C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300140[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300144[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300148[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830014C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300150[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300154[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300158[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830015C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300160[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300164[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300168[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830016C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300170[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300174[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300178[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830017C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300180[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300184[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300188[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830018C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300190[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300194[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300198[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830019C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083001A0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083001A4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083001A8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083001AC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083001B0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083001B4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083001B8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083001BC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083001C0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083001C4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083001C8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083001CC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083001D0[] = {gAnimCmd_General_Frame0}; + +const union AnimCmd *const gUnknown_083001D4[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF71C, + gUnknown_082FF734, + gUnknown_082FF744, + gUnknown_082FF750, +}; + +const union AnimCmd *const gUnknown_083001E8[] = {gAnimCmd_General_Frame0}; + +const union AnimCmd *const gUnknown_083001EC[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF758, + gUnknown_082FF774, + gUnknown_082FF790, +}; + +const union AnimCmd *const gUnknown_083001FC[] = {gAnimCmd_General_Frame0}; + +const union AnimCmd *const gUnknown_08300200[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF79C, + gUnknown_082FF7B0, +}; + +const union AnimCmd *const gUnknown_0830020C[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF7C4, +}; + +const union AnimCmd *const gUnknown_08300214[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF7CC, +}; + +const union AnimCmd *const gUnknown_0830021C[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF7D4, +}; + +const union AnimCmd *const gUnknown_08300224[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF7DC, + gUnknown_082FF7E4, +}; + +const union AnimCmd *const gUnknown_08300230[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF7EC, + gUnknown_082FF7F4, +}; + +const union AnimCmd *const gUnknown_0830023C[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF7FC, + gUnknown_082FF804, +}; + +const union AnimCmd *const gUnknown_08300248[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF80C, + gUnknown_082FF814, +}; + +const union AnimCmd *const gUnknown_08300254[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF81C, + gUnknown_082FF824, +}; + +const union AnimCmd *const gUnknown_08300260[] = {gAnimCmd_General_Frame0}; + +const union AnimCmd *const gUnknown_08300264[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF82C, +}; + +const union AnimCmd *const gUnknown_0830026C[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF834, + gUnknown_082FF83C, +}; + +const union AnimCmd *const gUnknown_08300278[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF844, +}; + +const union AnimCmd *const gUnknown_08300280[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF84C, +}; + +const union AnimCmd *const gUnknown_08300288[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF854, + gUnknown_082FF85C, +}; + +const union AnimCmd *const gUnknown_08300294[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300298[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830029C[] = {gAnimCmd_General_Frame0}; + +const union AnimCmd *const gUnknown_083002A0[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF864, +}; + +const union AnimCmd *const gUnknown_083002A8[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF86C, +}; + +const union AnimCmd *const gUnknown_083002B0[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF874, +}; + +const union AnimCmd *const gUnknown_083002B8[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF87C, +}; + +const union AnimCmd *const gUnknown_083002C0[] = {gAnimCmd_General_Frame0}; + +const union AnimCmd *const gUnknown_083002C4[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF884, +}; + +const union AnimCmd *const gUnknown_083002CC[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF88C, + gUnknown_082FF894, +}; + +const union AnimCmd *const gUnknown_083002D8[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF89C, + gUnknown_082FF8A4, +}; + +const union AnimCmd *const gUnknown_083002E4[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF8AC, + gUnknown_082FF8B4, +}; + +const union AnimCmd *const gUnknown_083002F0[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF8BC, + gUnknown_082FF8FC, + gUnknown_082FF91C, + gUnknown_082FF930, +}; + +const union AnimCmd *const gUnknown_08300304[] = {gAnimCmd_General_Frame0}; + +const union AnimCmd *const gUnknown_08300308[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF93C, +}; + +const union AnimCmd *const gUnknown_08300310[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF944, +}; + +const union AnimCmd *const gUnknown_08300318[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FF94C, + gUnknown_082FF9A8, + gUnknown_082FFA00, + gUnknown_082FFA58, +}; + +const union AnimCmd *const gUnknown_0830032C[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFA64, +}; + +const union AnimCmd *const gUnknown_08300334[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFA6C, +}; + +const union AnimCmd *const gUnknown_0830033C[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFA74, +}; + +const union AnimCmd *const gUnknown_08300344[] = {gAnimCmd_General_Frame0}; + +const union AnimCmd *const gUnknown_08300348[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFA7C, + gUnknown_082FFA84, +}; + +const union AnimCmd *const gUnknown_08300354[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300358[] = {gAnimCmd_General_Frame0}; + +const union AnimCmd *const gUnknown_0830035C[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFA8C, + gUnknown_082FFA94, +}; + +const union AnimCmd *const gUnknown_08300368[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830036C[] = {gAnimCmd_General_Frame0}; + +const union AnimCmd *const gUnknown_08300370[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFA9C, + gUnknown_082FFAA4, +}; + +const union AnimCmd *const gUnknown_0830037C[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFAAC, + gUnknown_082FFAB4, +}; + +const union AnimCmd *const gUnknown_08300388[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFABC, + gUnknown_082FFAC4, +}; + +const union AnimCmd *const gUnknown_08300394[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFACC, + gUnknown_082FFAD4, +}; + +const union AnimCmd *const gUnknown_083003A0[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFADC, +}; + +const union AnimCmd *const gUnknown_083003A8[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFAE4, +}; + +const union AnimCmd *const gUnknown_083003B0[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFAEC, +}; + +const union AnimCmd *const gUnknown_083003B8[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFAF4, +}; + +const union AnimCmd *const gUnknown_083003C0[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFAFC, +}; + +const union AnimCmd *const gUnknown_083003C8[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFB04, + gUnknown_082FFB0C, +}; + +const union AnimCmd *const gUnknown_083003D4[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFB14, +}; + +const union AnimCmd *const gUnknown_083003DC[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFB1C, + gUnknown_082FFB24, +}; + +const union AnimCmd *const gUnknown_083003E8[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFB2C, +}; + +const union AnimCmd *const gUnknown_083003F0[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFB34, +}; + +const union AnimCmd *const gUnknown_083003F8[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFB3C, +}; + +const union AnimCmd *const gUnknown_08300400[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFB44, + gUnknown_082FFB60, +}; + +const union AnimCmd *const gUnknown_0830040C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300410[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300414[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300418[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830041C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300420[] = {gAnimCmd_General_Frame0}; + +const union AnimCmd *const gUnknown_08300424[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFB7C, + gUnknown_082FFBBC, + gUnknown_082FFBE0, + gUnknown_082FFBF4, +}; + +const union AnimCmd *const gUnknown_08300438[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFBFC, + gUnknown_082FFC04, +}; + +const union AnimCmd *const gUnknown_08300444[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFC0C, +}; + +const union AnimCmd *const gUnknown_0830044C[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFC14, +}; + +const union AnimCmd *const gUnknown_08300454[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFC1C, +}; + +const union AnimCmd *const gUnknown_0830045C[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFC24, +}; + +const union AnimCmd *const gUnknown_08300464[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFC2C, +}; + +const union AnimCmd *const gUnknown_0830046C[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFC34, +}; + +const union AnimCmd *const gUnknown_08300474[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFC3C, + gUnknown_082FFC58, +}; + +const union AnimCmd *const gUnknown_08300480[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFC74, +}; + +const union AnimCmd *const gUnknown_08300488[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFC7C, + gUnknown_082FFC84, +}; + +const union AnimCmd *const gUnknown_08300494[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFC8C, + gUnknown_082FFC94, +}; + +const union AnimCmd *const gUnknown_083004A0[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFC9C, + gUnknown_082FFCA4, +}; + +const union AnimCmd *const gUnknown_083004AC[] = {gAnimCmd_General_Frame0}; + +const union AnimCmd *const gUnknown_083004B0[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFCAC, +}; + +const union AnimCmd *const gUnknown_083004B8[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFCB4, +}; + +const union AnimCmd *const gUnknown_083004C0[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFCBC, +}; + +const union AnimCmd *const gUnknown_083004C8[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFCC4, +}; + +const union AnimCmd *const gUnknown_083004D0[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFCCC, +}; + +const union AnimCmd *const gUnknown_083004D8[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFCD4, +}; + +const union AnimCmd *const gUnknown_083004E0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083004E4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083004E8[] = {gAnimCmd_General_Frame0}; + +const union AnimCmd *const gUnknown_083004EC[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFCDC, +}; + +const union AnimCmd *const gUnknown_083004F4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083004F8[] = {gAnimCmd_General_Frame0}; + +const union AnimCmd *const gUnknown_083004FC[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFCE4, +}; + +const union AnimCmd *const gUnknown_08300504[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFCEC, + gUnknown_082FFCF4, +}; + +const union AnimCmd *const gUnknown_08300510[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFCFC, +}; + +const union AnimCmd *const gUnknown_08300518[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830051C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300520[] = {gAnimCmd_General_Frame0}; + +const union AnimCmd *const gUnknown_08300524[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFD04, +}; + +const union AnimCmd *const gUnknown_0830052C[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFD0C, +}; + +const union AnimCmd *const gUnknown_08300534[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFD14, +}; + +const union AnimCmd *const gUnknown_0830053C[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFD1C, + gUnknown_082FFD24, + gUnknown_082FFD2C, + gUnknown_082FFD34, +}; + +const union AnimCmd *const gUnknown_08300550[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFD3C, +}; + +const union AnimCmd *const gUnknown_08300558[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFD44, +}; + +const union AnimCmd *const gUnknown_08300560[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300564[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300568[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830056C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300570[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300574[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300578[] = {gAnimCmd_General_Frame0}; + +const union AnimCmd *const gUnknown_0830057C[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFD4C, + gUnknown_082FFD54, +}; + +const union AnimCmd *const gUnknown_08300588[] = {gAnimCmd_General_Frame0}; + +const union AnimCmd *const gUnknown_0830058C[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFD5C, + gUnknown_082FFD64, +}; + +const union AnimCmd *const gUnknown_08300598[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830059C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083005A0[] = {gAnimCmd_General_Frame0}; + +const union AnimCmd *const gUnknown_083005A4[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFD6C, +}; + +const union AnimCmd *const gUnknown_083005AC[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFD74, +}; + +const union AnimCmd *const gUnknown_083005B4[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFD7C, + gUnknown_082FFD84, +}; + +const union AnimCmd *const gUnknown_083005C0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083005C4[] = {gAnimCmd_General_Frame0}; + +const union AnimCmd *const gUnknown_083005C8[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFD8C, + gUnknown_082FFDA0, +}; + +const union AnimCmd *const gUnknown_083005D4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083005D8[] = {gAnimCmd_General_Frame0}; + +const union AnimCmd *const gUnknown_083005DC[] = +{ + gAnimCmd_General_Frame0, + gUnknown_082FFDC4, +}; + +const union AnimCmd *const gUnknown_083005E4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083005E8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083005EC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083005F0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083005F4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083005F8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083005FC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300600[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300604[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300608[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830060C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300610[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300614[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300618[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830061C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300620[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300624[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300628[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830062C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300630[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300634[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300638[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830063C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300640[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300644[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300648[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830064C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300650[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08300654[] = {gAnimCmd_General_Frame0}; + +const union AnimCmd *const *const gUnknownAnimationsSpriteAnimsPtrTable[] = +{ + gUnknown_082FFDCC, + gUnknown_082FFDD0, + gUnknown_082FFDD4, + gUnknown_082FFDD8, + gUnknown_082FFDDC, + gUnknown_082FFDE0, + gUnknown_082FFDE4, + gUnknown_082FFDE8, + gUnknown_082FFDEC, + gUnknown_082FFDF0, + gUnknown_082FFDF4, + gUnknown_082FFDF8, + gUnknown_082FFDFC, + gUnknown_082FFE00, + gUnknown_082FFE04, + gUnknown_082FFE08, + gUnknown_082FFE0C, + gUnknown_082FFE10, + gUnknown_082FFE14, + gUnknown_082FFE18, + gUnknown_082FFE1C, + gUnknown_082FFE20, + gUnknown_082FFE24, + gUnknown_082FFE28, + gUnknown_082FFE2C, + gUnknown_082FFE30, + gUnknown_082FFE34, + gUnknown_082FFE38, + gUnknown_082FFE3C, + gUnknown_082FFE40, + gUnknown_082FFE44, + gUnknown_082FFE48, + gUnknown_082FFE4C, + gUnknown_082FFE50, + gUnknown_082FFE54, + gUnknown_082FFE58, + gUnknown_082FFE5C, + gUnknown_082FFE60, + gUnknown_082FFE64, + gUnknown_082FFE68, + gUnknown_082FFE6C, + gUnknown_082FFE70, + gUnknown_082FFE74, + gUnknown_082FFE78, + gUnknown_082FFE7C, + gUnknown_082FFE80, + gUnknown_082FFE84, + gUnknown_082FFE88, + gUnknown_082FFE8C, + gUnknown_082FFE90, + gUnknown_082FFE94, + gUnknown_082FFE98, + gUnknown_082FFE9C, + gUnknown_082FFEA0, + gUnknown_082FFEA4, + gUnknown_082FFEA8, + gUnknown_082FFEAC, + gUnknown_082FFEB0, + gUnknown_082FFEB4, + gUnknown_082FFEB8, + gUnknown_082FFEBC, + gUnknown_082FFEC0, + gUnknown_082FFEC4, + gUnknown_082FFEC8, + gUnknown_082FFECC, + gUnknown_082FFED0, + gUnknown_082FFED4, + gUnknown_082FFED8, + gUnknown_082FFEDC, + gUnknown_082FFEE0, + gUnknown_082FFEE4, + gUnknown_082FFEE8, + gUnknown_082FFEEC, + gUnknown_082FFEF0, + gUnknown_082FFEF4, + gUnknown_082FFEF8, + gUnknown_082FFEFC, + gUnknown_082FFF00, + gUnknown_082FFF04, + gUnknown_082FFF08, + gUnknown_082FFF0C, + gUnknown_082FFF10, + gUnknown_082FFF14, + gUnknown_082FFF18, + gUnknown_082FFF1C, + gUnknown_082FFF20, + gUnknown_082FFF24, + gUnknown_082FFF28, + gUnknown_082FFF2C, + gUnknown_082FFF30, + gUnknown_082FFF34, + gUnknown_082FFF38, + gUnknown_082FFF3C, + gUnknown_082FFF40, + gUnknown_082FFF44, + gUnknown_082FFF48, + gUnknown_082FFF4C, + gUnknown_082FFF50, + gUnknown_082FFF54, + gUnknown_082FFF58, + gUnknown_082FFF5C, + gUnknown_082FFF60, + gUnknown_082FFF64, + gUnknown_082FFF68, + gUnknown_082FFF6C, + gUnknown_082FFF70, + gUnknown_082FFF74, + gUnknown_082FFF78, + gUnknown_082FFF7C, + gUnknown_082FFF80, + gUnknown_082FFF84, + gUnknown_082FFF88, + gUnknown_082FFF8C, + gUnknown_082FFF90, + gUnknown_082FFF94, + gUnknown_082FFF98, + gUnknown_082FFF9C, + gUnknown_082FFFA0, + gUnknown_082FFFA4, + gUnknown_082FFFA8, + gUnknown_082FFFAC, + gUnknown_082FFFB0, + gUnknown_082FFFB4, + gUnknown_082FFFB8, + gUnknown_082FFFBC, + gUnknown_082FFFC0, + gUnknown_082FFFC4, + gUnknown_082FFFC8, + gUnknown_082FFFCC, + gUnknown_082FFFD0, + gUnknown_082FFFD4, + gUnknown_082FFFD8, + gUnknown_082FFFDC, + gUnknown_082FFFE0, + gUnknown_082FFFE4, + gUnknown_082FFFE8, + gUnknown_082FFFEC, + gUnknown_082FFFF0, + gUnknown_082FFFF4, + gUnknown_082FFFF8, + gUnknown_082FFFFC, + gUnknown_08300000, + gUnknown_08300004, + gUnknown_08300008, + gUnknown_0830000C, + gUnknown_08300010, + gUnknown_08300014, + gUnknown_08300018, + gUnknown_0830001C, + gUnknown_08300020, + gUnknown_08300024, + gUnknown_08300028, + gUnknown_0830002C, + gUnknown_08300030, + gUnknown_08300034, + gUnknown_08300038, + gUnknown_0830003C, + gUnknown_08300040, + gUnknown_08300044, + gUnknown_08300048, + gUnknown_0830004C, + gUnknown_08300050, + gUnknown_08300054, + gUnknown_08300058, + gUnknown_0830005C, + gUnknown_08300060, + gUnknown_08300064, + gUnknown_08300068, + gUnknown_0830006C, + gUnknown_08300070, + gUnknown_08300074, + gUnknown_08300078, + gUnknown_0830007C, + gUnknown_08300080, + gUnknown_08300084, + gUnknown_08300088, + gUnknown_0830008C, + gUnknown_08300090, + gUnknown_08300094, + gUnknown_08300098, + gUnknown_0830009C, + gUnknown_083000A0, + gUnknown_083000A4, + gUnknown_083000A8, + gUnknown_083000AC, + gUnknown_083000B0, + gUnknown_083000B4, + gUnknown_083000B8, + gUnknown_083000BC, + gUnknown_083000C0, + gUnknown_083000C4, + gUnknown_083000C8, + gUnknown_083000CC, + gUnknown_083000D0, + gUnknown_083000D4, + gUnknown_083000D8, + gUnknown_083000DC, + gUnknown_083000E0, + gUnknown_083000E4, + gUnknown_083000E8, + gUnknown_083000EC, + gUnknown_083000F0, + gUnknown_083000F4, + gUnknown_083000F8, + gUnknown_083000FC, + gUnknown_08300100, + gUnknown_08300104, + gUnknown_08300108, + gUnknown_0830010C, + gUnknown_08300110, + gUnknown_08300114, + gUnknown_08300118, + gUnknown_0830011C, + gUnknown_08300120, + gUnknown_08300124, + gUnknown_08300128, + gUnknown_0830012C, + gUnknown_08300130, + gUnknown_08300134, + gUnknown_08300138, + gUnknown_0830013C, + gUnknown_08300140, + gUnknown_08300144, + gUnknown_08300148, + gUnknown_0830014C, + gUnknown_08300150, + gUnknown_08300154, + gUnknown_08300158, + gUnknown_0830015C, + gUnknown_08300160, + gUnknown_08300164, + gUnknown_08300168, + gUnknown_0830016C, + gUnknown_08300170, + gUnknown_08300174, + gUnknown_08300178, + gUnknown_0830017C, + gUnknown_08300180, + gUnknown_08300184, + gUnknown_08300188, + gUnknown_0830018C, + gUnknown_08300190, + gUnknown_08300194, + gUnknown_08300198, + gUnknown_0830019C, + gUnknown_083001A0, + gUnknown_083001A4, + gUnknown_083001A8, + gUnknown_083001AC, + gUnknown_083001B0, + gUnknown_083001B4, + gUnknown_083001B8, + gUnknown_083001BC, + gUnknown_083001BC, + gUnknown_083001BC, + gUnknown_083001BC, + gUnknown_083001BC, + gUnknown_083001BC, + gUnknown_083001BC, + gUnknown_083001BC, + gUnknown_083001BC, + gUnknown_083001BC, + gUnknown_083001BC, + gUnknown_083001BC, + gUnknown_083001BC, + gUnknown_083001BC, + gUnknown_083001BC, + gUnknown_083001BC, + gUnknown_083001BC, + gUnknown_083001BC, + gUnknown_083001BC, + gUnknown_083001BC, + gUnknown_083001BC, + gUnknown_083001BC, + gUnknown_083001BC, + gUnknown_083001BC, + gUnknown_083001BC, + gUnknown_083001C0, + gUnknown_083001C4, + gUnknown_083001C8, + gUnknown_083001CC, + gUnknown_083001D0, + gUnknown_083001D4, + gUnknown_083001E8, + gUnknown_083001EC, + gUnknown_083001FC, + gUnknown_08300200, + gUnknown_0830020C, + gUnknown_08300214, + gUnknown_0830021C, + gUnknown_08300224, + gUnknown_08300230, + gUnknown_0830023C, + gUnknown_08300248, + gUnknown_08300254, + gUnknown_08300260, + gUnknown_08300264, + gUnknown_0830026C, + gUnknown_08300278, + gUnknown_08300280, + gUnknown_08300288, + gUnknown_08300294, + gUnknown_08300298, + gUnknown_0830029C, + gUnknown_083002A0, + gUnknown_083002A8, + gUnknown_083002B0, + gUnknown_083002B8, + gUnknown_083002C0, + gUnknown_083002C4, + gUnknown_083002CC, + gUnknown_083002D8, + gUnknown_083002E4, + gUnknown_083002F0, + gUnknown_08300304, + gUnknown_08300308, + gUnknown_08300310, + gUnknown_08300318, + gUnknown_0830032C, + gUnknown_08300334, + gUnknown_0830033C, + gUnknown_08300344, + gUnknown_08300348, + gUnknown_08300354, + gUnknown_08300358, + gUnknown_0830035C, + gUnknown_08300368, + gUnknown_0830036C, + gUnknown_08300370, + gUnknown_0830037C, + gUnknown_08300388, + gUnknown_08300394, + gUnknown_083003A0, + gUnknown_083003A8, + gUnknown_083003B0, + gUnknown_083003B8, + gUnknown_083003C0, + gUnknown_083003C8, + gUnknown_083003D4, + gUnknown_083003DC, + gUnknown_083003E8, + gUnknown_083003F0, + gUnknown_083003F8, + gUnknown_08300400, + gUnknown_0830040C, + gUnknown_08300410, + gUnknown_08300414, + gUnknown_08300418, + gUnknown_0830041C, + gUnknown_08300420, + gUnknown_08300424, + gUnknown_08300438, + gUnknown_08300444, + gUnknown_0830044C, + gUnknown_08300454, + gUnknown_0830045C, + gUnknown_08300464, + gUnknown_0830046C, + gUnknown_08300474, + gUnknown_08300480, + gUnknown_08300488, + gUnknown_08300494, + gUnknown_083004A0, + gUnknown_083004AC, + gUnknown_083004B0, + gUnknown_083004B8, + gUnknown_083004C0, + gUnknown_083004C8, + gUnknown_083004D0, + gUnknown_083004D8, + gUnknown_083004E0, + gUnknown_083004E4, + gUnknown_083004E8, + gUnknown_083004EC, + gUnknown_083004F4, + gUnknown_083004F8, + gUnknown_083004FC, + gUnknown_08300504, + gUnknown_08300510, + gUnknown_08300518, + gUnknown_0830051C, + gUnknown_08300520, + gUnknown_08300524, + gUnknown_0830052C, + gUnknown_08300534, + gUnknown_0830053C, + gUnknown_08300550, + gUnknown_08300558, + gUnknown_08300560, + gUnknown_08300564, + gUnknown_08300568, + gUnknown_0830056C, + gUnknown_08300570, + gUnknown_08300574, + gUnknown_08300578, + gUnknown_0830057C, + gUnknown_08300588, + gUnknown_0830058C, + gUnknown_08300598, + gUnknown_0830059C, + gUnknown_083005A0, + gUnknown_083005A4, + gUnknown_083005AC, + gUnknown_083005B4, + gUnknown_083005C0, + gUnknown_083005C4, + gUnknown_083005C8, + gUnknown_083005D4, + gUnknown_083005D8, + gUnknown_083005DC, + gUnknown_083005E4, + gUnknown_083005E8, + gUnknown_083005EC, + gUnknown_083005EC, + gUnknown_083005F0, + gUnknown_083005F4, + gUnknown_083005F8, + gUnknown_083005FC, + gUnknown_08300600, + gUnknown_08300604, + gUnknown_08300608, + gUnknown_0830060C, + gUnknown_08300610, + gUnknown_08300614, + gUnknown_08300618, + gUnknown_0830061C, + gUnknown_08300620, + gUnknown_08300624, + gUnknown_08300628, + gUnknown_0830062C, + gUnknown_08300630, + gUnknown_08300634, + gUnknown_08300638, + gUnknown_0830063C, + gUnknown_08300640, + gUnknown_08300644, + gUnknown_08300648, + gUnknown_0830064C, + gUnknown_08300650, + gUnknown_08300654, +}; diff --git a/src/data/region_map/region_map_entries.h b/src/data/region_map/region_map_entries.h new file mode 100644 index 000000000..9c7e3f2fc --- /dev/null +++ b/src/data/region_map/region_map_entries.h @@ -0,0 +1,421 @@ +#ifndef GUARD_DATA_REGION_MAP_REGION_MAP_ENTRIES_H +#define GUARD_DATA_REGION_MAP_REGION_MAP_ENTRIES_H + +static const u8 sMapName_LittlerootTown[] = _("LITTLEROOT TOWN"); +static const u8 sMapName_OldaleTown[] = _("OLDALE TOWN"); +static const u8 sMapName_DewfordTown[] = _("DEWFORD TOWN"); +static const u8 sMapName_LavaridgeTown[] = _("LAVARIDGE TOWN"); +static const u8 sMapName_FallarborTown[] = _("FALLARBOR TOWN"); +static const u8 sMapName_VerdanturfTown[] = _("VERDANTURF TOWN"); +static const u8 sMapName_PacifidlogTown[] = _("PACIFIDLOG TOWN"); +static const u8 sMapName_PetalburgCity[] = _("PETALBURG CITY"); +static const u8 sMapName_SlateportCity[] = _("SLATEPORT CITY"); +static const u8 sMapName_MauvilleCity[] = _("MAUVILLE CITY"); +static const u8 sMapName_RustboroCity[] = _("RUSTBORO CITY"); +static const u8 sMapName_FortreeCity[] = _("FORTREE CITY"); +static const u8 sMapName_LilycoveCity[] = _("LILYCOVE CITY"); +static const u8 sMapName_MossdeepCity[] = _("MOSSDEEP CITY"); +static const u8 sMapName_SootopolisCity[] = _("SOOTOPOLIS CITY"); +static const u8 sMapName_EverGrandeCity[] = _("EVER GRANDE CITY"); +static const u8 sMapName_Route101[] = _("ROUTE 101"); +static const u8 sMapName_Route102[] = _("ROUTE 102"); +static const u8 sMapName_Route103[] = _("ROUTE 103"); +static const u8 sMapName_Route104[] = _("ROUTE 104"); +static const u8 sMapName_Route105[] = _("ROUTE 105"); +static const u8 sMapName_Route106[] = _("ROUTE 106"); +static const u8 sMapName_Route107[] = _("ROUTE 107"); +static const u8 sMapName_Route108[] = _("ROUTE 108"); +static const u8 sMapName_Route109[] = _("ROUTE 109"); +static const u8 sMapName_Route110[] = _("ROUTE 110"); +static const u8 sMapName_Route111[] = _("ROUTE 111"); +static const u8 sMapName_Route112[] = _("ROUTE 112"); +static const u8 sMapName_Route113[] = _("ROUTE 113"); +static const u8 sMapName_Route114[] = _("ROUTE 114"); +static const u8 sMapName_Route115[] = _("ROUTE 115"); +static const u8 sMapName_Route116[] = _("ROUTE 116"); +static const u8 sMapName_Route117[] = _("ROUTE 117"); +static const u8 sMapName_Route118[] = _("ROUTE 118"); +static const u8 sMapName_Route119[] = _("ROUTE 119"); +static const u8 sMapName_Route120[] = _("ROUTE 120"); +static const u8 sMapName_Route121[] = _("ROUTE 121"); +static const u8 sMapName_Route122[] = _("ROUTE 122"); +static const u8 sMapName_Route123[] = _("ROUTE 123"); +static const u8 sMapName_Route124[] = _("ROUTE 124"); +static const u8 sMapName_Route125[] = _("ROUTE 125"); +static const u8 sMapName_Route126[] = _("ROUTE 126"); +static const u8 sMapName_Route127[] = _("ROUTE 127"); +static const u8 sMapName_Route128[] = _("ROUTE 128"); +static const u8 sMapName_Route129[] = _("ROUTE 129"); +static const u8 sMapName_Route130[] = _("ROUTE 130"); +static const u8 sMapName_Route131[] = _("ROUTE 131"); +static const u8 sMapName_Route132[] = _("ROUTE 132"); +static const u8 sMapName_Route133[] = _("ROUTE 133"); +static const u8 sMapName_Route134[] = _("ROUTE 134"); +static const u8 sMapName_Underwater[] = _("UNDERWATER"); +static const u8 sMapName_GraniteCave[] = _("GRANITE CAVE"); +static const u8 sMapName_MtChimney[] = _("MT. CHIMNEY"); +static const u8 sMapName_SafariZone[] = _("SAFARI ZONE"); +static const u8 sMapName_BattleFrontier[] = _("BATTLE FRONTIER"); +static const u8 sMapName_PetalburgWoods[] = _("PETALBURG WOODS"); +static const u8 sMapName_RusturfTunnel[] = _("RUSTURF TUNNEL"); +static const u8 sMapName_AbandonedShip[] = _("ABANDONED SHIP"); +static const u8 sMapName_NewMauville[] = _("NEW MAUVILLE"); +static const u8 sMapName_MeteorFalls[] = _("METEOR FALLS"); +static const u8 sMapName_MtPyre[] = _("MT. PYRE"); +// This was the Aqua or Magma hideout in Ruby/Sapphire, but each team has a +// hideout in Emerald with their own new region map entries, and this name +// doesn't seem to be used anymore. +static const u8 sMapName_AquaHideoutOld[] = _("{AQUA} HIDEOUT"); +static const u8 sMapName_ShoalCave[] = _("SHOAL CAVE"); +static const u8 sMapName_SeafloorCavern[] = _("SEAFLOOR CAVERN"); +static const u8 sMapName_VictoryRoad[] = _("VICTORY ROAD"); +static const u8 sMapName_MirageIsland[] = _("MIRAGE ISLAND"); +static const u8 sMapName_CaveOfOrigin[] = _("CAVE OF ORIGIN"); +static const u8 sMapName_SouthernIsland[] = _("SOUTHERN ISLAND"); +static const u8 sMapName_FieryPath[] = _("FIERY PATH"); +static const u8 sMapName_JaggedPass[] = _("JAGGED PASS"); +static const u8 sMapName_SealedChamber[] = _("SEALED CHAMBER"); +static const u8 sMapName_ScorchedSlab[] = _("SCORCHED SLAB"); +static const u8 sMapName_IslandCave[] = _("ISLAND CAVE"); +static const u8 sMapName_DesertRuins[] = _("DESERT RUINS"); +static const u8 sMapName_AncientTomb[] = _("ANCIENT TOMB"); +static const u8 sMapName_InsideOfTruck[] = _("INSIDE OF TRUCK"); +static const u8 sMapName_SkyPillar[] = _("SKY PILLAR"); +static const u8 sMapName_SecretBase[] = _("SECRET BASE"); +static const u8 sMapName_None[] = _(""); +static const u8 sMapName_PalletTown[] = _("PALLET TOWN"); +static const u8 sMapName_ViridianCity[] = _("VIRIDIAN CITY"); +static const u8 sMapName_PewterCity[] = _("PEWTER CITY"); +static const u8 sMapName_CeruleanCity[] = _("CERULEAN CITY"); +static const u8 sMapName_LavenderTown[] = _("LAVENDER TOWN"); +static const u8 sMapName_VermilionCity[] = _("VERMILION CITY"); +static const u8 sMapName_CeladonCity[] = _("CELADON CITY"); +static const u8 sMapName_FuchsiaCity[] = _("FUCHSIA CITY"); +static const u8 sMapName_CinnabarIsland[] = _("CINNABAR ISLAND"); +static const u8 sMapName_IndigoPlateau[] = _("INDIGO PLATEAU"); +static const u8 sMapName_SaffronCity[] = _("SAFFRON CITY"); +static const u8 sMapName_Route4[] = _("ROUTE 4"); +static const u8 sMapName_Route10[] = _("ROUTE 10"); +static const u8 sMapName_Route1[] = _("ROUTE 1"); +static const u8 sMapName_Route2[] = _("ROUTE 2"); +static const u8 sMapName_Route3[] = _("ROUTE 3"); +static const u8 sMapName_Route4_2[] = _("ROUTE 4"); +static const u8 sMapName_Route5[] = _("ROUTE 5"); +static const u8 sMapName_Route6[] = _("ROUTE 6"); +static const u8 sMapName_Route7[] = _("ROUTE 7"); +static const u8 sMapName_Route8[] = _("ROUTE 8"); +static const u8 sMapName_Route9[] = _("ROUTE 9"); +static const u8 sMapName_Route10_2[] = _("ROUTE 10"); +static const u8 sMapName_Route11[] = _("ROUTE 11"); +static const u8 sMapName_Route12[] = _("ROUTE 12"); +static const u8 sMapName_Route13[] = _("ROUTE 13"); +static const u8 sMapName_Route14[] = _("ROUTE 14"); +static const u8 sMapName_Route15[] = _("ROUTE 15"); +static const u8 sMapName_Route16[] = _("ROUTE 16"); +static const u8 sMapName_Route17[] = _("ROUTE 17"); +static const u8 sMapName_Route18[] = _("ROUTE 18"); +static const u8 sMapName_Route19[] = _("ROUTE 19"); +static const u8 sMapName_Route20[] = _("ROUTE 20"); +static const u8 sMapName_Route21[] = _("ROUTE 21"); +static const u8 sMapName_Route22[] = _("ROUTE 22"); +static const u8 sMapName_Route23[] = _("ROUTE 23"); +static const u8 sMapName_Route24[] = _("ROUTE 24"); +static const u8 sMapName_Route25[] = _("ROUTE 25"); +static const u8 sMapName_ViridianForest[] = _("VIRIDIAN FOREST"); +static const u8 sMapName_MtMoon[] = _("MT. MOON"); +static const u8 sMapName_SSAnne[] = _("S.S. ANNE"); +static const u8 sMapName_UndergroundPath[] = _("UNDERGROUND PATH"); +static const u8 sMapName_UndergroundPath2[] = _("UNDERGROUND PATH"); +static const u8 sMapName_DiglettsCave[] = _("DIGLETT’S CAVE"); +static const u8 sMapName_KantoVictoryRoad[] = _("VICTORY ROAD"); +static const u8 sMapName_RocketHideout[] = _("ROCKET HIDEOUT"); +static const u8 sMapName_SilphCo[] = _("SILPH CO."); +static const u8 sMapName_PokemonMansion[] = _("POKéMON MANSION"); +static const u8 sMapName_KantoSafariZone[] = _("SAFARI ZONE"); +static const u8 sMapName_PokemonLeague[] = _("POKéMON LEAGUE"); +static const u8 sMapName_RockTunnel[] = _("ROCK TUNNEL"); +static const u8 sMapName_SeafoamIslands[] = _("SEAFOAM ISLANDS"); +static const u8 sMapName_PokemonTower[] = _("POKéMON TOWER"); +static const u8 sMapName_CeruleanCave[] = _("CERULEAN CAVE"); +static const u8 sMapName_PowerPlant[] = _("POWER PLANT"); +static const u8 sMapName_OneIsland[] = _("ONE ISLAND"); +static const u8 sMapName_TwoIsland[] = _("TWO ISLAND"); +static const u8 sMapName_ThreeIsland[] = _("THREE ISLAND"); +static const u8 sMapName_FourIsland[] = _("FOUR ISLAND"); +static const u8 sMapName_FiveIsland[] = _("FIVE ISLAND"); +static const u8 sMapName_SevenIsland[] = _("SEVEN ISLAND"); +static const u8 sMapName_SixIsland[] = _("SIX ISLAND"); +static const u8 sMapName_KindleRoad[] = _("KINDLE ROAD"); +static const u8 sMapName_TreasureBeach[] = _("TREASURE BEACH"); +static const u8 sMapName_CapeBrink[] = _("CAPE BRINK"); +static const u8 sMapName_BondBridge[] = _("BOND BRIDGE"); +static const u8 sMapName_ThreeIslePort[] = _("THREE ISLE PORT"); +static const u8 sMapName_SeviiIsle6[] = _("SEVII ISLE 6"); +static const u8 sMapName_SeviiIsle7[] = _("SEVII ISLE 7"); +static const u8 sMapName_SeviiIsle8[] = _("SEVII ISLE 8"); +static const u8 sMapName_SeviiIsle9[] = _("SEVII ISLE 9"); +static const u8 sMapName_ResortGorgeous[] = _("RESORT GORGEOUS"); +static const u8 sMapName_WaterLabyrinth[] = _("WATER LABYRINTH"); +static const u8 sMapName_FiveIsleMeadow[] = _("FIVE ISLE MEADOW"); +static const u8 sMapName_MemorialPillar[] = _("MEMORIAL PILLAR"); +static const u8 sMapName_OutcastIsland[] = _("OUTCAST ISLAND"); +static const u8 sMapName_GreenPath[] = _("GREEN PATH"); +static const u8 sMapName_WaterPath[] = _("WATER PATH"); +static const u8 sMapName_RuinValley[] = _("RUIN VALLEY"); +static const u8 sMapName_TrainerTower[] = _("TRAINER TOWER"); +static const u8 sMapName_CanyonEntrance[] = _("CANYON ENTRANCE"); +static const u8 sMapName_SevaultCanyon[] = _("SEVAULT CANYON"); +static const u8 sMapName_TanobyRuins[] = _("TANOBY RUINS"); +static const u8 sMapName_SeviiIsle22[] = _("SEVII ISLE 22"); +static const u8 sMapName_SeviiIsle23[] = _("SEVII ISLE 23"); +static const u8 sMapName_SeviiIsle24[] = _("SEVII ISLE 24"); +static const u8 sMapName_NavelRock[] = _("NAVEL ROCK"); +static const u8 sMapName_MtEmber[] = _("MT. EMBER"); +static const u8 sMapName_BerryForest[] = _("BERRY FOREST"); +static const u8 sMapName_IcefallCave[] = _("ICEFALL CAVE"); +static const u8 sMapName_RocketWarehouse[] = _("ROCKET WAREHOUSE"); +static const u8 sMapName_TrainerTower2[] = _("TRAINER TOWER"); +static const u8 sMapName_DottedHole[] = _("DOTTED HOLE"); +static const u8 sMapName_LostCave[] = _("LOST CAVE"); +static const u8 sMapName_PatternBush[] = _("PATTERN BUSH"); +static const u8 sMapName_AlteringCave[] = _("ALTERING CAVE"); +static const u8 sMapName_TanobyChambers[] = _("TANOBY CHAMBERS"); +static const u8 sMapName_ThreeIslePath[] = _("THREE ISLE PATH"); +static const u8 sMapName_TanobyKey[] = _("TANOBY KEY"); +static const u8 sMapName_BirthIsland[] = _("BIRTH ISLAND"); +static const u8 sMapName_MoneanChamber[] = _("MONEAN CHAMBER"); +static const u8 sMapName_LiptooChamber[] = _("LIPTOO CHAMBER"); +static const u8 sMapName_WeepthChamber[] = _("WEEPTH CHAMBER"); +static const u8 sMapName_DilfordChamber[] = _("DILFORD CHAMBER"); +static const u8 sMapName_ScufibChamber[] = _("SCUFIB CHAMBER"); +static const u8 sMapName_RixyChamber[] = _("RIXY CHAMBER"); +static const u8 sMapName_ViapoisChamber[] = _("VIAPOIS CHAMBER"); +static const u8 sMapName_EmberSpa[] = _("EMBER SPA"); +static const u8 sMapName_SpecialArea[] = _("SPECIAL AREA"); +static const u8 sMapName_AquaHideout[] = _("AQUA HIDEOUT"); +static const u8 sMapName_MagmaHideout[] = _("MAGMA HIDEOUT"); +static const u8 sMapName_MirageTower[] = _("MIRAGE TOWER"); +static const u8 sMapName_FarawayIsland[] = _("FARAWAY ISLAND"); +static const u8 sMapName_ArtisanCave[] = _("ARTISAN CAVE"); +static const u8 sMapName_MarineCave[] = _("MARINE CAVE"); +static const u8 sMapName_TerraCave[] = _("TERRA CAVE"); +static const u8 sMapName_DesertUnderpass[] = _("DESERT UNDERPASS"); +static const u8 sMapName_TrainerHill[] = _("TRAINER HILL"); + +const struct RegionMapLocation gRegionMapEntries[] = { + { 4, 11, 1, 1, sMapName_LittlerootTown}, + { 4, 9, 1, 1, sMapName_OldaleTown}, + { 2, 14, 1, 1, sMapName_DewfordTown}, + { 5, 3, 1, 1, sMapName_LavaridgeTown}, + { 3, 0, 1, 1, sMapName_FallarborTown}, + { 4, 6, 1, 1, sMapName_VerdanturfTown}, + {17, 10, 1, 1, sMapName_PacifidlogTown}, + { 1, 9, 1, 1, sMapName_PetalburgCity}, + { 8, 10, 1, 2, sMapName_SlateportCity}, + { 8, 6, 2, 1, sMapName_MauvilleCity}, + { 0, 5, 1, 2, sMapName_RustboroCity}, + {12, 0, 1, 1, sMapName_FortreeCity}, + {18, 3, 2, 1, sMapName_LilycoveCity}, + {24, 5, 2, 1, sMapName_MossdeepCity}, + {21, 7, 1, 1, sMapName_SootopolisCity}, + {27, 8, 1, 2, sMapName_EverGrandeCity}, + { 4, 10, 1, 1, sMapName_Route101}, + { 2, 9, 2, 1, sMapName_Route102}, + { 4, 8, 4, 1, sMapName_Route103}, + { 0, 7, 1, 3, sMapName_Route104}, + { 0, 10, 1, 3, sMapName_Route105}, + { 0, 13, 2, 1, sMapName_Route106}, + { 3, 14, 3, 1, sMapName_Route107}, + { 6, 14, 2, 1, sMapName_Route108}, + { 8, 12, 1, 3, sMapName_Route109}, + { 8, 7, 1, 3, sMapName_Route110}, + { 8, 0, 1, 6, sMapName_Route111}, + { 6, 3, 2, 1, sMapName_Route112}, + { 4, 0, 4, 1, sMapName_Route113}, + { 1, 0, 2, 3, sMapName_Route114}, + { 0, 2, 1, 3, sMapName_Route115}, + { 1, 5, 4, 1, sMapName_Route116}, + { 5, 6, 3, 1, sMapName_Route117}, + {10, 6, 2, 1, sMapName_Route118}, + {11, 0, 1, 6, sMapName_Route119}, + {13, 0, 1, 4, sMapName_Route120}, + {14, 3, 4, 1, sMapName_Route121}, + {16, 4, 1, 2, sMapName_Route122}, + {12, 6, 5, 1, sMapName_Route123}, + {20, 3, 4, 3, sMapName_Route124}, + {24, 3, 2, 2, sMapName_Route125}, + {20, 6, 3, 3, sMapName_Route126}, + {23, 6, 3, 3, sMapName_Route127}, + {23, 9, 4, 1, sMapName_Route128}, + {24, 10, 2, 1, sMapName_Route129}, + {21, 10, 3, 1, sMapName_Route130}, + {18, 10, 3, 1, sMapName_Route131}, + {15, 10, 2, 1, sMapName_Route132}, + {12, 10, 3, 1, sMapName_Route133}, + { 9, 10, 3, 1, sMapName_Route134}, + {20, 3, 4, 3, sMapName_Underwater}, + {20, 6, 3, 3, sMapName_Underwater}, + {23, 6, 3, 3, sMapName_Underwater}, + {23, 9, 4, 1, sMapName_Underwater}, + {21, 7, 1, 1, sMapName_Underwater}, + { 1, 13, 1, 1, sMapName_GraniteCave}, + { 6, 2, 1, 1, sMapName_MtChimney}, + {16, 2, 1, 1, sMapName_SafariZone}, + {22, 12, 1, 1, sMapName_BattleFrontier}, + { 0, 8, 1, 1, sMapName_PetalburgWoods}, + { 2, 5, 1, 1, sMapName_RusturfTunnel}, + { 6, 14, 1, 1, sMapName_AbandonedShip}, + { 8, 7, 1, 1, sMapName_NewMauville}, + { 0, 3, 1, 1, sMapName_MeteorFalls}, + { 1, 2, 1, 1, sMapName_MeteorFalls}, + {16, 4, 1, 1, sMapName_MtPyre}, + {19, 3, 1, 1, sMapName_AquaHideoutOld}, + {24, 4, 1, 1, sMapName_ShoalCave}, + {24, 9, 1, 1, sMapName_SeafloorCavern}, + {24, 9, 1, 1, sMapName_Underwater}, + {27, 9, 1, 1, sMapName_VictoryRoad}, + {17, 10, 1, 1, sMapName_MirageIsland}, + {21, 7, 1, 1, sMapName_CaveOfOrigin}, + {12, 14, 1, 1, sMapName_SouthernIsland}, + { 6, 3, 1, 1, sMapName_FieryPath}, + { 7, 3, 1, 1, sMapName_FieryPath}, + { 6, 3, 1, 1, sMapName_JaggedPass}, + { 7, 2, 1, 1, sMapName_JaggedPass}, + {11, 10, 1, 1, sMapName_SealedChamber}, + {11, 10, 1, 1, sMapName_Underwater}, + {13, 0, 1, 1, sMapName_ScorchedSlab}, + { 0, 10, 1, 1, sMapName_IslandCave}, + { 8, 3, 1, 1, sMapName_DesertRuins}, + {13, 2, 1, 1, sMapName_AncientTomb}, + { 0, 0, 1, 1, sMapName_InsideOfTruck}, + {19, 10, 1, 1, sMapName_SkyPillar}, + { 0, 0, 1, 1, sMapName_SecretBase}, + { 0, 0, 1, 1, sMapName_None}, + { 0, 0, 1, 1, sMapName_PalletTown}, + { 0, 0, 1, 1, sMapName_ViridianCity}, + { 0, 0, 1, 1, sMapName_PewterCity}, + { 0, 0, 1, 1, sMapName_CeruleanCity}, + { 0, 0, 1, 1, sMapName_LavenderTown}, + { 0, 0, 1, 1, sMapName_VermilionCity}, + { 0, 0, 1, 1, sMapName_CeladonCity}, + { 0, 0, 1, 1, sMapName_FuchsiaCity}, + { 0, 0, 1, 1, sMapName_CinnabarIsland}, + { 0, 0, 1, 1, sMapName_IndigoPlateau}, + { 0, 0, 1, 1, sMapName_SaffronCity}, + { 0, 0, 1, 1, sMapName_Route4}, + { 0, 0, 1, 1, sMapName_Route10}, + { 0, 0, 1, 1, sMapName_Route1}, + { 0, 0, 1, 1, sMapName_Route2}, + { 0, 0, 1, 1, sMapName_Route3}, + { 0, 0, 1, 1, sMapName_Route4_2}, + { 0, 0, 1, 1, sMapName_Route5}, + { 0, 0, 1, 1, sMapName_Route6}, + { 0, 0, 1, 1, sMapName_Route7}, + { 0, 0, 1, 1, sMapName_Route8}, + { 0, 0, 1, 1, sMapName_Route9}, + { 0, 0, 1, 1, sMapName_Route10_2}, + { 0, 0, 1, 1, sMapName_Route11}, + { 0, 0, 1, 1, sMapName_Route12}, + { 0, 0, 1, 1, sMapName_Route13}, + { 0, 0, 1, 1, sMapName_Route14}, + { 0, 0, 1, 1, sMapName_Route15}, + { 0, 0, 1, 1, sMapName_Route16}, + { 0, 0, 1, 1, sMapName_Route17}, + { 0, 0, 1, 1, sMapName_Route18}, + { 0, 0, 1, 1, sMapName_Route19}, + { 0, 0, 1, 1, sMapName_Route20}, + { 0, 0, 1, 1, sMapName_Route21}, + { 0, 0, 1, 1, sMapName_Route22}, + { 0, 0, 1, 1, sMapName_Route23}, + { 0, 0, 1, 1, sMapName_Route24}, + { 0, 0, 1, 1, sMapName_Route25}, + { 0, 0, 1, 1, sMapName_ViridianForest}, + { 0, 0, 1, 1, sMapName_MtMoon}, + { 0, 0, 1, 1, sMapName_SSAnne}, + { 0, 0, 1, 1, sMapName_UndergroundPath}, + { 0, 0, 1, 1, sMapName_UndergroundPath2}, + { 0, 0, 1, 1, sMapName_DiglettsCave}, + { 0, 0, 1, 1, sMapName_KantoVictoryRoad}, + { 0, 0, 1, 1, sMapName_RocketHideout}, + { 0, 0, 1, 1, sMapName_SilphCo}, + { 0, 0, 1, 1, sMapName_PokemonMansion}, + { 0, 0, 1, 1, sMapName_KantoSafariZone}, + { 0, 0, 1, 1, sMapName_PokemonLeague}, + { 0, 0, 1, 1, sMapName_RockTunnel}, + { 0, 0, 1, 1, sMapName_SeafoamIslands}, + { 0, 0, 1, 1, sMapName_PokemonTower}, + { 0, 0, 1, 1, sMapName_CeruleanCave}, + { 0, 0, 1, 1, sMapName_PowerPlant}, + { 0, 0, 1, 1, sMapName_OneIsland}, + { 0, 0, 1, 1, sMapName_TwoIsland}, + { 0, 0, 1, 1, sMapName_ThreeIsland}, + { 0, 0, 1, 1, sMapName_FourIsland}, + { 0, 0, 1, 1, sMapName_FiveIsland}, + { 0, 0, 1, 1, sMapName_SevenIsland}, + { 0, 0, 1, 1, sMapName_SixIsland}, + { 0, 0, 1, 1, sMapName_KindleRoad}, + { 0, 0, 1, 1, sMapName_TreasureBeach}, + { 0, 0, 1, 1, sMapName_CapeBrink}, + { 0, 0, 1, 1, sMapName_BondBridge}, + { 0, 0, 1, 1, sMapName_ThreeIslePort}, + { 0, 0, 1, 1, sMapName_SeviiIsle6}, + { 0, 0, 1, 1, sMapName_SeviiIsle7}, + { 0, 0, 1, 1, sMapName_SeviiIsle8}, + { 0, 0, 1, 1, sMapName_SeviiIsle9}, + { 0, 0, 1, 1, sMapName_ResortGorgeous}, + { 0, 0, 1, 1, sMapName_WaterLabyrinth}, + { 0, 0, 1, 1, sMapName_FiveIsleMeadow}, + { 0, 0, 1, 1, sMapName_MemorialPillar}, + { 0, 0, 1, 1, sMapName_OutcastIsland}, + { 0, 0, 1, 1, sMapName_GreenPath}, + { 0, 0, 1, 1, sMapName_WaterPath}, + { 0, 0, 1, 1, sMapName_RuinValley}, + { 0, 0, 1, 1, sMapName_TrainerTower}, + { 0, 0, 1, 1, sMapName_CanyonEntrance}, + { 0, 0, 1, 1, sMapName_SevaultCanyon}, + { 0, 0, 1, 1, sMapName_TanobyRuins}, + { 0, 0, 1, 1, sMapName_SeviiIsle22}, + { 0, 0, 1, 1, sMapName_SeviiIsle23}, + { 0, 0, 1, 1, sMapName_SeviiIsle24}, + { 0, 0, 1, 1, sMapName_NavelRock}, + { 0, 0, 1, 1, sMapName_MtEmber}, + { 0, 0, 1, 1, sMapName_BerryForest}, + { 0, 0, 1, 1, sMapName_IcefallCave}, + { 0, 0, 1, 1, sMapName_RocketWarehouse}, + { 0, 0, 1, 1, sMapName_TrainerTower2}, + { 0, 0, 1, 1, sMapName_DottedHole}, + { 0, 0, 1, 1, sMapName_LostCave}, + { 0, 0, 1, 1, sMapName_PatternBush}, + { 0, 0, 1, 1, sMapName_AlteringCave}, + { 0, 0, 1, 1, sMapName_TanobyChambers}, + { 0, 0, 1, 1, sMapName_ThreeIslePath}, + { 0, 0, 1, 1, sMapName_TanobyKey}, + { 0, 0, 1, 1, sMapName_BirthIsland}, + { 0, 0, 1, 1, sMapName_MoneanChamber}, + { 0, 0, 1, 1, sMapName_LiptooChamber}, + { 0, 0, 1, 1, sMapName_WeepthChamber}, + { 0, 0, 1, 1, sMapName_DilfordChamber}, + { 0, 0, 1, 1, sMapName_ScufibChamber}, + { 0, 0, 1, 1, sMapName_RixyChamber}, + { 0, 0, 1, 1, sMapName_ViapoisChamber}, + { 0, 0, 1, 1, sMapName_EmberSpa}, + { 0, 0, 1, 1, sMapName_SpecialArea}, + {19, 3, 1, 1, sMapName_AquaHideout}, + { 6, 3, 1, 1, sMapName_MagmaHideout}, + { 8, 2, 1, 1, sMapName_MirageTower}, + { 0, 0, 1, 1, sMapName_BirthIsland}, + { 0, 0, 1, 1, sMapName_FarawayIsland}, + {22, 12, 1, 1, sMapName_ArtisanCave}, + { 0, 0, 1, 1, sMapName_MarineCave}, + { 0, 0, 1, 1, sMapName_Underwater}, + { 0, 0, 1, 1, sMapName_TerraCave}, + { 0, 10, 1, 3, sMapName_Underwater}, + {24, 3, 2, 2, sMapName_Underwater}, + {24, 10, 2, 1, sMapName_Underwater}, + { 2, 0, 1, 1, sMapName_DesertUnderpass}, + { 6, 8, 1, 1, sMapName_AlteringCave}, + { 0, 0, 1, 1, sMapName_NavelRock}, + { 8, 4, 1, 1, sMapName_TrainerHill} +}; + +#endif //GUARD_DATA_REGION_MAP_REGION_MAP_ENTRIES_H diff --git a/src/data/text/abilities.h b/src/data/text/abilities.h new file mode 100644 index 000000000..3a1e989d2 --- /dev/null +++ b/src/data/text/abilities.h @@ -0,0 +1,247 @@ +#ifndef POKEEMERALD_DATA_TEXT_ABILITIES_H +#define POKEEMERALD_DATA_TEXT_ABILITIES_H + +static const u8 gNoneAbilityDescription[] = _("No special ability."); +static const u8 gStenchAbilityDescription[] = _("Helps repel wild POKéMON."); +static const u8 gDrizzleAbilityDescription[] = _("Summons rain in battle."); +static const u8 gSpeedBoostAbilityDescription[] = _("Gradually boosts SPEED."); +static const u8 gBattleArmorAbilityDescription[] = _("Blocks critical hits."); +static const u8 gSturdyAbilityDescription[] = _("Negates 1-hit KO attacks."); +static const u8 gDampAbilityDescription[] = _("Prevents self-destruction."); +static const u8 gLimberAbilityDescription[] = _("Prevents paralysis."); +static const u8 gSandVeilAbilityDescription[] = _("Ups evasion in a sandstorm."); +static const u8 gStaticAbilityDescription[] = _("Paralyzes on contact."); +static const u8 gVoltAbsorbAbilityDescription[] = _("Turns electricity into HP."); +static const u8 gWaterAbsorbAbilityDescription[] = _("Changes water into HP."); +static const u8 gObliviousAbilityDescription[] = _("Prevents attraction."); +static const u8 gCloudNineAbilityDescription[] = _("Negates weather effects."); +static const u8 gCompoundEyesAbilityDescription[] = _("Raises accuracy."); +static const u8 gInsomniaAbilityDescription[] = _("Prevents sleep."); +static const u8 gColorChangeAbilityDescription[] = _("Changes type to foe’s move."); +static const u8 gImmunityAbilityDescription[] = _("Prevents poisoning."); +static const u8 gFlashFireAbilityDescription[] = _("Powers up if hit by fire."); +static const u8 gShieldDustAbilityDescription[] = _("Prevents added effects."); +static const u8 gOwnTempoAbilityDescription[] = _("Prevents confusion."); +static const u8 gSuctionCupsAbilityDescription[] = _("Firmly anchors the body."); +static const u8 gIntimidateAbilityDescription[] = _("Lowers the foe’s ATTACK."); +static const u8 gShadowTagAbilityDescription[] = _("Prevents the foe’s escape."); +static const u8 gRoughSkinAbilityDescription[] = _("Hurts to touch."); +static const u8 gWonderGuardAbilityDescription[] = _("“Super effective” hits."); +static const u8 gLevitateAbilityDescription[] = _("Not hit by GROUND attacks."); +static const u8 gEffectSporeAbilityDescription[] = _("Leaves spores on contact."); +static const u8 gSynchronizeAbilityDescription[] = _("Passes on status problems."); +static const u8 gClearBodyAbilityDescription[] = _("Prevents ability reduction."); +static const u8 gNaturalCureAbilityDescription[] = _("Heals upon switching out."); +static const u8 gLightningRodAbilityDescription[] = _("Draws electrical moves."); +static const u8 gSereneGraceAbilityDescription[] = _("Promotes added effects."); +static const u8 gSwiftSwimAbilityDescription[] = _("Raises SPEED in rain."); +static const u8 gChlorophyllAbilityDescription[] = _("Raises SPEED in sunshine."); +static const u8 gIlluminateAbilityDescription[] = _("Encounter rate increases."); +static const u8 gTraceAbilityDescription[] = _("Copies special ability."); +static const u8 gHugePowerAbilityDescription[] = _("Raises ATTACK."); +static const u8 gPoisonPointAbilityDescription[] = _("Poisons foe on contact."); +static const u8 gInnerFocusAbilityDescription[] = _("Prevents flinching."); +static const u8 gMagmaArmorAbilityDescription[] = _("Prevents freezing."); +static const u8 gWaterVeilAbilityDescription[] = _("Prevents burns."); +static const u8 gMagnetPullAbilityDescription[] = _("Traps STEEL-type POKéMON."); +static const u8 gSoundproofAbilityDescription[] = _("Avoids sound-based moves."); +static const u8 gRainDishAbilityDescription[] = _("Slight HP recovery in rain."); +static const u8 gSandStreamAbilityDescription[] = _("Summons a sandstorm."); +static const u8 gPressureAbilityDescription[] = _("Raises foe’s PP usage."); +static const u8 gThickFatAbilityDescription[] = _("Heat-and-cold protection."); +static const u8 gEarlyBirdAbilityDescription[] = _("Awakens quickly from sleep."); +static const u8 gFlameBodyAbilityDescription[] = _("Burns the foe on contact."); +static const u8 gRunAwayAbilityDescription[] = _("Makes escaping easier."); +static const u8 gKeenEyeAbilityDescription[] = _("Prevents loss of accuracy."); +static const u8 gHyperCutterAbilityDescription[] = _("Prevents ATTACK reduction."); +static const u8 gPickupAbilityDescription[] = _("May pick up items."); +static const u8 gTruantAbilityDescription[] = _("Moves only every two turns."); +static const u8 gHustleAbilityDescription[] = _("Trades accuracy for power."); +static const u8 gCuteCharmAbilityDescription[] = _("Infatuates on contact."); +static const u8 gPlusAbilityDescription[] = _("Powers up with MINUS."); +static const u8 gMinusAbilityDescription[] = _("Powers up with PLUS."); +static const u8 gForecastAbilityDescription[] = _("Changes with the weather."); +static const u8 gStickyHoldAbilityDescription[] = _("Prevents item theft."); +static const u8 gShedSkinAbilityDescription[] = _("Heals the body by shedding."); +static const u8 gGutsAbilityDescription[] = _("Ups ATTACK if suffering."); +static const u8 gMarvelScaleAbilityDescription[] = _("Ups DEFENSE if suffering."); +static const u8 gLiquidOozeAbilityDescription[] = _("Draining causes injury."); +static const u8 gOvergrowAbilityDescription[] = _("Ups GRASS moves in a pinch."); +static const u8 gBlazeAbilityDescription[] = _("Ups FIRE moves in a pinch."); +static const u8 gTorrentAbilityDescription[] = _("Ups WATER moves in a pinch."); +static const u8 gSwarmAbilityDescription[] = _("Ups BUG moves in a pinch."); +static const u8 gRockHeadAbilityDescription[] = _("Prevents recoil damage."); +static const u8 gDroughtAbilityDescription[] = _("Summons sunlight in battle."); +static const u8 gArenaTrapAbilityDescription[] = _("Prevents fleeing."); +static const u8 gVitalSpiritAbilityDescription[] = _("Prevents sleep."); +static const u8 gWhiteSmokeAbilityDescription[] = _("Prevents ability reduction."); +static const u8 gPurePowerAbilityDescription[] = _("Raises ATTACK."); +static const u8 gShellArmorAbilityDescription[] = _("Blocks critical hits."); +static const u8 gCacophonyAbilityDescription[] = _("Avoids sound-based moves."); +static const u8 gAirLockAbilityDescription[] = _("Negates weather effects."); + +const u8 gAbilityNames[ABILITIES_COUNT][ABILITY_NAME_LENGTH + 1] = +{ + _("-------"), + _("STENCH"), + _("DRIZZLE"), + _("SPEED BOOST"), + _("BATTLE ARMOR"), + _("STURDY"), + _("DAMP"), + _("LIMBER"), + _("SAND VEIL"), + _("STATIC"), + _("VOLT ABSORB"), + _("WATER ABSORB"), + _("OBLIVIOUS"), + _("CLOUD NINE"), + _("COMPOUNDEYES"), + _("INSOMNIA"), + _("COLOR CHANGE"), + _("IMMUNITY"), + _("FLASH FIRE"), + _("SHIELD DUST"), + _("OWN TEMPO"), + _("SUCTION CUPS"), + _("INTIMIDATE"), + _("SHADOW TAG"), + _("ROUGH SKIN"), + _("WONDER GUARD"), + _("LEVITATE"), + _("EFFECT SPORE"), + _("SYNCHRONIZE"), + _("CLEAR BODY"), + _("NATURAL CURE"), + _("LIGHTNINGROD"), + _("SERENE GRACE"), + _("SWIFT SWIM"), + _("CHLOROPHYLL"), + _("ILLUMINATE"), + _("TRACE"), + _("HUGE POWER"), + _("POISON POINT"), + _("INNER FOCUS"), + _("MAGMA ARMOR"), + _("WATER VEIL"), + _("MAGNET PULL"), + _("SOUNDPROOF"), + _("RAIN DISH"), + _("SAND STREAM"), + _("PRESSURE"), + _("THICK FAT"), + _("EARLY BIRD"), + _("FLAME BODY"), + _("RUN AWAY"), + _("KEEN EYE"), + _("HYPER CUTTER"), + _("PICKUP"), + _("TRUANT"), + _("HUSTLE"), + _("CUTE CHARM"), + _("PLUS"), + _("MINUS"), + _("FORECAST"), + _("STICKY HOLD"), + _("SHED SKIN"), + _("GUTS"), + _("MARVEL SCALE"), + _("LIQUID OOZE"), + _("OVERGROW"), + _("BLAZE"), + _("TORRENT"), + _("SWARM"), + _("ROCK HEAD"), + _("DROUGHT"), + _("ARENA TRAP"), + _("VITAL SPIRIT"), + _("WHITE SMOKE"), + _("PURE POWER"), + _("SHELL ARMOR"), + _("CACOPHONY"), + _("AIR LOCK"), +}; + +const u8 *const gAbilityDescriptionPointers[ABILITIES_COUNT] = +{ + gNoneAbilityDescription, + gStenchAbilityDescription, + gDrizzleAbilityDescription, + gSpeedBoostAbilityDescription, + gBattleArmorAbilityDescription, + gSturdyAbilityDescription, + gDampAbilityDescription, + gLimberAbilityDescription, + gSandVeilAbilityDescription, + gStaticAbilityDescription, + gVoltAbsorbAbilityDescription, + gWaterAbsorbAbilityDescription, + gObliviousAbilityDescription, + gCloudNineAbilityDescription, + gCompoundEyesAbilityDescription, + gInsomniaAbilityDescription, + gColorChangeAbilityDescription, + gImmunityAbilityDescription, + gFlashFireAbilityDescription, + gShieldDustAbilityDescription, + gOwnTempoAbilityDescription, + gSuctionCupsAbilityDescription, + gIntimidateAbilityDescription, + gShadowTagAbilityDescription, + gRoughSkinAbilityDescription, + gWonderGuardAbilityDescription, + gLevitateAbilityDescription, + gEffectSporeAbilityDescription, + gSynchronizeAbilityDescription, + gClearBodyAbilityDescription, + gNaturalCureAbilityDescription, + gLightningRodAbilityDescription, + gSereneGraceAbilityDescription, + gSwiftSwimAbilityDescription, + gChlorophyllAbilityDescription, + gIlluminateAbilityDescription, + gTraceAbilityDescription, + gHugePowerAbilityDescription, + gPoisonPointAbilityDescription, + gInnerFocusAbilityDescription, + gMagmaArmorAbilityDescription, + gWaterVeilAbilityDescription, + gMagnetPullAbilityDescription, + gSoundproofAbilityDescription, + gRainDishAbilityDescription, + gSandStreamAbilityDescription, + gPressureAbilityDescription, + gThickFatAbilityDescription, + gEarlyBirdAbilityDescription, + gFlameBodyAbilityDescription, + gRunAwayAbilityDescription, + gKeenEyeAbilityDescription, + gHyperCutterAbilityDescription, + gPickupAbilityDescription, + gTruantAbilityDescription, + gHustleAbilityDescription, + gCuteCharmAbilityDescription, + gPlusAbilityDescription, + gMinusAbilityDescription, + gForecastAbilityDescription, + gStickyHoldAbilityDescription, + gShedSkinAbilityDescription, + gGutsAbilityDescription, + gMarvelScaleAbilityDescription, + gLiquidOozeAbilityDescription, + gOvergrowAbilityDescription, + gBlazeAbilityDescription, + gTorrentAbilityDescription, + gSwarmAbilityDescription, + gRockHeadAbilityDescription, + gDroughtAbilityDescription, + gArenaTrapAbilityDescription, + gVitalSpiritAbilityDescription, + gWhiteSmokeAbilityDescription, + gPurePowerAbilityDescription, + gShellArmorAbilityDescription, + gCacophonyAbilityDescription, + gAirLockAbilityDescription, +}; + +#endif // POKEEMERALD_DATA_TEXT_ABILITIES_H diff --git a/src/data/text/item_descriptions.h b/src/data/text/item_descriptions.h new file mode 100644 index 000000000..8683978d7 --- /dev/null +++ b/src/data/text/item_descriptions.h @@ -0,0 +1,329 @@ +#ifndef POKEEMERALD_DATA_TEXT_ITEM_DESCRIPTIONS_H +#define POKEEMERALD_DATA_TEXT_ITEM_DESCRIPTIONS_H +const u8 gDummyItemDescription[] = _("?????"); +//Pokeballs +const u8 gMasterBallItemDescription[] = _("The best BALL that\ncatches a POKéMON\nwithout fail."); +const u8 gUltraBallItemDescription[] = _("A better BALL with\na higher catch rate\nthan a GREAT BALL."); +const u8 gGreatBallItemDescription[] = _("A good BALL with a\nhigher catch rate\nthan a POKé BALL."); +const u8 gPokeBallItemDescription[] = _("A tool used for\ncatching wild\nPOKéMON."); +const u8 gSafariBallItemDescription[] = _("A special BALL that\nis used only in the\nSAFARI ZONE."); +const u8 gNetBallItemDescription[] = _("A BALL that works\nwell on WATER- and\nBUG-type POKéMON."); +const u8 gDiveBallItemDescription[] = _("A BALL that works\nbetter on POKéMON\non the ocean floor."); +const u8 gNestBallItemDescription[] = _("A BALL that works\nbetter on weaker\nPOKéMON."); +const u8 gRepeatBallItemDescription[] = _("A BALL that works\nbetter on POKéMON\ncaught before."); +const u8 gTimerBallItemDescription[] = _("A BALL that gains\npower in battles\ntaking many turns."); +const u8 gLuxuryBallItemDescription[] = _("A cozy BALL that\nmakes POKéMON\nmore friendly."); +const u8 gPremierBallItemDescription[] = _("A rare BALL made\nin commemoration\nof some event."); +//Medicine +const u8 gPotionItemDescription[] = _("Restores the HP of\na POKéMON by\n20 points."); +const u8 gAntidoteItemDescription[] = _("Heals a poisoned\nPOKéMON."); +const u8 gBurnHealItemDescription[] = _("Heals POKéMON\nof a burn."); +const u8 gIceHealItemDescription[] = _("Defrosts a frozen\nPOKéMON."); +const u8 gAwakeningItemDescription[] = _("Awakens a sleeping\nPOKéMON."); +const u8 gParalyzeHealItemDescription[] = _("Heals a paralyzed\nPOKéMON."); +const u8 gFullRestoreItemDescription[] = _("Fully restores the\nHP and status of a\nPOKéMON."); +const u8 gMaxPotionItemDescription[] = _("Fully restores the\nHP of a POKéMON."); +const u8 gHyperPotionItemDescription[] = _("Restores the HP of\na POKéMON by\n200 points."); +const u8 gSuperPotionItemDescription[] = _("Restores the HP of\na POKéMON by\n50 points."); +const u8 gFullHealItemDescription[] = _("Heals all the\nstatus problems of\none POKéMON."); +const u8 gReviveItemDescription[] = _("Revives a fainted\nPOKéMON with half\nits HP."); +const u8 gMaxReviveItemDescription[] = _("Revives a fainted\nPOKéMON with all\nits HP."); +const u8 gFreshWaterItemDescription[] = _("A mineral water\nthat restores HP\nby 50 points."); +const u8 gSodaPopItemDescription[] = _("A fizzy soda drink\nthat restores HP\nby 60 points."); +const u8 gLemonadeItemDescription[] = _("A very sweet drink\nthat restores HP\nby 80 points."); +const u8 gMoomooMilkItemDescription[] = _("A nutritious milk\nthat restores HP\nby 100 points."); +const u8 gEnergyPowderItemDescription[] = _("A bitter powder\nthat restores HP\nby 50 points."); +const u8 gEnergyRootItemDescription[] = _("A bitter root\nthat restores HP\nby 200 points."); +const u8 gHealPowderItemDescription[] = _("A bitter powder\nthat heals all\nstatus problems."); +const u8 gRevivalHerbItemDescription[] = _("A very bitter herb\nthat revives a\nfainted POKéMON."); +const u8 gEtherItemDescription[] = _("Restores the PP\nof a selected move\nby 10."); +const u8 gMaxEtherItemDescription[] = _("Fully restores the\nPP of a selected\nmove."); +const u8 gElixirItemDescription[] = _("Restores the PP\nof all moves by 10."); +const u8 gMaxElixirItemDescription[] = _("Fully restores the\nPP of a POKéMON’s\nmoves."); +const u8 gLavaCookieItemDescription[] = _("A local specialty\nthat heals all\nstatus problems."); +const u8 gBlueFluteItemDescription[] = _("A glass flute that\nawakens sleeping\nPOKéMON."); +const u8 gYellowFluteItemDescription[] = _("A glass flute that\nsnaps POKéMON\nout of confusion."); +const u8 gRedFluteItemDescription[] = _("A glass flute that\nsnaps POKéMON\nout of attraction."); +const u8 gBlackFluteItemDescription[] = _("A glass flute that\nkeeps away wild\nPOKéMON."); +const u8 gWhiteFluteItemDescription[] = _("A glass flute that\nlures wild POKéMON."); +const u8 gBerryJuiceItemDescription[] = _("A 100% pure juice\nthat restores HP\nby 20 points."); +const u8 gSacredAshItemDescription[] = _("Fully revives and\nrestores all\nfainted POKéMON."); +//Collectibles +const u8 gShoalSaltItemDescription[] = _("Salt obtained from\ndeep inside the\nSHOAL CAVE."); +const u8 gShoalShellItemDescription[] = _("A seashell found\ndeep inside the\nSHOAL CAVE."); +const u8 gRedShardItemDescription[] = _("A shard from an\nancient item. Can\nbe sold cheaply."); +const u8 gBlueShardItemDescription[] = _("A shard from an\nancient item. Can\nbe sold cheaply."); +const u8 gYellowShardItemDescription[] = _("A shard from an\nancient item. Can\nbe sold cheaply."); +const u8 gGreenShardItemDescription[] = _("A shard from an\nancient item. Can\nbe sold cheaply."); +//Vitamins +const u8 gHPUpItemDescription[] = _("Raises the base HP\nof one POKéMON."); +const u8 gProteinItemDescription[] = _("Raises the base\nATTACK stat of one\nPOKéMON."); +const u8 gIronItemDescription[] = _("Raises the base\nDEFENSE stat of\none POKéMON."); +const u8 gCarbosItemDescription[] = _("Raises the base\nSPEED stat of one\nPOKéMON."); +const u8 gCalciumItemDescription[] = _("Raises the base\nSP. ATK stat of one\nPOKéMON."); +const u8 gRareCandyItemDescription[] = _("Raises the level\nof a POKéMON by\none."); +const u8 gPPUpItemDescription[] = _("Raises the maximum\nPP of a selected\nmove."); +const u8 gZincItemDescription[] = _("Raises the base\nSP. DEF stat of one\nPOKéMON."); +const u8 gPPMaxItemDescription[] = _("Raises the PP of a\nmove to its maximum\npoints."); +//Battle items +const u8 gGuardSpecItemDescription[] = _("Prevents stat\nreduction when\nused in battle."); +const u8 gDireHitItemDescription[] = _("Raises the\ncritical-hit ratio\nduring one battle."); +const u8 gXAttackItemDescription[] = _("Raises the stat\nATTACK during one\nbattle."); +const u8 gXDefendItemDescription[] = _("Raises the stat\nDEFENSE during one\nbattle."); +const u8 gXSpeedItemDescription[] = _("Raises the stat\nSPEED during one\nbattle."); +const u8 gXAccuracyItemDescription[] = _("Raises accuracy\nof attack moves\nduring one battle."); +const u8 gXSpecialItemDescription[] = _("Raises the stat\nSP. ATK during one\nbattle."); +const u8 gPokeDollItemDescription[] = _("Use to flee from\nany battle with\na wild POKéMON."); +const u8 gFluffyTailItemDescription[] = _("Use to flee from\nany battle with\na wild POKéMON."); +//Field items +const u8 gSuperRepelItemDescription[] = _("Repels weak wild\nPOKéMON for 200\nsteps."); +const u8 gMaxRepelItemDescription[] = _("Repels weak wild\nPOKéMON for 250\nsteps."); +const u8 gEscapeRopeItemDescription[] = _("Use to escape\ninstantly from a\ncave or a dungeon."); +const u8 gRepelItemDescription[] = _("Repels weak wild\nPOKéMON for 100\nsteps."); +//Evolution stones +const u8 gSunStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve."); +const u8 gMoonStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve."); +const u8 gFireStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve."); +const u8 gThunderStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve."); +const u8 gWaterStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve."); +const u8 gLeafStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve."); +//Valuable items +const u8 gTinyMushroomItemDescription[] = _("A plain mushroom\nthat would sell\nat a cheap price."); +const u8 gBigMushroomItemDescription[] = _("A rare mushroom\nthat would sell at a\nhigh price."); +const u8 gPearlItemDescription[] = _("A pretty pearl\nthat would sell at a\ncheap price."); +const u8 gBigPearlItemDescription[] = _("A lovely large pearl\nthat would sell at a\nhigh price."); +const u8 gStardustItemDescription[] = _("Beautiful red sand.\nCan be sold at a\nhigh price."); +const u8 gStarPieceItemDescription[] = _("A red gem shard.\nIt would sell for a\nvery high price."); +const u8 gNuggetItemDescription[] = _("A nugget of pure\ngold. Can be sold at\na high price."); +const u8 gHeartScaleItemDescription[] = _("A lovely scale.\nIt is coveted by\ncollectors."); +//Mail +const u8 gOrangeMailItemDescription[] = _("A ZIGZAGOON-print\nMAIL to be held by\na POKéMON."); +const u8 gHarborMailItemDescription[] = _("A WINGULL-print\nMAIL to be held by\na POKéMON."); +const u8 gGlitterMailItemDescription[] = _("A PIKACHU-print\nMAIL to be held by\na POKéMON."); +const u8 gMechMailItemDescription[] = _("A MAGNEMITE-print\nMAIL to be held by\na POKéMON."); +const u8 gWoodMailItemDescription[] = _("A SLAKOTH-print\nMAIL to be held by\na POKéMON."); +const u8 gWaveMailItemDescription[] = _("A WAILMER-print\nMAIL to be held by\na POKéMON."); +const u8 gBeadMailItemDescription[] = _("MAIL featuring a\nsketch of the\nholding POKéMON."); +const u8 gShadowMailItemDescription[] = _("A DUSKULL-print\nMAIL to be held by\na POKéMON."); +const u8 gTropicMailItemDescription[] = _("A BELLOSSOM-print\nMAIL to be held by\na POKéMON."); +const u8 gDreamMailItemDescription[] = _("MAIL featuring a\nsketch of the\nholding POKéMON."); +const u8 gFabMailItemDescription[] = _("A gorgeous-print\nMAIL to be held\nby a POKéMON."); +const u8 gRetroMailItemDescription[] = _("MAIL featuring the\ndrawings of three\nPOKéMON."); +//Berries +const u8 gCheriBerryItemDescription[] = _("A hold item that\nheals paralysis\nin battle."); +const u8 gChestoBerryItemDescription[] = _("A hold item that\nawakens POKéMON\nin battle."); +const u8 gPechaBerryItemDescription[] = _("A hold item that\nheals poisoning\nin battle."); +const u8 gRawstBerryItemDescription[] = _("A hold item that\nheals a burn in\nbattle."); +const u8 gAspearBerryItemDescription[] = _("A hold item that\ndefrosts POKéMON\nin battle."); +const u8 gLeppaBerryItemDescription[] = _("A hold item that\nrestores 10 PP in\nbattle."); +const u8 gOranBerryItemDescription[] = _("A hold item that\nrestores 10 HP in\nbattle."); +const u8 gPersimBerryItemDescription[] = _("A hold item that\nheals confusion\nin battle."); +const u8 gLumBerryItemDescription[] = _("A hold item that\nheals any status\nproblem in battle."); +const u8 gSitrusBerryItemDescription[] = _("A hold item that\nrestores 30 HP in\nbattle."); +const u8 gFigyBerryItemDescription[] = _("A hold item that\nrestores HP but\nmay confuse."); +const u8 gWikiBerryItemDescription[] = _("A hold item that\nrestores HP but\nmay confuse."); +const u8 gMagoBerryItemDescription[] = _("A hold item that\nrestores HP but\nmay confuse."); +const u8 gAguavBerryItemDescription[] = _("A hold item that\nrestores HP but\nmay confuse."); +const u8 gIapapaBerryItemDescription[] = _("A hold item that\nrestores HP but\nmay confuse."); +const u8 gRazzBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow RAZZ."); +const u8 gBlukBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow BLUK."); +const u8 gNanabBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow NANAB."); +const u8 gWepearBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow WEPEAR."); +const u8 gPinapBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow PINAP."); +const u8 gPomegBerryItemDescription[] = _("Makes a POKéMON\nfriendly but lowers\nbase HP."); +const u8 gKelpsyBerryItemDescription[] = _("Makes a POKéMON\nfriendly but lowers\nbase ATTACK."); +const u8 gQualotBerryItemDescription[] = _("Makes a POKéMON\nfriendly but lowers\nbase DEFENSE."); +const u8 gHondewBerryItemDescription[] = _("Makes a POKéMON\nfriendly but lowers\nbase SP. ATK."); +const u8 gGrepaBerryItemDescription[] = _("Makes a POKéMON\nfriendly but lowers\nbase SP. DEF."); +const u8 gTamatoBerryItemDescription[] = _("Makes a POKéMON\nfriendly but lowers\nbase SPEED."); +const u8 gCornnBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow CORNN."); +const u8 gMagostBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow MAGOST."); +const u8 gRabutaBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow RABUTA."); +const u8 gNomelBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow NOMEL."); +const u8 gSpelonBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow SPELON."); +const u8 gPamtreBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow PAMTRE."); +const u8 gWatmelBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow WATMEL."); +const u8 gDurinBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow DURIN."); +const u8 gBelueBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow BELUE."); +const u8 gLiechiBerryItemDescription[] = _("A hold item that\nraises ATTACK in\na pinch."); +const u8 gGanlonBerryItemDescription[] = _("A hold item that\nraises DEFENSE in\na pinch."); +const u8 gSalacBerryItemDescription[] = _("A hold item that\nraises SPEED in\na pinch."); +const u8 gPetayaBerryItemDescription[] = _("A hold item that\nraises SP. ATK in\na pinch."); +const u8 gApicotBerryItemDescription[] = _("A hold item that\nraises SP. DEF in\na pinch."); +const u8 gLansatBerryItemDescription[] = _("A hold item that\nups the critical-\nhit rate in a pinch."); +const u8 gStarfBerryItemDescription[] = _("A hold item that\nsharply boosts a\nstat in a pinch."); +const u8 gEnigmaBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow a mystery."); +//Hold items +const u8 gBrightPowderItemDescription[] = _("A hold item that\ncasts a glare to\nreduce accuracy."); +const u8 gWhiteHerbItemDescription[] = _("A hold item that\nrestores any\nlowered stat."); +const u8 gMachoBraceItemDescription[] = _("A hold item that\npromotes growth,\nbut reduces SPEED."); +const u8 gExpShareItemDescription[] = _("A hold item that\ngets EXP. points\nfrom battles."); +const u8 gQuickClawItemDescription[] = _("A hold item that\noccasionally allows\nthe first strike."); +const u8 gSootheBellItemDescription[] = _("A hold item that\ncalms spirits and\nfosters friendship."); +const u8 gMentalHerbItemDescription[] = _("A hold item that\nsnaps POKéMON out\nof infatuation."); +const u8 gChoiceBandItemDescription[] = _("Raises a move’s\npower, but permits\nonly that move."); +const u8 gKingsRockItemDescription[] = _("A hold item that\nmay cause flinching\nwhen the foe is hit."); +const u8 gSilverPowderItemDescription[] = _("A hold item that\nraises the power of\nBUG-type moves."); +const u8 gAmuletCoinItemDescription[] = _("Doubles money in\nbattle if the\nholder takes part."); +const u8 gCleanseTagItemDescription[] = _("A hold item that\nhelps repel wild\nPOKéMON."); +const u8 gSoulDewItemDescription[] = _("Hold item: raises\nSP. ATK & SP. DEF of\nLATIOS & LATIAS."); +const u8 gDeepSeaToothItemDescription[] = _("A hold item that\nraises the SP. ATK\nof CLAMPERL."); +const u8 gDeepSeaScaleItemDescription[] = _("A hold item that\nraises the SP. DEF\nof CLAMPERL."); +const u8 gSmokeBallItemDescription[] = _("A hold item that\nassures fleeing\nfrom wild POKéMON."); +const u8 gEverstoneItemDescription[] = _("A wondrous hold\nitem that prevents\nevolution."); +const u8 gFocusBandItemDescription[] = _("A hold item that\noccasionally\nprevents fainting."); +const u8 gLuckyEggItemDescription[] = _("A hold item that\nboosts EXP. points\nearned in battle."); +const u8 gScopeLensItemDescription[] = _("A hold item that\nimproves the\ncritical-hit rate."); +const u8 gMetalCoatItemDescription[] = _("A hold item that\nraises the power of\nSTEEL-type moves."); +const u8 gLeftoversItemDescription[] = _("A hold item that\ngradually restores\nHP in battle."); +const u8 gDragonScaleItemDescription[] = _("A strange scale\nheld by DRAGON-\ntype POKéMON."); +const u8 gLightBallItemDescription[] = _("A hold item that\nraises the SP. ATK\nof PIKACHU."); +const u8 gSoftSandItemDescription[] = _("A hold item that\nraises the power of\nGROUND-type moves."); +const u8 gHardStoneItemDescription[] = _("A hold item that\nraises the power of\nROCK-type moves."); +const u8 gMiracleSeedItemDescription[] = _("A hold item that\nraises the power of\nGRASS-type moves."); +const u8 gBlackGlassesItemDescription[] = _("A hold item that\nraises the power of\nDARK-type moves."); +const u8 gBlackBeltItemDescription[] = _("A hold item that\nboosts FIGHTING-\ntype moves."); +const u8 gMagnetItemDescription[] = _("A hold item that\nboosts ELECTRIC-\ntype moves."); +const u8 gMysticWaterItemDescription[] = _("A hold item that\nraises the power of\nWATER-type moves."); +const u8 gSharpBeakItemDescription[] = _("A hold item that\nraises the power of\nFLYING-type moves."); +const u8 gPoisonBarbItemDescription[] = _("A hold item that\nraises the power of\nPOISON-type moves."); +const u8 gNeverMeltIceItemDescription[] = _("A hold item that\nraises the power of\nICE-type moves."); +const u8 gSpellTagItemDescription[] = _("A hold item that\nraises the power of\nGHOST-type moves."); +const u8 gTwistedSpoonItemDescription[] = _("A hold item that\nboosts PSYCHIC-\ntype moves."); +const u8 gCharcoalItemDescription[] = _("A hold item that\nraises the power of\nFIRE-type moves."); +const u8 gDragonFangItemDescription[] = _("A hold item that\nraises the power of\nDRAGON-type moves."); +const u8 gSilkScarfItemDescription[] = _("A hold item that\nraises the power of\nNORMAL-type moves."); +const u8 gUpGradeItemDescription[] = _("A peculiar box made\nby SILPH CO."); +const u8 gShellBellItemDescription[] = _("A hold item that\nrestores HP upon\nstriking the foe."); +const u8 gSeaIncenseItemDescription[] = _("A hold item that\nslightly boosts\nWATER-type moves."); +const u8 gLaxIncenseItemDescription[] = _("A hold item that\nslightly lowers the\nfoe’s accuracy."); +const u8 gLuckyPunchItemDescription[] = _("A hold item that\nraises CHANSEY’s\ncritical-hit rate."); +const u8 gMetalPowderItemDescription[] = _("A hold item that\nraises DITTO’s\nDEFENSE."); +const u8 gThickClubItemDescription[] = _("A hold item that \nraises CUBONE or\nMAROWAK’s ATTACK."); +const u8 gStickItemDescription[] = _("A hold item that\nraises FARFETCH’D’s\ncritical-hit ratio."); +const u8 gRedScarfItemDescription[] = _("A hold item that\nraises COOL in\nCONTESTS."); +const u8 gBlueScarfItemDescription[] = _("A hold item that\nraises BEAUTY in\nCONTESTS."); +const u8 gPinkScarfItemDescription[] = _("A hold item that\nraises CUTE in\nCONTESTS."); +const u8 gGreenScarfItemDescription[] = _("A hold item that\nraises SMART in\nCONTESTS."); +const u8 gYellowScarfItemDescription[] = _("A hold item that\nraises TOUGH in\nCONTESTS."); +//Key items +const u8 gMachBikeItemDescription[] = _("A folding bicycle\nthat doubles your\nspeed or better."); +const u8 gCoinCaseItemDescription[] = _("A case that holds\nup to 9,999 COINS."); +const u8 gItemfinderItemDescription[] = _("A device that\nsignals an invisible\nitem by sound."); +const u8 gOldRodItemDescription[] = _("Use by any body of\nwater to fish for\nwild POKéMON."); +const u8 gGoodRodItemDescription[] = _("A decent fishing\nrod for catching\nwild POKéMON."); +const u8 gSuperRodItemDescription[] = _("The best fishing\nrod for catching\nwild POKéMON."); +const u8 gSSTicketItemDescription[] = _("The ticket required\nfor sailing on a\nferry."); +const u8 gContestPassItemDescription[] = _("The pass required\nfor entering\nPOKéMON CONTESTS."); +const u8 gWailmerPailItemDescription[] = _("A tool used for\nwatering BERRIES\nand plants."); +const u8 gDevonGoodsItemDescription[] = _("A package that\ncontains DEVON’s\nmachine parts."); +const u8 gSootSackItemDescription[] = _("A sack used to\ngather and hold\nvolcanic ash."); +const u8 gBasementKeyItemDescription[] = _("The key for NEW\nMAUVILLE beneath\nMAUVILLE CITY."); +const u8 gAcroBikeItemDescription[] = _("A folding bicycle\ncapable of jumps\nand wheelies."); +const u8 gPokeblockCaseItemDescription[] = _("A case for holding\n{POKEBLOCK}S made with\na BERRY BLENDER."); +const u8 gLetterItemDescription[] = _("A letter to STEVEN\nfrom the PRESIDENT\nof the DEVON CORP."); +const u8 gEonTicketItemDescription[] = _("The ticket for a\nferry to a distant\nsouthern island."); +const u8 gRedOrbItemDescription[] = _("A red, glowing orb\nsaid to contain an\nancient power."); +const u8 gBlueOrbItemDescription[] = _("A blue, glowing orb\nsaid to contain an\nancient power."); +const u8 gScannerItemDescription[] = _("A device found\ninside the\nABANDONED SHIP."); +const u8 gGoGogglesItemDescription[] = _("Nifty goggles that\nprotect eyes from\ndesert sandstorms."); +const u8 gMeteoriteItemDescription[] = _("A meteorite found\nat METEOR FALLS."); +const u8 gRoom1KeyItemDescription[] = _("A key that opens a\ndoor inside the\nABANDONED SHIP."); +const u8 gRoom2KeyItemDescription[] = _("A key that opens a\ndoor inside the\nABANDONED SHIP."); +const u8 gRoom4KeyItemDescription[] = _("A key that opens a\ndoor inside the\nABANDONED SHIP."); +const u8 gRoom6KeyItemDescription[] = _("A key that opens a\ndoor inside the\nABANDONED SHIP."); +const u8 gStorageKeyItemDescription[] = _("The key to the\nstorage inside the\nABANDONED SHIP."); +const u8 gRootFossilItemDescription[] = _("A fossil of an\nancient, seafloor-\ndwelling POKéMON."); +const u8 gClawFossilItemDescription[] = _("A fossil of an\nancient, seafloor-\ndwelling POKéMON."); +const u8 gDevonScopeItemDescription[] = _("A device by DEVON\nthat signals any\nunseeable POKéMON."); +//TMs/HMs +const u8 gTM01ItemDescription[] = _("Powerful, but makes\nthe user flinch if\nhit by the foe."); +const u8 gTM02ItemDescription[] = _("Hooks and slashes\nthe foe with long,\nsharp claws."); +const u8 gTM03ItemDescription[] = _("Generates an\nultrasonic wave\nthat may confuse."); +const u8 gTM04ItemDescription[] = _("Raises SP. ATK and\nSP. DEF by focusing\nthe mind."); +const u8 gTM05ItemDescription[] = _("A savage roar that\nmakes the foe flee \nto end the battle."); +const u8 gTM06ItemDescription[] = _("Poisons the foe\nwith a toxin that\ngradually worsens."); +const u8 gTM07ItemDescription[] = _("Creates a hailstorm\nthat damages all\ntypes except ICE."); +const u8 gTM08ItemDescription[] = _("Bulks up the body\nto boost both\nATTACK & DEFENSE."); +const u8 gTM09ItemDescription[] = _("Shoots 2 to 5 seeds\nin a row to strike\nthe foe."); +const u8 gTM10ItemDescription[] = _("The attack power\nvaries among\ndifferent POKéMON."); +const u8 gTM11ItemDescription[] = _("Raises the power of\nFIRE-type moves\nfor 5 turns."); +const u8 gTM12ItemDescription[] = _("Enrages the foe so\nit can only use\nattack moves."); +const u8 gTM13ItemDescription[] = _("Fires an icy cold\nbeam that may\nfreeze the foe."); +const u8 gTM14ItemDescription[] = _("A brutal snow-and-\nwind attack that\nmay freeze the foe."); +const u8 gTM15ItemDescription[] = _("Powerful, but needs\nrecharging the\nnext turn."); +const u8 gTM16ItemDescription[] = _("Creates a wall of\nlight that lowers\nSP. ATK damage."); +const u8 gTM17ItemDescription[] = _("Negates all damage,\nbut may fail if used\nin succession."); +const u8 gTM18ItemDescription[] = _("Raises the power of\nWATER-type moves\nfor 5 turns."); +const u8 gTM19ItemDescription[] = _("Recovers half the\nHP of the damage \nthis move inflicts."); +const u8 gTM20ItemDescription[] = _("Prevents status\nabnormality with a\nmystical power."); +const u8 gTM21ItemDescription[] = _("The less the user\nlikes you, the more\npowerful this move."); +const u8 gTM22ItemDescription[] = _("Absorbs sunlight in\nthe 1st turn, then\nattacks next turn."); +const u8 gTM23ItemDescription[] = _("Slams the foe with\na hard tail. It may\nlower DEFENSE."); +const u8 gTM24ItemDescription[] = _("A powerful electric\nattack that may\ncause paralysis."); +const u8 gTM25ItemDescription[] = _("Strikes the foe\nwith a thunderbolt.\nIt may paralyze."); +const u8 gTM26ItemDescription[] = _("Causes a quake\nthat has no effect\non flying foes."); +const u8 gTM27ItemDescription[] = _("The more the user\nlikes you, the more\npowerful this move."); +const u8 gTM28ItemDescription[] = _("Digs underground\nthe 1st turn, then\nstrikes next turn."); +const u8 gTM29ItemDescription[] = _("A powerful psychic\nattack that may\nlower SP. DEF."); +const u8 gTM30ItemDescription[] = _("Hurls a dark lump\nat the foe. It may\nlower SP. DEF."); +const u8 gTM31ItemDescription[] = _("Destroys barriers\nlike LIGHT SCREEN\nand causes damage."); +const u8 gTM32ItemDescription[] = _("Creates illusory\ncopies to enhance\nelusiveness."); +const u8 gTM33ItemDescription[] = _("Creates a wall of\nlight that weakens\nphysical attacks."); +const u8 gTM34ItemDescription[] = _("Zaps the foe with a\njolt of electricity\nthat never misses."); +const u8 gTM35ItemDescription[] = _("Looses a stream of\nfire that may burn\nthe foe."); +const u8 gTM36ItemDescription[] = _("Hurls sludge at the\nfoe. It may poison\nthe foe."); +const u8 gTM37ItemDescription[] = _("Causes a sandstorm\nthat hits the foe\nover several turns."); +const u8 gTM38ItemDescription[] = _("A powerful fire\nattack that may\nburn the foe."); +const u8 gTM39ItemDescription[] = _("Stops the foe from\nmoving with rocks.\nMay lower SPEED."); +const u8 gTM40ItemDescription[] = _("An extremely fast\nattack that can’t\nbe avoided."); +const u8 gTM41ItemDescription[] = _("Prevents the foe\nfrom using the same\nmove in a row."); +const u8 gTM42ItemDescription[] = _("Raises ATTACK when\npoisoned, burned,\nor paralyzed."); +const u8 gTM43ItemDescription[] = _("Adds an effect to\nattack depending\non the location."); +const u8 gTM44ItemDescription[] = _("The user sleeps for\n2 turns to restore\nhealth and status."); +const u8 gTM45ItemDescription[] = _("Makes it tough to\nattack a foe of the\nopposite gender."); +const u8 gTM46ItemDescription[] = _("While attacking,\nit may steal the\nfoe’s held item."); +const u8 gTM47ItemDescription[] = _("Spreads hard-\nedged wings and\nslams into the foe."); +const u8 gTM48ItemDescription[] = _("Switches abilities\nwith the foe on the\nturn this is used."); +const u8 gTM49ItemDescription[] = _("Steals the effects\nof the move the foe\nis trying to use."); +const u8 gTM50ItemDescription[] = _("Enables full-power\nattack, but sharply\nlowers SP. ATK."); + +const u8 gHM01ItemDescription[] = _("Attacks the foe\nwith sharp blades\nor claws."); +const u8 gHM02ItemDescription[] = _("Flies up on the\nfirst turn, then\nattacks next turn."); +const u8 gHM03ItemDescription[] = _("Creates a huge\nwave, then crashes\nit down on the foe."); +const u8 gHM04ItemDescription[] = _("Builds enormous\npower, then slams\nthe foe."); +const u8 gHM05ItemDescription[] = _("Looses a powerful\nblast of light that\nreduces accuracy."); +const u8 gHM06ItemDescription[] = _("A rock-crushingly\ntough attack that\nmay lower DEFENSE."); +const u8 gHM07ItemDescription[] = _("Attacks the foe\nwith enough power\nto climb waterfalls."); +const u8 gHM08ItemDescription[] = _("Dives underwater\nthe 1st turn, then\nattacks next turn."); +//FireRed/LeafGreen key items +const u8 gOaksParcelItemDescription[] = _("A parcel for PROF.\nOAK from a POKéMON\nMART’s clerk."); +const u8 gPokeFluteItemDescription[] = _("A sweet-sounding\nflute that awakens\nPOKéMON."); +const u8 gSecretKeyItemDescription[] = _("The key to the\nCINNABAR ISLAND\nGYM’s entrance."); +const u8 gBikeVoucherItemDescription[] = _("A voucher for\nobtaining a bicycle\nfrom the BIKE SHOP."); +const u8 gGoldTeethItemDescription[] = _("Gold dentures lost\nby the SAFARI\nZONE’s WARDEN."); +const u8 gOldAmberItemDescription[] = _("A stone containing\nthe genes of an\nancient POKéMON."); +const u8 gCardKeyItemDescription[] = _("A card-type door\nkey used in SILPH\nCO’s office."); +const u8 gLiftKeyItemDescription[] = _("An elevator key\nused in TEAM\nROCKET’s HIDEOUT."); +const u8 gHelixFossilItemDescription[] = _("A piece of an\nancient marine\nPOKéMON’s seashell."); +const u8 gDomeFossilItemDescription[] = _("A piece of an\nancient marine\nPOKéMON’s shell."); +const u8 gSilphScopeItemDescription[] = _("SILPH CO’s scope\nmakes unseeable\nPOKéMON visible."); +const u8 gBicycleItemDescription[] = _("A folding bicycle\nthat is faster than\nthe RUNNING SHOES."); +const u8 gTownMapItemDescription[] = _("Can be viewed\nanytime. Shows your\npresent location."); +const u8 gVSSeekerItemDescription[] = _("A rechargeable unit\nthat flags battle-\nready TRAINERS."); +const u8 gFameCheckerItemDescription[] = _("Stores information\non famous people\nfor instant recall."); +const u8 gTMCaseItemDescription[] = _("A convenient case \nthat holds TMs and\nHMs."); +const u8 gBerryPouchItemDescription[] = _("A convenient\ncontainer that\nholds BERRIES."); +const u8 gTeachyTVItemDescription[] = _("A TV set tuned to\nan advice program\nfor TRAINERS."); +const u8 gTriPassItemDescription[] = _("A pass for ferries\nbetween ONE, TWO,\nand THREE ISLAND."); +const u8 gRainbowPassItemDescription[] = _("For ferries serving\nVERMILION and the\nSEVII ISLANDS."); +const u8 gTeaItemDescription[] = _("A thirst-quenching\ntea prepared by an\nold lady."); +const u8 gMysticTicketItemDescription[] = _("A ticket required\nto board the ship\nto NAVEL ROCK."); +const u8 gAuroraTicketItemDescription[] = _("A ticket required\nto board the ship\nto BIRTH ISLAND."); +const u8 gPowderJarItemDescription[] = _("Stores BERRY\nPOWDER made using\na BERRY CRUSHER."); +const u8 gRubyItemDescription[] = _("An exquisite, red-\nglowing gem that\nsymbolizes passion."); +const u8 gSapphireItemDescription[] = _("A brilliant blue gem\nthat symbolizes\nhonesty."); +//Emerald-specific key items +const u8 gMagmaEmblemItemDescription[] = _("A medal-like item in\nthe same shape as\nTEAM MAGMA’s mark."); +const u8 gOldSeaMapItemDescription[] = _("A faded sea chart\nthat shows the way\nto a certain island."); +#endif // POKEEMERALD_DATA_TEXT_ITEM_DESCRIPTIONS_H diff --git a/src/data/text/move_descriptions.h b/src/data/text/move_descriptions.h new file mode 100644 index 000000000..f8830c593 --- /dev/null +++ b/src/data/text/move_descriptions.h @@ -0,0 +1,714 @@ +static const u8 sNullMoveDescription[] = _(""); +static const u8 sPoundMoveDescription[] = _("Pounds the foe with\nforelegs or tail."); +static const u8 sKarateChopMoveDescription[] = _("A chopping attack with a\nhigh critical-hit ratio."); +static const u8 sDoubleSlapMoveDescription[] = _("Repeatedly slaps the foe\n2 to 5 times."); +static const u8 sCometPunchMoveDescription[] = _("Repeatedly punches the foe\n2 to 5 times."); +static const u8 sMegaPunchMoveDescription[] = _("A strong punch thrown with\nincredible power."); +static const u8 sPayDayMoveDescription[] = _("Throws coins at the foe.\nMoney is recovered after."); +static const u8 sFirePunchMoveDescription[] = _("A fiery punch that may burn\nthe foe."); +static const u8 sIcePunchMoveDescription[] = _("An icy punch that may\nfreeze the foe."); +static const u8 sThunderPunchMoveDescription[] = _("An electrified punch that\nmay paralyze the foe."); +static const u8 sScratchMoveDescription[] = _("Scratches the foe with\nsharp claws."); +static const u8 sViceGripMoveDescription[] = _("Grips the foe with large and\npowerful pincers."); +static const u8 sGuillotineMoveDescription[] = _("A powerful pincer attack\nthat may cause fainting."); +static const u8 sRazorWindMoveDescription[] = _("A 2-turn move that strikes\nthe foe on the 2nd turn."); +static const u8 sSwordsDanceMoveDescription[] = _("A fighting dance that\nsharply raises ATTACK."); +static const u8 sCutMoveDescription[] = _("Cuts the foe with sharp\nscythes, claws, etc."); +static const u8 sGustMoveDescription[] = _("Strikes the foe with a gust\nof wind whipped up by wings."); +static const u8 sWingAttackMoveDescription[] = _("Strikes the foe with wings\nspread wide."); +static const u8 sWhirlwindMoveDescription[] = _("Blows away the foe with\nwind and ends the battle."); +static const u8 sFlyMoveDescription[] = _("Flies up on the first turn,\nthen strikes the next turn."); +static const u8 sBindMoveDescription[] = _("Binds and squeezes the foe\nfor 2 to 5 turns."); +static const u8 sSlamMoveDescription[] = _("Slams the foe with a long\ntail, vine, etc."); +static const u8 sVineWhipMoveDescription[] = _("Strikes the foe with\nslender, whiplike vines."); +static const u8 sStompMoveDescription[] = _("Stomps the enemy with a big\nfoot. May cause flinching."); +static const u8 sDoubleKickMoveDescription[] = _("A double-kicking attack\nthat strikes the foe twice."); +static const u8 sMegaKickMoveDescription[] = _("An extremely powerful kick\nwith intense force."); +static const u8 sJumpKickMoveDescription[] = _("A strong jumping kick. May\nmiss and hurt the kicker."); +static const u8 sRollingKickMoveDescription[] = _("A fast kick delivered from\na rapid spin."); +static const u8 sSandAttackMoveDescription[] = _("Reduces the foe’s accuracy\nby hurling sand in its face."); +static const u8 sHeadbuttMoveDescription[] = _("A ramming attack that may\ncause flinching."); +static const u8 sHornAttackMoveDescription[] = _("Jabs the foe with sharp\nhorns."); +static const u8 sFuryAttackMoveDescription[] = _("Jabs the foe 2 to 5 times\nwith sharp horns, etc."); +static const u8 sHornDrillMoveDescription[] = _("A one-hit KO attack that\nuses a horn like a drill."); +static const u8 sTackleMoveDescription[] = _("Charges the foe with a full-\nbody tackle."); +static const u8 sBodySlamMoveDescription[] = _("A full-body slam that may\ncause paralysis."); +static const u8 sWrapMoveDescription[] = _("Wraps and squeezes the foe\n2 to 5 times with vines, etc."); +static const u8 sTakeDownMoveDescription[] = _("A reckless charge attack\nthat also hurts the user."); +static const u8 sThrashMoveDescription[] = _("A rampage of 2 to 3 turns\nthat confuses the user."); +static const u8 sDoubleEdgeMoveDescription[] = _("A life-risking tackle that\nalso hurts the user."); +static const u8 sTailWhipMoveDescription[] = _("Wags the tail to lower the\nfoe’s DEFENSE."); +static const u8 sPoisonStingMoveDescription[] = _("A toxic attack with barbs,\netc., that may poison."); +static const u8 sTwineedleMoveDescription[] = _("Stingers on the forelegs\njab the foe twice."); +static const u8 sPinMissileMoveDescription[] = _("Sharp pins are fired to\nstrike 2 to 5 times."); +static const u8 sLeerMoveDescription[] = _("Frightens the foe with a\nleer to lower DEFENSE."); +static const u8 sBiteMoveDescription[] = _("Bites with vicious fangs.\nMay cause flinching."); +static const u8 sGrowlMoveDescription[] = _("Growls cutely to reduce the\nfoe’s ATTACK."); +static const u8 sRoarMoveDescription[] = _("Makes the foe flee to end\nthe battle."); +static const u8 sSingMoveDescription[] = _("A soothing song lulls the\nfoe into a deep slumber."); +static const u8 sSupersonicMoveDescription[] = _("Emits bizarre sound waves\nthat may confuse the foe."); +static const u8 sSonicBoomMoveDescription[] = _("Launches shock waves that\nalways inflict 20 HP damage."); +static const u8 sDisableMoveDescription[] = _("Psychically disables one of\nthe foe’s moves."); +static const u8 sAcidMoveDescription[] = _("Sprays a hide-melting acid.\nMay lower DEFENSE."); +static const u8 sEmberMoveDescription[] = _("A weak fire attack that may\ninflict a burn."); +static const u8 sFlamethrowerMoveDescription[] = _("A powerful fire attack that\nmay inflict a burn."); +static const u8 sMistMoveDescription[] = _("Creates a mist that stops\nreduction of abilities."); +static const u8 sWaterGunMoveDescription[] = _("Squirts water to attack\nthe foe."); +static const u8 sHydroPumpMoveDescription[] = _("Blasts water at high power\nto strike the foe."); +static const u8 sSurfMoveDescription[] = _("Creates a huge wave, then\ncrashes it down on the foe."); +static const u8 sIceBeamMoveDescription[] = _("Blasts the foe with an icy\nbeam that may freeze it."); +static const u8 sBlizzardMoveDescription[] = _("Hits the foe with an icy\nstorm that may freeze it."); +static const u8 sPsybeamMoveDescription[] = _("Fires a peculiar ray that\nmay confuse the foe."); +static const u8 sBubbleBeamMoveDescription[] = _("Forcefully sprays bubbles\nthat may lower SPEED."); +static const u8 sAuroraBeamMoveDescription[] = _("Fires a rainbow-colored\nbeam that may lower ATTACK."); +static const u8 sHyperBeamMoveDescription[] = _("Powerful, but leaves the\nuser immobile the next turn."); +static const u8 sPeckMoveDescription[] = _("Attacks the foe with a\njabbing beak, etc."); +static const u8 sDrillPeckMoveDescription[] = _("A corkscrewing attack with\nthe beak acting as a drill."); +static const u8 sSubmissionMoveDescription[] = _("A reckless body slam that\nalso hurts the user."); +static const u8 sLowKickMoveDescription[] = _("A kick that inflicts more\ndamage on heavier foes."); +static const u8 sCounterMoveDescription[] = _("Retaliates any physical hit\nwith double the power."); +static const u8 sSeismicTossMoveDescription[] = _("Inflicts damage identical\nto the user’s level."); +static const u8 sStrengthMoveDescription[] = _("Builds enormous power,\nthen slams the foe."); +static const u8 sAbsorbMoveDescription[] = _("An attack that absorbs\nhalf the damage inflicted."); +static const u8 sMegaDrainMoveDescription[] = _("An attack that absorbs\nhalf the damage inflicted."); +static const u8 sLeechSeedMoveDescription[] = _("Plants a seed on the foe to\nsteal HP on every turn."); +static const u8 sGrowthMoveDescription[] = _("Forces the body to grow\nand heightens SP. ATK."); +static const u8 sRazorLeafMoveDescription[] = _("Cuts the enemy with leaves.\nHigh critical-hit ratio."); +static const u8 sSolarBeamMoveDescription[] = _("Absorbs light in one turn,\nthen attacks next turn."); +static const u8 sPoisonPowderMoveDescription[] = _("Scatters a toxic powder\nthat may poison the foe."); +static const u8 sStunSporeMoveDescription[] = _("Scatters a powder that may\nparalyze the foe."); +static const u8 sSleepPowderMoveDescription[] = _("Scatters a powder that may\ncause the foe to sleep."); +static const u8 sPetalDanceMoveDescription[] = _("A rampage of 2 to 3 turns\nthat confuses the user."); +static const u8 sStringShotMoveDescription[] = _("Binds the foe with string\nto reduce its SPEED."); +static const u8 sDragonRageMoveDescription[] = _("Launches shock waves that\nalways inflict 40 HP damage."); +static const u8 sFireSpinMoveDescription[] = _("Traps the foe in a ring of\nfire for 2 to 5 turns."); +static const u8 sThunderShockMoveDescription[] = _("An electrical attack that\nmay paralyze the foe."); +static const u8 sThunderboltMoveDescription[] = _("A strong electrical attack\nthat may paralyze the foe."); +static const u8 sThunderWaveMoveDescription[] = _("A weak jolt of electricity\nthat paralyzes the foe."); +static const u8 sThunderMoveDescription[] = _("A lightning attack that may\ncause paralysis."); +static const u8 sRockThrowMoveDescription[] = _("Throws small rocks to\nstrike the foe."); +static const u8 sEarthquakeMoveDescription[] = _("A powerful quake, but has\nno effect on flying foes."); +static const u8 sFissureMoveDescription[] = _("A one-hit KO move that\ndrops the foe in a fissure."); +static const u8 sDigMoveDescription[] = _("Digs underground the first\nturn and strikes next turn."); +static const u8 sToxicMoveDescription[] = _("Poisons the foe with an\nintensifying toxin."); +static const u8 sConfusionMoveDescription[] = _("A psychic attack that may\ncause confusion."); +static const u8 sPsychicMoveDescription[] = _("A powerful psychic attack\nthat may lower SP. DEF."); +static const u8 sHypnosisMoveDescription[] = _("A hypnotizing move that\nmay induce sleep."); +static const u8 sMeditateMoveDescription[] = _("Meditates in a peaceful\nfashion to raise ATTACK."); +static const u8 sAgilityMoveDescription[] = _("Relaxes the body to sharply\nboost SPEED."); +static const u8 sQuickAttackMoveDescription[] = _("An extremely fast attack\nthat always strikes first."); +static const u8 sRageMoveDescription[] = _("Raises the user’s ATTACK\nevery time it is hit."); +static const u8 sTeleportMoveDescription[] = _("A psychic move for fleeing\nfrom battle instantly."); +static const u8 sNightShadeMoveDescription[] = _("Inflicts damage identical\nto the user’s level."); +static const u8 sMimicMoveDescription[] = _("Copies a move used by the\nfoe during one battle."); +static const u8 sScreechMoveDescription[] = _("Emits a screech to sharply\nreduce the foe’s DEFENSE."); +static const u8 sDoubleTeamMoveDescription[] = _("Creates illusory copies to\nraise evasiveness."); +static const u8 sRecoverMoveDescription[] = _("Recovers up to half the\nuser’s maximum HP."); +static const u8 sHardenMoveDescription[] = _("Stiffens the body’s \nmuscles to raise DEFENSE."); +static const u8 sMinimizeMoveDescription[] = _("Minimizes the user’s size\nto raise evasiveness."); +static const u8 sSmokescreenMoveDescription[] = _("Lowers the foe’s accuracy\nusing smoke, ink, etc."); +static const u8 sConfuseRayMoveDescription[] = _("A sinister ray that\nconfuses the foe."); +static const u8 sWithdrawMoveDescription[] = _("Withdraws the body into its\nhard shell to raise DEFENSE."); +static const u8 sDefenseCurlMoveDescription[] = _("Curls up to conceal weak\nspots and raise DEFENSE."); +static const u8 sBarrierMoveDescription[] = _("Creates a barrier that\nsharply raises DEFENSE."); +static const u8 sLightScreenMoveDescription[] = _("Creates a wall of light that\nlowers SP. ATK damage."); +static const u8 sHazeMoveDescription[] = _("Creates a black haze that\neliminates all stat changes."); +static const u8 sReflectMoveDescription[] = _("Creates a wall of light that\nweakens physical attacks."); +static const u8 sFocusEnergyMoveDescription[] = _("Focuses power to raise the\ncritical-hit ratio."); +static const u8 sBideMoveDescription[] = _("Endures attack for 2\nturns to retaliate double."); +static const u8 sMetronomeMoveDescription[] = _("Waggles a finger to use any\nPOKéMON move at random."); +static const u8 sMirrorMoveMoveDescription[] = _("Counters the foe’s attack\nwith the same move."); +static const u8 sSelfDestructMoveDescription[] = _("Inflicts severe damage but\nmakes the user faint."); +static const u8 sEggBombMoveDescription[] = _("An egg is forcibly hurled at\nthe foe."); +static const u8 sLickMoveDescription[] = _("Licks with a long tongue to\ninjure. May also paralyze."); +static const u8 sSmogMoveDescription[] = _("An exhaust-gas attack\nthat may also poison."); +static const u8 sSludgeMoveDescription[] = _("Sludge is hurled to inflict\ndamage. May also poison."); +static const u8 sBoneClubMoveDescription[] = _("Clubs the foe with a bone.\nMay cause flinching."); +static const u8 sFireBlastMoveDescription[] = _("Incinerates everything it\nstrikes. May cause a burn."); +static const u8 sWaterfallMoveDescription[] = _("Charges the foe with speed\nto climb waterfalls."); +static const u8 sClampMoveDescription[] = _("Traps and squeezes the\nfoe for 2 to 5 turns."); +static const u8 sSwiftMoveDescription[] = _("Sprays star-shaped rays\nthat never miss."); +static const u8 sSkullBashMoveDescription[] = _("Tucks in the head, then\nattacks on the next turn."); +static const u8 sSpikeCannonMoveDescription[] = _("Launches sharp spikes that\nstrike 2 to 5 times."); +static const u8 sConstrictMoveDescription[] = _("Constricts to inflict pain.\nMay lower SPEED."); +static const u8 sAmnesiaMoveDescription[] = _("Forgets about something\nand sharply raises SP. DEF."); +static const u8 sKinesisMoveDescription[] = _("Distracts the foe.\nMay lower accuracy."); +static const u8 sSoftBoiledMoveDescription[] = _("Recovers up to half the\nuser’s maximum HP."); +static const u8 sHiJumpKickMoveDescription[] = _("A jumping knee kick. If it\nmisses, the user is hurt."); +static const u8 sGlareMoveDescription[] = _("Intimidates and frightens\nthe foe into paralysis."); +static const u8 sDreamEaterMoveDescription[] = _("Takes one half the damage\ninflicted on a sleeping foe."); +static const u8 sPoisonGasMoveDescription[] = _("Envelops the foe in a toxic\ngas that may poison."); +static const u8 sBarrageMoveDescription[] = _("Hurls round objects at the\nfoe 2 to 5 times."); +static const u8 sLeechLifeMoveDescription[] = _("An attack that steals half\nthe damage inflicted."); +static const u8 sLovelyKissMoveDescription[] = _("Demands a kiss with a scary\nface that induces sleep."); +static const u8 sSkyAttackMoveDescription[] = _("Searches out weak spots,\nthen strikes the next turn."); +static const u8 sTransformMoveDescription[] = _("Alters the user’s cells to\nbecome a copy of the foe."); +static const u8 sBubbleMoveDescription[] = _("An attack using bubbles.\nMay lower the foe’s SPEED."); +static const u8 sDizzyPunchMoveDescription[] = _("A rhythmic punch that may\nconfuse the foe."); +static const u8 sSporeMoveDescription[] = _("Scatters a cloud of spores\nthat always induce sleep."); +static const u8 sFlashMoveDescription[] = _("Looses a powerful blast of\nlight that cuts accuracy."); +static const u8 sPsywaveMoveDescription[] = _("Attacks with a psychic\nwave of varying intensity."); +static const u8 sSplashMoveDescription[] = _("It’s just a splash...\nHas no effect whatsoever."); +static const u8 sAcidArmorMoveDescription[] = _("Liquifies the user’s body\nto sharply raise DEFENSE."); +static const u8 sCrabhammerMoveDescription[] = _("Hammers with a pincer. Has a\nhigh critical-hit ratio."); +static const u8 sExplosionMoveDescription[] = _("Inflicts severe damage but\nmakes the user faint."); +static const u8 sFurySwipesMoveDescription[] = _("Rakes the foe with sharp\nclaws, etc., 2 to 5 times."); +static const u8 sBonemerangMoveDescription[] = _("Throws a bone boomerang\nthat strikes twice."); +static const u8 sRestMoveDescription[] = _("The user sleeps for 2 turns,\nrestoring HP and status."); +static const u8 sRockSlideMoveDescription[] = _("Large boulders are hurled.\nMay cause flinching."); +static const u8 sHyperFangMoveDescription[] = _("Attacks with sharp fangs.\nMay cause flinching."); +static const u8 sSharpenMoveDescription[] = _("Reduces the polygon count\nand raises ATTACK."); +static const u8 sConversionMoveDescription[] = _("Changes the user’s type\ninto a known move’s type."); +static const u8 sTriAttackMoveDescription[] = _("Fires three types of beams\nat the same time."); +static const u8 sSuperFangMoveDescription[] = _("Attacks with sharp fangs\nand cuts half the foe’s HP."); +static const u8 sSlashMoveDescription[] = _("Slashes with claws, etc. Has\na high critical-hit ratio."); +static const u8 sSubstituteMoveDescription[] = _("Creates a decoy using 1/4\nof the user’s maximum HP."); +static const u8 sStruggleMoveDescription[] = _("Used only if all PP are gone.\nAlso hurts the user a little."); +static const u8 sSketchMoveDescription[] = _("Copies the foe’s last move\npermanently."); +static const u8 sTripleKickMoveDescription[] = _("Kicks the foe 3 times in a\nrow with rising intensity."); +static const u8 sThiefMoveDescription[] = _("While attacking, it may\nsteal the foe’s held item."); +static const u8 sSpiderWebMoveDescription[] = _("Ensnares the foe to stop it\nfrom fleeing or switching."); +static const u8 sMindReaderMoveDescription[] = _("Senses the foe’s action to\nensure the next move’s hit."); +static const u8 sNightmareMoveDescription[] = _("Inflicts 1/4 damage on a\nsleeping foe every turn."); +static const u8 sFlameWheelMoveDescription[] = _("A fiery charge attack that\nmay inflict a burn."); +static const u8 sSnoreMoveDescription[] = _("A loud attack that can be\nused only while asleep."); +static const u8 sCurseMoveDescription[] = _("A move that functions\ndifferently for GHOSTS."); +static const u8 sFlailMoveDescription[] = _("Inflicts more damage when\nthe user’s HP is down."); +static const u8 sConversion2MoveDescription[] = _("Makes the user resistant\nto the last attack’s type."); +static const u8 sAeroblastMoveDescription[] = _("Launches a vacuumed blast.\nHigh critical-hit ratio."); +static const u8 sCottonSporeMoveDescription[] = _("Spores cling to the foe,\nsharply reducing SPEED."); +static const u8 sReversalMoveDescription[] = _("Inflicts more damage when\nthe user’s HP is down."); +static const u8 sSpiteMoveDescription[] = _("Spitefully cuts the PP\nof the foe’s last move."); +static const u8 sPowderSnowMoveDescription[] = _("Blasts the foe with a snowy\ngust. May cause freezing."); +static const u8 sProtectMoveDescription[] = _("Evades attack, but may fail\nif used in succession."); +static const u8 sMachPunchMoveDescription[] = _("A punch is thrown at wicked\nspeed to strike first."); +static const u8 sScaryFaceMoveDescription[] = _("Frightens with a scary face\nto sharply reduce SPEED."); +static const u8 sFaintAttackMoveDescription[] = _("Draws the foe close, then\nstrikes without fail."); +static const u8 sSweetKissMoveDescription[] = _("Demands a kiss with a cute\nlook. May cause confusion."); +static const u8 sBellyDrumMoveDescription[] = _("Maximizes ATTACK while\nsacrificing HP."); +static const u8 sSludgeBombMoveDescription[] = _("Sludge is hurled to inflict\ndamage. May also poison."); +static const u8 sMudSlapMoveDescription[] = _("Hurls mud in the foe’s face\nto reduce its accuracy."); +static const u8 sOctazookaMoveDescription[] = _("Fires a lump of ink to\ndamage and cut accuracy."); +static const u8 sSpikesMoveDescription[] = _("Sets spikes that hurt a \nfoe switching in."); +static const u8 sZapCannonMoveDescription[] = _("Powerful and sure to cause\nparalysis, but inaccurate."); +static const u8 sForesightMoveDescription[] = _("Negates the foe’s efforts\nto heighten evasiveness."); +static const u8 sDestinyBondMoveDescription[] = _("If the user faints, the foe\nis also made to faint."); +static const u8 sPerishSongMoveDescription[] = _("Any POKéMON hearing this\nsong faints in 3 turns."); +static const u8 sIcyWindMoveDescription[] = _("A chilling attack that\nlowers the foe’s SPEED."); +static const u8 sDetectMoveDescription[] = _("Evades attack, but may fail\nif used in succession."); +static const u8 sBoneRushMoveDescription[] = _("Strikes the foe with a bone\nin hand 2 to 5 times."); +static const u8 sLockOnMoveDescription[] = _("Locks on to the foe to\nensure the next move hits."); +static const u8 sOutrageMoveDescription[] = _("A rampage of 2 to 3 turns\nthat confuses the user."); +static const u8 sSandstormMoveDescription[] = _("Causes a sandstorm that\nrages for several turns."); +static const u8 sGigaDrainMoveDescription[] = _("An attack that steals half\nthe damage inflicted."); +static const u8 sEndureMoveDescription[] = _("Endures any attack for\n1 turn, leaving at least 1HP."); +static const u8 sCharmMoveDescription[] = _("Charms the foe and sharply\nreduces its ATTACK."); +static const u8 sRolloutMoveDescription[] = _("An attack lasting 5 turns\nwith rising intensity."); +static const u8 sFalseSwipeMoveDescription[] = _("An attack that leaves the\nfoe with at least 1 HP."); +static const u8 sSwaggerMoveDescription[] = _("Confuses the foe, but also\nsharply raises ATTACK."); +static const u8 sMilkDrinkMoveDescription[] = _("Recovers up to half the\nuser’s maximum HP."); +static const u8 sSparkMoveDescription[] = _("An electrified tackle that\nmay paralyze the foe."); +static const u8 sFuryCutterMoveDescription[] = _("An attack that intensifies\non each successive hit."); +static const u8 sSteelWingMoveDescription[] = _("Strikes the foe with hard\nwings spread wide."); +static const u8 sMeanLookMoveDescription[] = _("Fixes the foe with a mean\nlook that prevents escape."); +static const u8 sAttractMoveDescription[] = _("Makes the opposite gender\nless likely to attack."); +static const u8 sSleepTalkMoveDescription[] = _("Uses an available move\nrandomly while asleep."); +static const u8 sHealBellMoveDescription[] = _("Chimes soothingly to heal\nall status abnormalities."); +static const u8 sReturnMoveDescription[] = _("An attack that increases\nin power with friendship."); +static const u8 sPresentMoveDescription[] = _("A gift in the form of a\nbomb. May restore HP."); +static const u8 sFrustrationMoveDescription[] = _("An attack that is stronger\nif the TRAINER is disliked."); +static const u8 sSafeguardMoveDescription[] = _("A mystical force prevents\nall status problems."); +static const u8 sPainSplitMoveDescription[] = _("Adds the user and foe’s HP,\nthen shares them equally."); +static const u8 sSacredFireMoveDescription[] = _("A mystical fire attack that\nmay inflict a burn."); +static const u8 sMagnitudeMoveDescription[] = _("A ground-shaking attack\nof random intensity."); +static const u8 sDynamicPunchMoveDescription[] = _("Powerful and sure to cause\nconfusion, but inaccurate."); +static const u8 sMegahornMoveDescription[] = _("A brutal ramming attack\nusing out-thrust horns."); +static const u8 sDragonBreathMoveDescription[] = _("Strikes the foe with an\nincredible blast of breath."); +static const u8 sBatonPassMoveDescription[] = _("Switches out the user while\nkeeping effects in play."); +static const u8 sEncoreMoveDescription[] = _("Makes the foe repeat its\nlast move over 2 to 6 turns."); +static const u8 sPursuitMoveDescription[] = _("Inflicts bad damage if used\non a foe switching out."); +static const u8 sRapidSpinMoveDescription[] = _("Spins the body at high\nspeed to strike the foe."); +static const u8 sSweetScentMoveDescription[] = _("Allures the foe to reduce\nevasiveness."); +static const u8 sIronTailMoveDescription[] = _("Attacks with a rock-hard\ntail. May lower DEFENSE."); +static const u8 sMetalClawMoveDescription[] = _("A claw attack that may\nraise the user’s ATTACK."); +static const u8 sVitalThrowMoveDescription[] = _("Makes the user’s move last,\nbut it never misses."); +static const u8 sMorningSunMoveDescription[] = _("Restores HP. The amount\nvaries with the weather."); +static const u8 sSynthesisMoveDescription[] = _("Restores HP. The amount\nvaries with the weather."); +static const u8 sMoonlightMoveDescription[] = _("Restores HP. The amount\nvaries with the weather."); +static const u8 sHiddenPowerMoveDescription[] = _("The effectiveness varies\nwith the user."); +static const u8 sCrossChopMoveDescription[] = _("A double-chopping attack.\nHigh critical-hit ratio."); +static const u8 sTwisterMoveDescription[] = _("Whips up a vicious twister\nto tear at the foe."); +static const u8 sRainDanceMoveDescription[] = _("Boosts the power of WATER-\ntype moves for 5 turns."); +static const u8 sSunnyDayMoveDescription[] = _("Boosts the power of FIRE-\ntype moves for 5 turns."); +static const u8 sCrunchMoveDescription[] = _("Crunches with sharp fangs.\nMay lower SP. DEF."); +static const u8 sMirrorCoatMoveDescription[] = _("Counters the foe’s special\nattack at double the power."); +static const u8 sPsychUpMoveDescription[] = _("Copies the foe’s effect(s)\nand gives to the user."); +static const u8 sExtremeSpeedMoveDescription[] = _("An extremely fast and\npowerful attack."); +static const u8 sAncientPowerMoveDescription[] = _("An attack that may raise\nall stats."); +static const u8 sShadowBallMoveDescription[] = _("Hurls a black blob that may\nlower the foe’s SP. DEF."); +static const u8 sFutureSightMoveDescription[] = _("Heightens inner power to\nstrike 2 turns later."); +static const u8 sRockSmashMoveDescription[] = _("A rock-crushing attack\nthat may lower DEFENSE."); +static const u8 sWhirlpoolMoveDescription[] = _("Traps and hurts the foe in\na whirlpool for 2 to 5 turns."); +static const u8 sBeatUpMoveDescription[] = _("Summons party POKéMON to\njoin in the attack."); +static const u8 sFakeOutMoveDescription[] = _("A 1st-turn, 1st-strike move\nthat causes flinching."); +static const u8 sUproarMoveDescription[] = _("Causes an uproar for 2 to 5\nturns and prevents sleep."); +static const u8 sStockpileMoveDescription[] = _("Charges up power for up to\n3 turns."); +static const u8 sSpitUpMoveDescription[] = _("Releases stockpiled power\n(the more the better)."); +static const u8 sSwallowMoveDescription[] = _("Absorbs stockpiled power\nand restores HP."); +static const u8 sHeatWaveMoveDescription[] = _("Exhales a hot breath on the\nfoe. May inflict a burn."); +static const u8 sHailMoveDescription[] = _("Summons a hailstorm that\nstrikes every turn."); +static const u8 sTormentMoveDescription[] = _("Torments the foe and stops\nsuccessive use of a move."); +static const u8 sFlatterMoveDescription[] = _("Confuses the foe, but\nraises its SP. ATK."); +static const u8 sWillOWispMoveDescription[] = _("Inflicts a burn on the foe\nwith intense fire."); +static const u8 sMementoMoveDescription[] = _("The user faints and lowers\nthe foe’s abilities."); +static const u8 sFacadeMoveDescription[] = _("Boosts ATTACK when burned,\nparalyzed, or poisoned."); +static const u8 sFocusPunchMoveDescription[] = _("A powerful loyalty attack.\nThe user flinches if hit."); +static const u8 sSmellingSaltMoveDescription[] = _("Powerful against paralyzed\nfoes, but also heals them."); +static const u8 sFollowMeMoveDescription[] = _("Draws attention to make\nfoes attack only the user."); +static const u8 sNaturePowerMoveDescription[] = _("The type of attack varies\ndepending on the location."); +static const u8 sChargeMoveDescription[] = _("Charges power to boost the\nelectric move used next."); +static const u8 sTauntMoveDescription[] = _("Taunts the foe into only\nusing attack moves."); +static const u8 sHelpingHandMoveDescription[] = _("Boosts the power of the\nrecipient’s moves."); +static const u8 sTrickMoveDescription[] = _("Tricks the foe into trading\nheld items."); +static const u8 sRolePlayMoveDescription[] = _("Mimics the target and\ncopies its special ability."); +static const u8 sWishMoveDescription[] = _("A wish that restores HP.\nIt takes time to work."); +static const u8 sAssistMoveDescription[] = _("Attacks randomly with one\nof the partner’s moves."); +static const u8 sIngrainMoveDescription[] = _("Lays roots that restore HP.\nThe user can’t switch out."); +static const u8 sSuperpowerMoveDescription[] = _("Boosts strength sharply,\nbut lowers abilities."); +static const u8 sMagicCoatMoveDescription[] = _("Reflects special effects\nback to the attacker."); +static const u8 sRecycleMoveDescription[] = _("Recycles a used item for\none more use."); +static const u8 sRevengeMoveDescription[] = _("An attack that gains power\nif injured by the foe."); +static const u8 sBrickBreakMoveDescription[] = _("Destroys barriers such as\nREFLECT and causes damage."); +static const u8 sYawnMoveDescription[] = _("Lulls the foe into yawning,\nthen sleeping next turn."); +static const u8 sKnockOffMoveDescription[] = _("Knocks down the foe’s held\nitem to prevent its use."); +static const u8 sEndeavorMoveDescription[] = _("Gains power if the user’s HP\nis lower than the foe’s HP."); +static const u8 sEruptionMoveDescription[] = _("The higher the user’s HP,\nthe more damage caused."); +static const u8 sSkillSwapMoveDescription[] = _("The user swaps special\nabilities with the target."); +static const u8 sImprisonMoveDescription[] = _("Prevents foes from using\nmoves known by the user."); +static const u8 sRefreshMoveDescription[] = _("Heals poisoning, paralysis,\nor a burn."); +static const u8 sGrudgeMoveDescription[] = _("If the user faints, deletes\nall PP of foe’s last move."); +static const u8 sSnatchMoveDescription[] = _("Steals the effects of the\nmove the target uses next."); +static const u8 sSecretPowerMoveDescription[] = _("An attack with effects\nthat vary by location."); +static const u8 sDiveMoveDescription[] = _("Dives underwater the first\nturn and strikes next turn."); +static const u8 sArmThrustMoveDescription[] = _("Straight-arm punches that\nstrike the foe 2 to 5 times."); +static const u8 sCamouflageMoveDescription[] = _("Alters the POKéMON’s type\ndepending on the location."); +static const u8 sTailGlowMoveDescription[] = _("Flashes a light that sharply\nraises SP. ATK."); +static const u8 sLusterPurgeMoveDescription[] = _("Attacks with a burst of\nlight. May lower SP. DEF."); +static const u8 sMistBallMoveDescription[] = _("Attacks with a flurry of\ndown. May lower SP. ATK."); +static const u8 sFeatherDanceMoveDescription[] = _("Envelops the foe with down\nto sharply reduce ATTACK."); +static const u8 sTeeterDanceMoveDescription[] = _("Confuses all POKéMON on\nthe scene."); +static const u8 sBlazeKickMoveDescription[] = _("A kick with a high critical-\nhit ratio. May cause a burn."); +static const u8 sMudSportMoveDescription[] = _("Covers the user in mud to\nraise electrical resistance."); +static const u8 sIceBallMoveDescription[] = _("A 5-turn attack that gains\npower on successive hits."); +static const u8 sNeedleArmMoveDescription[] = _("Attacks with thorny arms.\nMay cause flinching."); +static const u8 sSlackOffMoveDescription[] = _("Slacks off and restores\nhalf the maximum HP."); +static const u8 sHyperVoiceMoveDescription[] = _("A loud attack that uses\nsound waves to injure."); +static const u8 sPoisonFangMoveDescription[] = _("A sharp-fanged attack.\nMay badly poison the foe."); +static const u8 sCrushClawMoveDescription[] = _("Tears at the foe with sharp\nclaws. May lower DEFENSE."); +static const u8 sBlastBurnMoveDescription[] = _("Powerful, but leaves the\nuser immobile the next turn."); +static const u8 sHydroCannonMoveDescription[] = _("Powerful, but leaves the\nuser immobile the next turn."); +static const u8 sMeteorMashMoveDescription[] = _("Fires a meteor-like punch.\nMay raise ATTACK."); +static const u8 sAstonishMoveDescription[] = _("An attack that may shock\nthe foe into flinching."); +static const u8 sWeatherBallMoveDescription[] = _("The move’s type and power\nchange with the weather."); +static const u8 sAromatherapyMoveDescription[] = _("Heals all status problems\nwith a soothing scent."); +static const u8 sFakeTearsMoveDescription[] = _("Feigns crying to sharply\nlower the foe’s SP. DEF."); +static const u8 sAirCutterMoveDescription[] = _("Hacks with razorlike wind.\nHigh critical-hit ratio."); +static const u8 sOverheatMoveDescription[] = _("Allows a full-power attack,\nbut sharply lowers SP. ATK."); +static const u8 sOdorSleuthMoveDescription[] = _("Negates the foe’s efforts\nto heighten evasiveness."); +static const u8 sRockTombMoveDescription[] = _("Stops the foe from moving\nwith rocks and cuts SPEED."); +static const u8 sSilverWindMoveDescription[] = _("A powdery attack that may\nraise abilities."); +static const u8 sMetalSoundMoveDescription[] = _("Emits a horrible screech\nthat sharply lowers SP. DEF."); +static const u8 sGrassWhistleMoveDescription[] = _("Lulls the foe into sleep\nwith a pleasant melody."); +static const u8 sTickleMoveDescription[] = _("Makes the foe laugh to\nlower ATTACK and DEFENSE."); +static const u8 sCosmicPowerMoveDescription[] = _("Raises DEFENSE and SP. DEF\nwith a mystic power."); +static const u8 sWaterSpoutMoveDescription[] = _("Inflicts more damage if the\nuser’s HP is high."); +static const u8 sSignalBeamMoveDescription[] = _("A strange beam attack that\nmay confuse the foe."); +static const u8 sShadowPunchMoveDescription[] = _("An unavoidable punch that\nis thrown from shadows."); +static const u8 sExtrasensoryMoveDescription[] = _("Attacks with a peculiar\npower. May cause flinching."); +static const u8 sSkyUppercutMoveDescription[] = _("An uppercut thrown as if\nleaping into the sky."); +static const u8 sSandTombMoveDescription[] = _("Traps and hurts the foe in\nquicksand for 2 to 5 turns."); +static const u8 sSheerColdMoveDescription[] = _("A chilling attack that\ncauses fainting if it hits."); +static const u8 sMuddyWaterMoveDescription[] = _("Attacks with muddy water.\nMay lower accuracy."); +static const u8 sBulletSeedMoveDescription[] = _("Shoots 2 to 5 seeds in a row\nto strike the foe."); +static const u8 sAerialAceMoveDescription[] = _("An extremely speedy and\nunavoidable attack."); +static const u8 sIcicleSpearMoveDescription[] = _("Attacks the foe by firing\n2 to 5 icicles in a row."); +static const u8 sIronDefenseMoveDescription[] = _("Hardens the body’s surface\nto sharply raise DEFENSE."); +static const u8 sBlockMoveDescription[] = _("Blocks the foe’s way to\nprevent escape."); +static const u8 sHowlMoveDescription[] = _("Howls to raise the spirit\nand boosts ATTACK."); +static const u8 sDragonClawMoveDescription[] = _("Slashes the foe with sharp\nclaws."); +static const u8 sFrenzyPlantMoveDescription[] = _("Powerful, but leaves the\nuser immobile the next turn."); +static const u8 sBulkUpMoveDescription[] = _("Bulks up the body to boost\nboth ATTACK and DEFENSE."); +static const u8 sBounceMoveDescription[] = _("Bounces up, then down the\nnext turn. May paralyze."); +static const u8 sMudShotMoveDescription[] = _("Hurls mud at the foe and\nreduces SPEED."); +static const u8 sPoisonTailMoveDescription[] = _("Has a high critical-hit\nratio. May also poison."); +static const u8 sCovetMoveDescription[] = _("Cutely begs to obtain an\nitem held by the foe."); +static const u8 sVoltTackleMoveDescription[] = _("A life-risking tackle that\nslightly hurts the user."); +static const u8 sMagicalLeafMoveDescription[] = _("Attacks with a strange leaf\nthat cannot be evaded."); +static const u8 sWaterSportMoveDescription[] = _("The user becomes soaked to\nraise resistance to fire."); +static const u8 sCalmMindMoveDescription[] = _("Raises SP. ATK and SP. DEF\nby focusing the mind."); +static const u8 sLeafBladeMoveDescription[] = _("Slashes with a sharp leaf.\nHigh critical-hit ratio."); +static const u8 sDragonDanceMoveDescription[] = _("A mystical dance that ups\nATTACK and SPEED."); +static const u8 sRockBlastMoveDescription[] = _("Hurls boulders at the foe\n2 to 5 times in a row."); +static const u8 sShockWaveMoveDescription[] = _("A fast and unavoidable\nelectric attack."); +static const u8 sWaterPulseMoveDescription[] = _("Attacks with ultrasonic\nwaves. May confuse the foe."); +static const u8 sDoomDesireMoveDescription[] = _("Summons strong sunlight to\nattack 2 turns later."); +static const u8 sPsychoBoostMoveDescription[] = _("Allows a full-power attack,\nbut sharply lowers SP. ATK."); + +// MOVE_NONE is ignored in this table. Make sure to always subtract 1 before getting the right pointer. +const u8 *const gMoveDescriptionPointers[MOVES_COUNT - 1] = +{ + [MOVE_POUND - 1] = sPoundMoveDescription, + [MOVE_KARATE_CHOP - 1] = sKarateChopMoveDescription, + [MOVE_DOUBLE_SLAP - 1] = sDoubleSlapMoveDescription, + [MOVE_COMET_PUNCH - 1] = sCometPunchMoveDescription, + [MOVE_MEGA_PUNCH - 1] = sMegaPunchMoveDescription, + [MOVE_PAY_DAY - 1] = sPayDayMoveDescription, + [MOVE_FIRE_PUNCH - 1] = sFirePunchMoveDescription, + [MOVE_ICE_PUNCH - 1] = sIcePunchMoveDescription, + [MOVE_THUNDER_PUNCH - 1] = sThunderPunchMoveDescription, + [MOVE_SCRATCH - 1] = sScratchMoveDescription, + [MOVE_VICE_GRIP - 1] = sViceGripMoveDescription, + [MOVE_GUILLOTINE - 1] = sGuillotineMoveDescription, + [MOVE_RAZOR_WIND - 1] = sRazorWindMoveDescription, + [MOVE_SWORDS_DANCE - 1] = sSwordsDanceMoveDescription, + [MOVE_CUT - 1] = sCutMoveDescription, + [MOVE_GUST - 1] = sGustMoveDescription, + [MOVE_WING_ATTACK - 1] = sWingAttackMoveDescription, + [MOVE_WHIRLWIND - 1] = sWhirlwindMoveDescription, + [MOVE_FLY - 1] = sFlyMoveDescription, + [MOVE_BIND - 1] = sBindMoveDescription, + [MOVE_SLAM - 1] = sSlamMoveDescription, + [MOVE_VINE_WHIP - 1] = sVineWhipMoveDescription, + [MOVE_STOMP - 1] = sStompMoveDescription, + [MOVE_DOUBLE_KICK - 1] = sDoubleKickMoveDescription, + [MOVE_MEGA_KICK - 1] = sMegaKickMoveDescription, + [MOVE_JUMP_KICK - 1] = sJumpKickMoveDescription, + [MOVE_ROLLING_KICK - 1] = sRollingKickMoveDescription, + [MOVE_SAND_ATTACK - 1] = sSandAttackMoveDescription, + [MOVE_HEADBUTT - 1] = sHeadbuttMoveDescription, + [MOVE_HORN_ATTACK - 1] = sHornAttackMoveDescription, + [MOVE_FURY_ATTACK - 1] = sFuryAttackMoveDescription, + [MOVE_HORN_DRILL - 1] = sHornDrillMoveDescription, + [MOVE_TACKLE - 1] = sTackleMoveDescription, + [MOVE_BODY_SLAM - 1] = sBodySlamMoveDescription, + [MOVE_WRAP - 1] = sWrapMoveDescription, + [MOVE_TAKE_DOWN - 1] = sTakeDownMoveDescription, + [MOVE_THRASH - 1] = sThrashMoveDescription, + [MOVE_DOUBLE_EDGE - 1] = sDoubleEdgeMoveDescription, + [MOVE_TAIL_WHIP - 1] = sTailWhipMoveDescription, + [MOVE_POISON_STING - 1] = sPoisonStingMoveDescription, + [MOVE_TWINEEDLE - 1] = sTwineedleMoveDescription, + [MOVE_PIN_MISSILE - 1] = sPinMissileMoveDescription, + [MOVE_LEER - 1] = sLeerMoveDescription, + [MOVE_BITE - 1] = sBiteMoveDescription, + [MOVE_GROWL - 1] = sGrowlMoveDescription, + [MOVE_ROAR - 1] = sRoarMoveDescription, + [MOVE_SING - 1] = sSingMoveDescription, + [MOVE_SUPERSONIC - 1] = sSupersonicMoveDescription, + [MOVE_SONIC_BOOM - 1] = sSonicBoomMoveDescription, + [MOVE_DISABLE - 1] = sDisableMoveDescription, + [MOVE_ACID - 1] = sAcidMoveDescription, + [MOVE_EMBER - 1] = sEmberMoveDescription, + [MOVE_FLAMETHROWER - 1] = sFlamethrowerMoveDescription, + [MOVE_MIST - 1] = sMistMoveDescription, + [MOVE_WATER_GUN - 1] = sWaterGunMoveDescription, + [MOVE_HYDRO_PUMP - 1] = sHydroPumpMoveDescription, + [MOVE_SURF - 1] = sSurfMoveDescription, + [MOVE_ICE_BEAM - 1] = sIceBeamMoveDescription, + [MOVE_BLIZZARD - 1] = sBlizzardMoveDescription, + [MOVE_PSYBEAM - 1] = sPsybeamMoveDescription, + [MOVE_BUBBLE_BEAM - 1] = sBubbleBeamMoveDescription, + [MOVE_AURORA_BEAM - 1] = sAuroraBeamMoveDescription, + [MOVE_HYPER_BEAM - 1] = sHyperBeamMoveDescription, + [MOVE_PECK - 1] = sPeckMoveDescription, + [MOVE_DRILL_PECK - 1] = sDrillPeckMoveDescription, + [MOVE_SUBMISSION - 1] = sSubmissionMoveDescription, + [MOVE_LOW_KICK - 1] = sLowKickMoveDescription, + [MOVE_COUNTER - 1] = sCounterMoveDescription, + [MOVE_SEISMIC_TOSS - 1] = sSeismicTossMoveDescription, + [MOVE_STRENGTH - 1] = sStrengthMoveDescription, + [MOVE_ABSORB - 1] = sAbsorbMoveDescription, + [MOVE_MEGA_DRAIN - 1] = sMegaDrainMoveDescription, + [MOVE_LEECH_SEED - 1] = sLeechSeedMoveDescription, + [MOVE_GROWTH - 1] = sGrowthMoveDescription, + [MOVE_RAZOR_LEAF - 1] = sRazorLeafMoveDescription, + [MOVE_SOLAR_BEAM - 1] = sSolarBeamMoveDescription, + [MOVE_POISON_POWDER - 1] = sPoisonPowderMoveDescription, + [MOVE_STUN_SPORE - 1] = sStunSporeMoveDescription, + [MOVE_SLEEP_POWDER - 1] = sSleepPowderMoveDescription, + [MOVE_PETAL_DANCE - 1] = sPetalDanceMoveDescription, + [MOVE_STRING_SHOT - 1] = sStringShotMoveDescription, + [MOVE_DRAGON_RAGE - 1] = sDragonRageMoveDescription, + [MOVE_FIRE_SPIN - 1] = sFireSpinMoveDescription, + [MOVE_THUNDER_SHOCK - 1] = sThunderShockMoveDescription, + [MOVE_THUNDERBOLT - 1] = sThunderboltMoveDescription, + [MOVE_THUNDER_WAVE - 1] = sThunderWaveMoveDescription, + [MOVE_THUNDER - 1] = sThunderMoveDescription, + [MOVE_ROCK_THROW - 1] = sRockThrowMoveDescription, + [MOVE_EARTHQUAKE - 1] = sEarthquakeMoveDescription, + [MOVE_FISSURE - 1] = sFissureMoveDescription, + [MOVE_DIG - 1] = sDigMoveDescription, + [MOVE_TOXIC - 1] = sToxicMoveDescription, + [MOVE_CONFUSION - 1] = sConfusionMoveDescription, + [MOVE_PSYCHIC - 1] = sPsychicMoveDescription, + [MOVE_HYPNOSIS - 1] = sHypnosisMoveDescription, + [MOVE_MEDITATE - 1] = sMeditateMoveDescription, + [MOVE_AGILITY - 1] = sAgilityMoveDescription, + [MOVE_QUICK_ATTACK - 1] = sQuickAttackMoveDescription, + [MOVE_RAGE - 1] = sRageMoveDescription, + [MOVE_TELEPORT - 1] = sTeleportMoveDescription, + [MOVE_NIGHT_SHADE - 1] = sNightShadeMoveDescription, + [MOVE_MIMIC - 1] = sMimicMoveDescription, + [MOVE_SCREECH - 1] = sScreechMoveDescription, + [MOVE_DOUBLE_TEAM - 1] = sDoubleTeamMoveDescription, + [MOVE_RECOVER - 1] = sRecoverMoveDescription, + [MOVE_HARDEN - 1] = sHardenMoveDescription, + [MOVE_MINIMIZE - 1] = sMinimizeMoveDescription, + [MOVE_SMOKESCREEN - 1] = sSmokescreenMoveDescription, + [MOVE_CONFUSE_RAY - 1] = sConfuseRayMoveDescription, + [MOVE_WITHDRAW - 1] = sWithdrawMoveDescription, + [MOVE_DEFENSE_CURL - 1] = sDefenseCurlMoveDescription, + [MOVE_BARRIER - 1] = sBarrierMoveDescription, + [MOVE_LIGHT_SCREEN - 1] = sLightScreenMoveDescription, + [MOVE_HAZE - 1] = sHazeMoveDescription, + [MOVE_REFLECT - 1] = sReflectMoveDescription, + [MOVE_FOCUS_ENERGY - 1] = sFocusEnergyMoveDescription, + [MOVE_BIDE - 1] = sBideMoveDescription, + [MOVE_METRONOME - 1] = sMetronomeMoveDescription, + [MOVE_MIRROR_MOVE - 1] = sMirrorMoveMoveDescription, + [MOVE_SELF_DESTRUCT - 1] = sSelfDestructMoveDescription, + [MOVE_EGG_BOMB - 1] = sEggBombMoveDescription, + [MOVE_LICK - 1] = sLickMoveDescription, + [MOVE_SMOG - 1] = sSmogMoveDescription, + [MOVE_SLUDGE - 1] = sSludgeMoveDescription, + [MOVE_BONE_CLUB - 1] = sBoneClubMoveDescription, + [MOVE_FIRE_BLAST - 1] = sFireBlastMoveDescription, + [MOVE_WATERFALL - 1] = sWaterfallMoveDescription, + [MOVE_CLAMP - 1] = sClampMoveDescription, + [MOVE_SWIFT - 1] = sSwiftMoveDescription, + [MOVE_SKULL_BASH - 1] = sSkullBashMoveDescription, + [MOVE_SPIKE_CANNON - 1] = sSpikeCannonMoveDescription, + [MOVE_CONSTRICT - 1] = sConstrictMoveDescription, + [MOVE_AMNESIA - 1] = sAmnesiaMoveDescription, + [MOVE_KINESIS - 1] = sKinesisMoveDescription, + [MOVE_SOFT_BOILED - 1] = sSoftBoiledMoveDescription, + [MOVE_HI_JUMP_KICK - 1] = sHiJumpKickMoveDescription, + [MOVE_GLARE - 1] = sGlareMoveDescription, + [MOVE_DREAM_EATER - 1] = sDreamEaterMoveDescription, + [MOVE_POISON_GAS - 1] = sPoisonGasMoveDescription, + [MOVE_BARRAGE - 1] = sBarrageMoveDescription, + [MOVE_LEECH_LIFE - 1] = sLeechLifeMoveDescription, + [MOVE_LOVELY_KISS - 1] = sLovelyKissMoveDescription, + [MOVE_SKY_ATTACK - 1] = sSkyAttackMoveDescription, + [MOVE_TRANSFORM - 1] = sTransformMoveDescription, + [MOVE_BUBBLE - 1] = sBubbleMoveDescription, + [MOVE_DIZZY_PUNCH - 1] = sDizzyPunchMoveDescription, + [MOVE_SPORE - 1] = sSporeMoveDescription, + [MOVE_FLASH - 1] = sFlashMoveDescription, + [MOVE_PSYWAVE - 1] = sPsywaveMoveDescription, + [MOVE_SPLASH - 1] = sSplashMoveDescription, + [MOVE_ACID_ARMOR - 1] = sAcidArmorMoveDescription, + [MOVE_CRABHAMMER - 1] = sCrabhammerMoveDescription, + [MOVE_EXPLOSION - 1] = sExplosionMoveDescription, + [MOVE_FURY_SWIPES - 1] = sFurySwipesMoveDescription, + [MOVE_BONEMERANG - 1] = sBonemerangMoveDescription, + [MOVE_REST - 1] = sRestMoveDescription, + [MOVE_ROCK_SLIDE - 1] = sRockSlideMoveDescription, + [MOVE_HYPER_FANG - 1] = sHyperFangMoveDescription, + [MOVE_SHARPEN - 1] = sSharpenMoveDescription, + [MOVE_CONVERSION - 1] = sConversionMoveDescription, + [MOVE_TRI_ATTACK - 1] = sTriAttackMoveDescription, + [MOVE_SUPER_FANG - 1] = sSuperFangMoveDescription, + [MOVE_SLASH - 1] = sSlashMoveDescription, + [MOVE_SUBSTITUTE - 1] = sSubstituteMoveDescription, + [MOVE_STRUGGLE - 1] = sStruggleMoveDescription, + [MOVE_SKETCH - 1] = sSketchMoveDescription, + [MOVE_TRIPLE_KICK - 1] = sTripleKickMoveDescription, + [MOVE_THIEF - 1] = sThiefMoveDescription, + [MOVE_SPIDER_WEB - 1] = sSpiderWebMoveDescription, + [MOVE_MIND_READER - 1] = sMindReaderMoveDescription, + [MOVE_NIGHTMARE - 1] = sNightmareMoveDescription, + [MOVE_FLAME_WHEEL - 1] = sFlameWheelMoveDescription, + [MOVE_SNORE - 1] = sSnoreMoveDescription, + [MOVE_CURSE - 1] = sCurseMoveDescription, + [MOVE_FLAIL - 1] = sFlailMoveDescription, + [MOVE_CONVERSION_2 - 1] = sConversion2MoveDescription, + [MOVE_AEROBLAST - 1] = sAeroblastMoveDescription, + [MOVE_COTTON_SPORE - 1] = sCottonSporeMoveDescription, + [MOVE_REVERSAL - 1] = sReversalMoveDescription, + [MOVE_SPITE - 1] = sSpiteMoveDescription, + [MOVE_POWDER_SNOW - 1] = sPowderSnowMoveDescription, + [MOVE_PROTECT - 1] = sProtectMoveDescription, + [MOVE_MACH_PUNCH - 1] = sMachPunchMoveDescription, + [MOVE_SCARY_FACE - 1] = sScaryFaceMoveDescription, + [MOVE_FAINT_ATTACK - 1] = sFaintAttackMoveDescription, + [MOVE_SWEET_KISS - 1] = sSweetKissMoveDescription, + [MOVE_BELLY_DRUM - 1] = sBellyDrumMoveDescription, + [MOVE_SLUDGE_BOMB - 1] = sSludgeBombMoveDescription, + [MOVE_MUD_SLAP - 1] = sMudSlapMoveDescription, + [MOVE_OCTAZOOKA - 1] = sOctazookaMoveDescription, + [MOVE_SPIKES - 1] = sSpikesMoveDescription, + [MOVE_ZAP_CANNON - 1] = sZapCannonMoveDescription, + [MOVE_FORESIGHT - 1] = sForesightMoveDescription, + [MOVE_DESTINY_BOND - 1] = sDestinyBondMoveDescription, + [MOVE_PERISH_SONG - 1] = sPerishSongMoveDescription, + [MOVE_ICY_WIND - 1] = sIcyWindMoveDescription, + [MOVE_DETECT - 1] = sDetectMoveDescription, + [MOVE_BONE_RUSH - 1] = sBoneRushMoveDescription, + [MOVE_LOCK_ON - 1] = sLockOnMoveDescription, + [MOVE_OUTRAGE - 1] = sOutrageMoveDescription, + [MOVE_SANDSTORM - 1] = sSandstormMoveDescription, + [MOVE_GIGA_DRAIN - 1] = sGigaDrainMoveDescription, + [MOVE_ENDURE - 1] = sEndureMoveDescription, + [MOVE_CHARM - 1] = sCharmMoveDescription, + [MOVE_ROLLOUT - 1] = sRolloutMoveDescription, + [MOVE_FALSE_SWIPE - 1] = sFalseSwipeMoveDescription, + [MOVE_SWAGGER - 1] = sSwaggerMoveDescription, + [MOVE_MILK_DRINK - 1] = sMilkDrinkMoveDescription, + [MOVE_SPARK - 1] = sSparkMoveDescription, + [MOVE_FURY_CUTTER - 1] = sFuryCutterMoveDescription, + [MOVE_STEEL_WING - 1] = sSteelWingMoveDescription, + [MOVE_MEAN_LOOK - 1] = sMeanLookMoveDescription, + [MOVE_ATTRACT - 1] = sAttractMoveDescription, + [MOVE_SLEEP_TALK - 1] = sSleepTalkMoveDescription, + [MOVE_HEAL_BELL - 1] = sHealBellMoveDescription, + [MOVE_RETURN - 1] = sReturnMoveDescription, + [MOVE_PRESENT - 1] = sPresentMoveDescription, + [MOVE_FRUSTRATION - 1] = sFrustrationMoveDescription, + [MOVE_SAFEGUARD - 1] = sSafeguardMoveDescription, + [MOVE_PAIN_SPLIT - 1] = sPainSplitMoveDescription, + [MOVE_SACRED_FIRE - 1] = sSacredFireMoveDescription, + [MOVE_MAGNITUDE - 1] = sMagnitudeMoveDescription, + [MOVE_DYNAMIC_PUNCH - 1] = sDynamicPunchMoveDescription, + [MOVE_MEGAHORN - 1] = sMegahornMoveDescription, + [MOVE_DRAGON_BREATH - 1] = sDragonBreathMoveDescription, + [MOVE_BATON_PASS - 1] = sBatonPassMoveDescription, + [MOVE_ENCORE - 1] = sEncoreMoveDescription, + [MOVE_PURSUIT - 1] = sPursuitMoveDescription, + [MOVE_RAPID_SPIN - 1] = sRapidSpinMoveDescription, + [MOVE_SWEET_SCENT - 1] = sSweetScentMoveDescription, + [MOVE_IRON_TAIL - 1] = sIronTailMoveDescription, + [MOVE_METAL_CLAW - 1] = sMetalClawMoveDescription, + [MOVE_VITAL_THROW - 1] = sVitalThrowMoveDescription, + [MOVE_MORNING_SUN - 1] = sMorningSunMoveDescription, + [MOVE_SYNTHESIS - 1] = sSynthesisMoveDescription, + [MOVE_MOONLIGHT - 1] = sMoonlightMoveDescription, + [MOVE_HIDDEN_POWER - 1] = sHiddenPowerMoveDescription, + [MOVE_CROSS_CHOP - 1] = sCrossChopMoveDescription, + [MOVE_TWISTER - 1] = sTwisterMoveDescription, + [MOVE_RAIN_DANCE - 1] = sRainDanceMoveDescription, + [MOVE_SUNNY_DAY - 1] = sSunnyDayMoveDescription, + [MOVE_CRUNCH - 1] = sCrunchMoveDescription, + [MOVE_MIRROR_COAT - 1] = sMirrorCoatMoveDescription, + [MOVE_PSYCH_UP - 1] = sPsychUpMoveDescription, + [MOVE_EXTREME_SPEED - 1] = sExtremeSpeedMoveDescription, + [MOVE_ANCIENT_POWER - 1] = sAncientPowerMoveDescription, + [MOVE_SHADOW_BALL - 1] = sShadowBallMoveDescription, + [MOVE_FUTURE_SIGHT - 1] = sFutureSightMoveDescription, + [MOVE_ROCK_SMASH - 1] = sRockSmashMoveDescription, + [MOVE_WHIRLPOOL - 1] = sWhirlpoolMoveDescription, + [MOVE_BEAT_UP - 1] = sBeatUpMoveDescription, + [MOVE_FAKE_OUT - 1] = sFakeOutMoveDescription, + [MOVE_UPROAR - 1] = sUproarMoveDescription, + [MOVE_STOCKPILE - 1] = sStockpileMoveDescription, + [MOVE_SPIT_UP - 1] = sSpitUpMoveDescription, + [MOVE_SWALLOW - 1] = sSwallowMoveDescription, + [MOVE_HEAT_WAVE - 1] = sHeatWaveMoveDescription, + [MOVE_HAIL - 1] = sHailMoveDescription, + [MOVE_TORMENT - 1] = sTormentMoveDescription, + [MOVE_FLATTER - 1] = sFlatterMoveDescription, + [MOVE_WILL_O_WISP - 1] = sWillOWispMoveDescription, + [MOVE_MEMENTO - 1] = sMementoMoveDescription, + [MOVE_FACADE - 1] = sFacadeMoveDescription, + [MOVE_FOCUS_PUNCH - 1] = sFocusPunchMoveDescription, + [MOVE_SMELLING_SALT - 1] = sSmellingSaltMoveDescription, + [MOVE_FOLLOW_ME - 1] = sFollowMeMoveDescription, + [MOVE_NATURE_POWER - 1] = sNaturePowerMoveDescription, + [MOVE_CHARGE - 1] = sChargeMoveDescription, + [MOVE_TAUNT - 1] = sTauntMoveDescription, + [MOVE_HELPING_HAND - 1] = sHelpingHandMoveDescription, + [MOVE_TRICK - 1] = sTrickMoveDescription, + [MOVE_ROLE_PLAY - 1] = sRolePlayMoveDescription, + [MOVE_WISH - 1] = sWishMoveDescription, + [MOVE_ASSIST - 1] = sAssistMoveDescription, + [MOVE_INGRAIN - 1] = sIngrainMoveDescription, + [MOVE_SUPERPOWER - 1] = sSuperpowerMoveDescription, + [MOVE_MAGIC_COAT - 1] = sMagicCoatMoveDescription, + [MOVE_RECYCLE - 1] = sRecycleMoveDescription, + [MOVE_REVENGE - 1] = sRevengeMoveDescription, + [MOVE_BRICK_BREAK - 1] = sBrickBreakMoveDescription, + [MOVE_YAWN - 1] = sYawnMoveDescription, + [MOVE_KNOCK_OFF - 1] = sKnockOffMoveDescription, + [MOVE_ENDEAVOR - 1] = sEndeavorMoveDescription, + [MOVE_ERUPTION - 1] = sEruptionMoveDescription, + [MOVE_SKILL_SWAP - 1] = sSkillSwapMoveDescription, + [MOVE_IMPRISON - 1] = sImprisonMoveDescription, + [MOVE_REFRESH - 1] = sRefreshMoveDescription, + [MOVE_GRUDGE - 1] = sGrudgeMoveDescription, + [MOVE_SNATCH - 1] = sSnatchMoveDescription, + [MOVE_SECRET_POWER - 1] = sSecretPowerMoveDescription, + [MOVE_DIVE - 1] = sDiveMoveDescription, + [MOVE_ARM_THRUST - 1] = sArmThrustMoveDescription, + [MOVE_CAMOUFLAGE - 1] = sCamouflageMoveDescription, + [MOVE_TAIL_GLOW - 1] = sTailGlowMoveDescription, + [MOVE_LUSTER_PURGE - 1] = sLusterPurgeMoveDescription, + [MOVE_MIST_BALL - 1] = sMistBallMoveDescription, + [MOVE_FEATHER_DANCE - 1] = sFeatherDanceMoveDescription, + [MOVE_TEETER_DANCE - 1] = sTeeterDanceMoveDescription, + [MOVE_BLAZE_KICK - 1] = sBlazeKickMoveDescription, + [MOVE_MUD_SPORT - 1] = sMudSportMoveDescription, + [MOVE_ICE_BALL - 1] = sIceBallMoveDescription, + [MOVE_NEEDLE_ARM - 1] = sNeedleArmMoveDescription, + [MOVE_SLACK_OFF - 1] = sSlackOffMoveDescription, + [MOVE_HYPER_VOICE - 1] = sHyperVoiceMoveDescription, + [MOVE_POISON_FANG - 1] = sPoisonFangMoveDescription, + [MOVE_CRUSH_CLAW - 1] = sCrushClawMoveDescription, + [MOVE_BLAST_BURN - 1] = sBlastBurnMoveDescription, + [MOVE_HYDRO_CANNON - 1] = sHydroCannonMoveDescription, + [MOVE_METEOR_MASH - 1] = sMeteorMashMoveDescription, + [MOVE_ASTONISH - 1] = sAstonishMoveDescription, + [MOVE_WEATHER_BALL - 1] = sWeatherBallMoveDescription, + [MOVE_AROMATHERAPY - 1] = sAromatherapyMoveDescription, + [MOVE_FAKE_TEARS - 1] = sFakeTearsMoveDescription, + [MOVE_AIR_CUTTER - 1] = sAirCutterMoveDescription, + [MOVE_OVERHEAT - 1] = sOverheatMoveDescription, + [MOVE_ODOR_SLEUTH - 1] = sOdorSleuthMoveDescription, + [MOVE_ROCK_TOMB - 1] = sRockTombMoveDescription, + [MOVE_SILVER_WIND - 1] = sSilverWindMoveDescription, + [MOVE_METAL_SOUND - 1] = sMetalSoundMoveDescription, + [MOVE_GRASS_WHISTLE - 1] = sGrassWhistleMoveDescription, + [MOVE_TICKLE - 1] = sTickleMoveDescription, + [MOVE_COSMIC_POWER - 1] = sCosmicPowerMoveDescription, + [MOVE_WATER_SPOUT - 1] = sWaterSpoutMoveDescription, + [MOVE_SIGNAL_BEAM - 1] = sSignalBeamMoveDescription, + [MOVE_SHADOW_PUNCH - 1] = sShadowPunchMoveDescription, + [MOVE_EXTRASENSORY - 1] = sExtrasensoryMoveDescription, + [MOVE_SKY_UPPERCUT - 1] = sSkyUppercutMoveDescription, + [MOVE_SAND_TOMB - 1] = sSandTombMoveDescription, + [MOVE_SHEER_COLD - 1] = sSheerColdMoveDescription, + [MOVE_MUDDY_WATER - 1] = sMuddyWaterMoveDescription, + [MOVE_BULLET_SEED - 1] = sBulletSeedMoveDescription, + [MOVE_AERIAL_ACE - 1] = sAerialAceMoveDescription, + [MOVE_ICICLE_SPEAR - 1] = sIcicleSpearMoveDescription, + [MOVE_IRON_DEFENSE - 1] = sIronDefenseMoveDescription, + [MOVE_BLOCK - 1] = sBlockMoveDescription, + [MOVE_HOWL - 1] = sHowlMoveDescription, + [MOVE_DRAGON_CLAW - 1] = sDragonClawMoveDescription, + [MOVE_FRENZY_PLANT - 1] = sFrenzyPlantMoveDescription, + [MOVE_BULK_UP - 1] = sBulkUpMoveDescription, + [MOVE_BOUNCE - 1] = sBounceMoveDescription, + [MOVE_MUD_SHOT - 1] = sMudShotMoveDescription, + [MOVE_POISON_TAIL - 1] = sPoisonTailMoveDescription, + [MOVE_COVET - 1] = sCovetMoveDescription, + [MOVE_VOLT_TACKLE - 1] = sVoltTackleMoveDescription, + [MOVE_MAGICAL_LEAF - 1] = sMagicalLeafMoveDescription, + [MOVE_WATER_SPORT - 1] = sWaterSportMoveDescription, + [MOVE_CALM_MIND - 1] = sCalmMindMoveDescription, + [MOVE_LEAF_BLADE - 1] = sLeafBladeMoveDescription, + [MOVE_DRAGON_DANCE - 1] = sDragonDanceMoveDescription, + [MOVE_ROCK_BLAST - 1] = sRockBlastMoveDescription, + [MOVE_SHOCK_WAVE - 1] = sShockWaveMoveDescription, + [MOVE_WATER_PULSE - 1] = sWaterPulseMoveDescription, + [MOVE_DOOM_DESIRE - 1] = sDoomDesireMoveDescription, + [MOVE_PSYCHO_BOOST - 1] = sPsychoBoostMoveDescription, +}; diff --git a/src/data/text/move_names.h b/src/data/text/move_names.h index 3df7c886b..9f540f1d6 100644 --- a/src/data/text/move_names.h +++ b/src/data/text/move_names.h @@ -1,4 +1,5 @@ -const u8 gMoveNames[][13] = { +const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = +{ [MOVE_NONE] = _("-"), [MOVE_POUND] = _("POUND"), [MOVE_KARATE_CHOP] = _("KARATE CHOP"), diff --git a/src/data/text/nature_names.h b/src/data/text/nature_names.h new file mode 100644 index 000000000..d0d217d9b --- /dev/null +++ b/src/data/text/nature_names.h @@ -0,0 +1,54 @@ +static const u8 sHardyNatureName[] = _("HARDY"); +static const u8 sLonelyNatureName[] = _("LONELY"); +static const u8 sBraveNatureName[] = _("BRAVE"); +static const u8 sAdamantNatureName[] = _("ADAMANT"); +static const u8 sNaughtyNatureName[] = _("NAUGHTY"); +static const u8 sBoldNatureName[] = _("BOLD"); +static const u8 sDocileNatureName[] = _("DOCILE"); +static const u8 sRelaxedNatureName[] = _("RELAXED"); +static const u8 sImpishNatureName[] = _("IMPISH"); +static const u8 sLaxNatureName[] = _("LAX"); +static const u8 sTimidNatureName[] = _("TIMID"); +static const u8 sHastyNatureName[] = _("HASTY"); +static const u8 sSeriousNatureName[] = _("SERIOUS"); +static const u8 sJollyNatureName[] = _("JOLLY"); +static const u8 sNaiveNatureName[] = _("NAIVE"); +static const u8 sModestNatureName[] = _("MODEST"); +static const u8 sMildNatureName[] = _("MILD"); +static const u8 sQuietNatureName[] = _("QUIET"); +static const u8 sBashfulNatureName[] = _("BASHFUL"); +static const u8 sRashNatureName[] = _("RASH"); +static const u8 sCalmNatureName[] = _("CALM"); +static const u8 sGentleNatureName[] = _("GENTLE"); +static const u8 sSassyNatureName[] = _("SASSY"); +static const u8 sCarefulNatureName[] = _("CAREFUL"); +static const u8 sQuirkyNatureName[] = _("QUIRKY"); + +const u8 *const gNatureNamePointers[] = +{ + [NATURE_HARDY] = sHardyNatureName, + [NATURE_LONELY] = sLonelyNatureName, + [NATURE_BRAVE] = sBraveNatureName, + [NATURE_ADAMANT] = sAdamantNatureName, + [NATURE_NAUGHTY] = sNaughtyNatureName, + [NATURE_BOLD] = sBoldNatureName, + [NATURE_DOCILE] = sDocileNatureName, + [NATURE_RELAXED] = sRelaxedNatureName, + [NATURE_IMPISH] = sImpishNatureName, + [NATURE_LAX] = sLaxNatureName, + [NATURE_TIMID] = sTimidNatureName, + [NATURE_HASTY] = sHastyNatureName, + [NATURE_SERIOUS] = sSeriousNatureName, + [NATURE_JOLLY] = sJollyNatureName, + [NATURE_NAIVE] = sNaiveNatureName, + [NATURE_MODEST] = sModestNatureName, + [NATURE_MILD] = sMildNatureName, + [NATURE_QUIET] = sQuietNatureName, + [NATURE_BASHFUL] = sBashfulNatureName, + [NATURE_RASH] = sRashNatureName, + [NATURE_CALM] = sCalmNatureName, + [NATURE_GENTLE] = sGentleNatureName, + [NATURE_SASSY] = sSassyNatureName, + [NATURE_CAREFUL] = sCarefulNatureName, + [NATURE_QUIRKY] = sQuirkyNatureName, +}; diff --git a/src/data/trainer_graphics/back_pic_anims.h b/src/data/trainer_graphics/back_pic_anims.h new file mode 100644 index 000000000..e2419b6f6 --- /dev/null +++ b/src/data/trainer_graphics/back_pic_anims.h @@ -0,0 +1,129 @@ +const union AnimCmd gUnknown_08305C24[] = +{ + ANIMCMD_FRAME(0, 24), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(2, 24), + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(3, 50), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08305C3C[] = +{ + ANIMCMD_FRAME(0, 24), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(2, 24), + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(3, 50), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08305C54[] = +{ + ANIMCMD_FRAME(0, 24), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(2, 24), + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(3, 50), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08305C6C[] = +{ + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(2, 6), + ANIMCMD_FRAME(3, 6), + ANIMCMD_FRAME(4, 24), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08305C84[] = +{ + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(2, 6), + ANIMCMD_FRAME(3, 6), + ANIMCMD_FRAME(4, 24), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08305C9C[] = +{ + ANIMCMD_FRAME(0, 24), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(2, 24), + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(3, 50), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08305CB4[] = +{ + ANIMCMD_FRAME(0, 24), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(2, 24), + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(3, 50), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08305CCC[] = +{ + AnimCmd_82FF540, + gUnknown_08305C24, +}; + +const union AnimCmd *const gUnknown_08305CD4[] = +{ + AnimCmd_82FF540, + gUnknown_08305C3C, +}; + +const union AnimCmd *const gUnknown_08305CDC[] = +{ + gAnimCmd_General_Frame0, + gUnknown_08305C6C, +}; + +const union AnimCmd *const gUnknown_08305CE4[] = +{ + gAnimCmd_General_Frame0, + gUnknown_08305C84, +}; + +const union AnimCmd *const gUnknown_08305CEC[] = +{ + AnimCmd_82FF540, + gUnknown_08305C9C, +}; + +const union AnimCmd *const gUnknown_08305CF4[] = +{ + AnimCmd_82FF540, + gUnknown_08305CB4, +}; + +const union AnimCmd *const gUnknown_08305CFC[] = +{ + AnimCmd_82FF540, + gUnknown_08305C54, +}; + +const union AnimCmd *const gUnknown_08305D04[] = +{ + AnimCmd_82FF540, + gUnknown_08305C3C, +}; + +const union AnimCmd *const *const gUnknown_08305D0C[] = +{ + gUnknown_08305CCC, + gUnknown_08305CD4, + gUnknown_08305CDC, + gUnknown_08305CE4, + gUnknown_08305CEC, + gUnknown_08305CF4, + gUnknown_08305CFC, + gUnknown_08305D04, +}; diff --git a/src/data/trainer_graphics/back_pic_tables.h b/src/data/trainer_graphics/back_pic_tables.h new file mode 100644 index 000000000..3e74902d8 --- /dev/null +++ b/src/data/trainer_graphics/back_pic_tables.h @@ -0,0 +1,35 @@ +const struct MonCoords gTrainerBackPicCoords[] = +{ + {8, 4}, + {8, 4}, + {8, 5}, + {8, 5}, + {8, 4}, + {8, 4}, + {8, 4}, + {8, 4}, +}; + +const struct CompressedSpriteSheet gTrainerBackPicTable[] = +{ + gTrainerBackPic_Brendan, 0x2000, 0, + gTrainerBackPic_May, 0x2000, 1, + gTrainerBackPic_Red, 0x2800, 2, + gTrainerBackPic_Leaf, 0x2800, 3, + gTrainerBackPic_RubySapphireBrendan, 0x2000, 4, + gTrainerBackPic_RubySapphireMay, 0x2000, 5, + gTrainerBackPic_Wally, 0x2000, 6, + gTrainerBackPic_Steven, 0x2000, 7, +}; + +const struct CompressedSpritePalette gTrainerBackPicPaletteTable[] = +{ + gTrainerPalette_Brendan, 0, + gTrainerPalette_May, 1, + gTrainerBackPicPalette_Red, 2, + gTrainerBackPicPalette_Leaf, 3, + gTrainerPalette_RubySapphireBrendan, 4, + gTrainerPalette_RubySapphireMay, 5, + gTrainerPalette_Wally, 6, + gTrainerPalette_Steven, 7, +}; diff --git a/src/data/trainer_graphics/front_pic_anims.h b/src/data/trainer_graphics/front_pic_anims.h new file mode 100644 index 000000000..423ce33b9 --- /dev/null +++ b/src/data/trainer_graphics/front_pic_anims.h @@ -0,0 +1,190 @@ +const union AnimCmd *const gUnknown_083051F8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083051FC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305200[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305204[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305208[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830520C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305210[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305214[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305218[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830521C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305220[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305224[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305228[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830522C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305230[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305234[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305238[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830523C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305240[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305244[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305248[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830524C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305250[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305254[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305258[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830525C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305260[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305264[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305268[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830526C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305270[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305274[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305278[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830527C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305280[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305284[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305288[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830528C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305290[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305294[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305298[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830529C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083052A0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083052A4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083052A8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083052AC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083052B0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083052B4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083052B8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083052BC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083052C0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083052C4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083052C8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083052CC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083052D0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083052D4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083052D8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083052DC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083052E0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083052E4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083052E8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083052EC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083052F0[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083052F4[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083052F8[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_083052FC[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305300[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305304[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305308[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830530C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305310[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305314[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305318[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830531C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305320[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305324[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305328[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830532C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305330[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305334[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305338[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830533C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305340[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305344[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305348[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830534C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305350[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305354[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305358[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_0830535C[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305360[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305364[] = {gAnimCmd_General_Frame0}; +const union AnimCmd *const gUnknown_08305368[] = {gAnimCmd_General_Frame0}; + +const union AnimCmd *const *const gUnknown_0830536C[] = +{ + gUnknown_083051F8, + gUnknown_083051FC, + gUnknown_08305200, + gUnknown_08305204, + gUnknown_08305208, + gUnknown_0830520C, + gUnknown_08305210, + gUnknown_08305214, + gUnknown_08305218, + gUnknown_0830521C, + gUnknown_08305220, + gUnknown_08305224, + gUnknown_08305228, + gUnknown_0830522C, + gUnknown_08305230, + gUnknown_08305234, + gUnknown_08305238, + gUnknown_0830523C, + gUnknown_08305240, + gUnknown_08305244, + gUnknown_08305248, + gUnknown_0830524C, + gUnknown_08305250, + gUnknown_08305254, + gUnknown_08305258, + gUnknown_0830525C, + gUnknown_08305260, + gUnknown_08305264, + gUnknown_08305268, + gUnknown_0830526C, + gUnknown_08305270, + gUnknown_08305274, + gUnknown_08305278, + gUnknown_0830527C, + gUnknown_08305280, + gUnknown_08305284, + gUnknown_08305288, + gUnknown_0830528C, + gUnknown_08305290, + gUnknown_08305294, + gUnknown_08305298, + gUnknown_0830529C, + gUnknown_083052A0, + gUnknown_083052A4, + gUnknown_083052A8, + gUnknown_083052AC, + gUnknown_083052B0, + gUnknown_083052B4, + gUnknown_083052B8, + gUnknown_083052BC, + gUnknown_083052C0, + gUnknown_083052C4, + gUnknown_083052C8, + gUnknown_083052CC, + gUnknown_083052D0, + gUnknown_083052D4, + gUnknown_083052D8, + gUnknown_083052DC, + gUnknown_083052E0, + gUnknown_083052E4, + gUnknown_083052E8, + gUnknown_083052EC, + gUnknown_083052F0, + gUnknown_083052F4, + gUnknown_083052F8, + gUnknown_083052FC, + gUnknown_08305300, + gUnknown_08305304, + gUnknown_08305308, + gUnknown_0830530C, + gUnknown_08305310, + gUnknown_08305314, + gUnknown_08305318, + gUnknown_0830531C, + gUnknown_08305320, + gUnknown_08305324, + gUnknown_08305328, + gUnknown_0830532C, + gUnknown_08305330, + gUnknown_08305334, + gUnknown_08305338, + gUnknown_0830533C, + gUnknown_08305340, + gUnknown_08305344, + gUnknown_08305348, + gUnknown_0830534C, + gUnknown_08305350, + gUnknown_08305354, + gUnknown_08305358, + gUnknown_0830535C, + gUnknown_08305360, + gUnknown_08305364, + gUnknown_08305368, +}; diff --git a/src/data/trainer_graphics/front_pic_tables.h b/src/data/trainer_graphics/front_pic_tables.h new file mode 100644 index 000000000..db80c9d4f --- /dev/null +++ b/src/data/trainer_graphics/front_pic_tables.h @@ -0,0 +1,290 @@ +const struct MonCoords gTrainerFrontPicCoords[] = +{ + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 2}, + {8, 2}, + {8, 1}, + {8, 1}, + {8, 2}, + {8, 1}, + {8, 2}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 2}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 2}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, + {8, 1}, +}; + +const struct CompressedSpriteSheet gTrainerFrontPicTable[] = +{ + gTrainerFrontPic_Hiker, 0x800, 0, + gTrainerFrontPic_AquaGruntM, 0x800, 1, + gTrainerFrontPic_PokemonBreederF, 0x800, 2, + gTrainerFrontPic_CoolTrainerM, 0x800, 3, + gTrainerFrontPic_BirdKeeper, 0x800, 4, + gTrainerFrontPic_Collector, 0x800, 5, + gTrainerFrontPic_AquaGruntF, 0x800, 6, + gTrainerFrontPic_SwimmerM, 0x800, 7, + gTrainerFrontPic_MagmaGruntM, 0x800, 8, + gTrainerFrontPic_ExpertM, 0x800, 9, + gTrainerFrontPic_AquaAdminM, 0x800, 10, + gTrainerFrontPic_BlackBelt, 0x800, 11, + gTrainerFrontPic_AquaAdminF, 0x800, 12, + gTrainerFrontPic_AquaLeaderArchie, 0x800, 13, + gTrainerFrontPic_HexManiac, 0x800, 14, + gTrainerFrontPic_AromaLady, 0x800, 15, + gTrainerFrontPic_RuinManiac, 0x800, 16, + gTrainerFrontPic_Interviewer, 0x800, 17, + gTrainerFrontPic_TuberF, 0x800, 18, + gTrainerFrontPic_TuberM, 0x800, 19, + gTrainerFrontPic_CoolTrainerF, 0x800, 20, + gTrainerFrontPic_Lady, 0x800, 21, + gTrainerFrontPic_Beauty, 0x800, 22, + gTrainerFrontPic_RichBoy, 0x800, 23, + gTrainerFrontPic_ExpertF, 0x800, 24, + gTrainerFrontPic_Pokemaniac, 0x800, 25, + gTrainerFrontPic_MagmaGruntF, 0x800, 26, + gTrainerFrontPic_Guitarist, 0x800, 27, + gTrainerFrontPic_Kindler, 0x800, 28, + gTrainerFrontPic_Camper, 0x800, 29, + gTrainerFrontPic_Picnicker, 0x800, 30, + gTrainerFrontPic_BugManiac, 0x800, 31, + gTrainerFrontPic_PokemonBreederM, 0x800, 32, + gTrainerFrontPic_PsychicM, 0x800, 33, + gTrainerFrontPic_PsychicF, 0x800, 34, + gTrainerFrontPic_Gentleman, 0x800, 35, + gTrainerFrontPic_EliteFourSidney, 0x800, 36, + gTrainerFrontPic_EliteFourPhoebe, 0x800, 37, + gTrainerFrontPic_EliteFourGlacia, 0x800, 38, + gTrainerFrontPic_EliteFourDrake, 0x800, 39, + gTrainerFrontPic_LeaderRoxanne, 0x800, 40, + gTrainerFrontPic_LeaderBrawly, 0x800, 41, + gTrainerFrontPic_LeaderWattson, 0x800, 42, + gTrainerFrontPic_LeaderFlannery, 0x800, 43, + gTrainerFrontPic_LeaderNorman, 0x800, 44, + gTrainerFrontPic_LeaderWinona, 0x800, 45, + gTrainerFrontPic_LeaderTateAndLiza, 0x800, 46, + gTrainerFrontPic_LeaderJuan, 0x800, 47, + gTrainerFrontPic_SchoolKidM, 0x800, 48, + gTrainerFrontPic_SchoolKidF, 0x800, 49, + gTrainerFrontPic_SrAndJr, 0x1000, 50, + gTrainerFrontPic_WinstrateM, 0x1000, 51, + gTrainerFrontPic_WinstrateF, 0x800, 52, + gTrainerFrontPic_Youngster, 0x800, 53, + gTrainerFrontPic_ChampionWallace, 0x1000, 54, + gTrainerFrontPic_Fisherman, 0x800, 55, + gTrainerFrontPic_CyclingTriathleteM, 0x1000, 56, + gTrainerFrontPic_CyclingTriathleteF, 0x800, 57, + gTrainerFrontPic_RunningTriathleteM, 0x800, 58, + gTrainerFrontPic_RunningTriathleteF, 0x800, 59, + gTrainerFrontPic_SwimmingTriathleteM, 0x800, 60, + gTrainerFrontPic_SwimmingTriathleteF, 0x800, 61, + gTrainerFrontPic_DragonTamer, 0x800, 62, + gTrainerFrontPic_NinjaBoy, 0x800, 63, + gTrainerFrontPic_BattleGirl, 0x1000, 64, + gTrainerFrontPic_ParasolLady, 0x800, 65, + gTrainerFrontPic_SwimmerF, 0x800, 66, + gTrainerFrontPic_Twins, 0x800, 67, + gTrainerFrontPic_Sailor, 0x800, 68, + gTrainerFrontPic_MagmaAdmin, 0x800, 69, + gTrainerFrontPic_Wally, 0x800, 70, + gTrainerFrontPic_Brendan, 0x800, 71, + gTrainerFrontPic_May, 0x800, 72, + gTrainerFrontPic_BugCatcher, 0x800, 73, + gTrainerFrontPic_PokemonRangerM, 0x800, 74, + gTrainerFrontPic_PokemonRangerF, 0x800, 75, + gTrainerFrontPic_MagmaLeaderMaxie, 0x800, 76, + gTrainerFrontPic_Lass, 0x800, 77, + gTrainerFrontPic_YoungCouple, 0x800, 78, + gTrainerFrontPic_OldCouple, 0x800, 79, + gTrainerFrontPic_SisAndBro, 0x800, 80, + gTrainerFrontPic_Steven, 0x800, 81, + gTrainerFrontPic_SalonMaidenAnabel, 0x800, 82, + gTrainerFrontPic_DomeAceTucker, 0x800, 83, + gTrainerFrontPic_PalaceMavenSpenser, 0x800, 84, + gTrainerFrontPic_ArenaTycoonGreta, 0x1000, 85, + gTrainerFrontPic_FactoryHeadNoland, 0x800, 86, + gTrainerFrontPic_PikeQueenLucy, 0x800, 87, + gTrainerFrontPic_PyramidKingBrandon, 0x800, 88, + gTrainerFrontPic_Red, 0x800, 89, + gTrainerFrontPic_Leaf, 0x800, 90, + gTrainerFrontPic_RubySapphireBrendan, 0x800, 91, + gTrainerFrontPic_RubySapphireMay, 0x800, 92, +}; + +const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[] = +{ + gTrainerPalette_Hiker, 0, + gTrainerPalette_AquaGruntM, 1, + gTrainerPalette_PokemonBreederF, 2, + gTrainerPalette_CoolTrainerM, 3, + gTrainerPalette_BirdKeeper, 4, + gTrainerPalette_Collector, 5, + gTrainerPalette_AquaGruntF, 6, + gTrainerPalette_SwimmerM, 7, + gTrainerPalette_MagmaGruntM, 8, + gTrainerPalette_ExpertM, 9, + gTrainerPalette_AquaAdminM, 10, + gTrainerPalette_BlackBelt, 11, + gTrainerPalette_AquaAdminF, 12, + gTrainerPalette_AquaLeaderArchie, 13, + gTrainerPalette_HexManiac, 14, + gTrainerPalette_AromaLady, 15, + gTrainerPalette_RuinManiac, 16, + gTrainerPalette_Interviewer, 17, + gTrainerPalette_TuberF, 18, + gTrainerPalette_TuberM, 19, + gTrainerPalette_CoolTrainerF, 20, + gTrainerPalette_Lady, 21, + gTrainerPalette_Beauty, 22, + gTrainerPalette_RichBoy, 23, + gTrainerPalette_ExpertF, 24, + gTrainerPalette_Pokemaniac, 25, + gTrainerPalette_MagmaGruntF, 26, + gTrainerPalette_Guitarist, 27, + gTrainerPalette_Kindler, 28, + gTrainerPalette_Camper, 29, + gTrainerPalette_Picnicker, 30, + gTrainerPalette_BugManiac, 31, + gTrainerPalette_PokemonBreederM, 32, + gTrainerPalette_PsychicM, 33, + gTrainerPalette_PsychicF, 34, + gTrainerPalette_Gentleman, 35, + gTrainerPalette_EliteFourSidney, 36, + gTrainerPalette_EliteFourPhoebe, 37, + gTrainerPalette_EliteFourGlacia, 38, + gTrainerPalette_EliteFourDrake, 39, + gTrainerPalette_LeaderRoxanne, 40, + gTrainerPalette_LeaderBrawly, 41, + gTrainerPalette_LeaderWattson, 42, + gTrainerPalette_LeaderFlannery, 43, + gTrainerPalette_LeaderNorman, 44, + gTrainerPalette_LeaderWinona, 45, + gTrainerPalette_LeaderTateAndLiza, 46, + gTrainerPalette_LeaderJuan, 47, + gTrainerPalette_SchoolKidM, 48, + gTrainerPalette_SchoolKidF, 49, + gTrainerPalette_SrAndJr, 50, + gTrainerPalette_WinstrateM, 51, + gTrainerPalette_WinstrateF, 52, + gTrainerPalette_Youngster, 53, + gTrainerPalette_ChampionWallace, 54, + gTrainerPalette_Fisherman, 55, + gTrainerPalette_CyclingTriathleteM, 56, + gTrainerPalette_CyclingTriathleteF, 57, + gTrainerPalette_RunningTriathleteM, 58, + gTrainerPalette_RunningTriathleteF, 59, + gTrainerPalette_SwimmingTriathleteM, 60, + gTrainerPalette_SwimmingTriathleteF, 61, + gTrainerPalette_DragonTamer, 62, + gTrainerPalette_NinjaBoy, 63, + gTrainerPalette_BattleGirl, 64, + gTrainerPalette_ParasolLady, 65, + gTrainerPalette_SwimmerF, 66, + gTrainerPalette_Twins, 67, + gTrainerPalette_Sailor, 68, + gTrainerPalette_MagmaAdmin, 69, + gTrainerPalette_Wally, 70, + gTrainerPalette_Brendan, 71, + gTrainerPalette_May, 72, + gTrainerPalette_BugCatcher, 73, + gTrainerPalette_PokemonRangerM, 74, + gTrainerPalette_PokemonRangerF, 75, + gTrainerPalette_MagmaLeaderMaxie, 76, + gTrainerPalette_Lass, 77, + gTrainerPalette_YoungCouple, 78, + gTrainerPalette_OldCouple, 79, + gTrainerPalette_SisAndBro, 80, + gTrainerPalette_Steven, 81, + gTrainerPalette_SalonMaidenAnabel, 82, + gTrainerPalette_DomeAceTucker, 83, + gTrainerPalette_PalaceMavenSpenser, 84, + gTrainerPalette_ArenaTycoonGreta, 85, + gTrainerPalette_FactoryHeadNoland, 86, + gTrainerPalette_PikeQueenLucy, 87, + gTrainerPalette_PyramidKingBrandon, 88, + gTrainerPalette_Red, 89, + gTrainerPalette_Leaf, 90, + gTrainerPalette_RubySapphireBrendan, 91, + gTrainerPalette_RubySapphireMay, 92, +}; diff --git a/src/data/trainers.h b/src/data/trainers.h index 19e210acc..214a72df1 100644 --- a/src/data/trainers.h +++ b/src/data/trainers.h @@ -6,9 +6,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_HIKER, .trainerName = _(""), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x0, + .aiFlags = 0, .partySize = 0, .party = {.NoItemDefaultMoves = NULL } }, @@ -20,9 +20,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_HIKER, .trainerName = _("SAWYER"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Sawyer1 } }, @@ -34,9 +34,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt1 } }, @@ -48,9 +48,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt2 } }, @@ -62,9 +62,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt3 } }, @@ -76,9 +76,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt4 } }, @@ -90,9 +90,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt5 } }, @@ -104,9 +104,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt6 } }, @@ -118,9 +118,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt7 } }, @@ -132,9 +132,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, .trainerName = _("GABRIELLE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 6, .party = {.NoItemDefaultMoves = gTrainerParty_Gabrielle1 } }, @@ -146,9 +146,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt8 } }, @@ -162,7 +162,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("MARCEL"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Marcel } }, @@ -174,9 +174,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, .trainerPic = TRAINER_PIC_BIRD_KEEPER, .trainerName = _("ALBERTO"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Alberto } }, @@ -188,9 +188,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_COLLECTOR, .trainerName = _("ED"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Ed } }, @@ -202,9 +202,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt9 } }, @@ -216,9 +216,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("DECLAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Declan } }, @@ -230,9 +230,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt10 } }, @@ -244,9 +244,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt11 } }, @@ -258,9 +258,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt12 } }, @@ -272,9 +272,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt13 } }, @@ -286,9 +286,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt14 } }, @@ -300,9 +300,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt15 } }, @@ -314,9 +314,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt16 } }, @@ -328,9 +328,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt17 } }, @@ -342,9 +342,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt18 } }, @@ -356,9 +356,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt19 } }, @@ -370,9 +370,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt20 } }, @@ -384,9 +384,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt21 } }, @@ -398,9 +398,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt22 } }, @@ -412,9 +412,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_EXPERT_M, .trainerName = _("FREDRICK"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Fredrick } }, @@ -428,7 +428,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("MATT"), .items = {ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Matt } }, @@ -440,9 +440,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BLACK_BELT, .trainerName = _("ZANDER"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Zander } }, @@ -454,9 +454,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_ADMIN_F, .trainerName = _("SHELLY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Shelly1 } }, @@ -468,9 +468,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_ADMIN_F, .trainerName = _("SHELLY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Shelly2 } }, @@ -484,7 +484,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("ARCHIE"), .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Archie } }, @@ -496,9 +496,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_HEX_MANIAC, .trainerName = _("LEAH"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Leah } }, @@ -510,9 +510,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_AROMA_LADY, .trainerName = _("DAISY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Daisy } }, @@ -524,9 +524,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_AROMA_LADY, .trainerName = _("ROSE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Rose1 } }, @@ -540,7 +540,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("FELIX"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_Felix } }, @@ -552,9 +552,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_AROMA_LADY, .trainerName = _("VIOLET"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Violet } }, @@ -566,9 +566,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_AROMA_LADY, .trainerName = _("ROSE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Rose2 } }, @@ -580,9 +580,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_AROMA_LADY, .trainerName = _("ROSE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Rose3 } }, @@ -594,9 +594,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_AROMA_LADY, .trainerName = _("ROSE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Rose4 } }, @@ -608,9 +608,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_AROMA_LADY, .trainerName = _("ROSE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Rose5 } }, @@ -622,9 +622,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_RUIN_MANIAC, .trainerName = _("DUSTY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Dusty1 } }, @@ -636,9 +636,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_RUIN_MANIAC, .trainerName = _("CHIP"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemCustomMoves = gTrainerParty_Chip } }, @@ -650,9 +650,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_RUIN_MANIAC, .trainerName = _("FOSTER"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_Foster } }, @@ -664,9 +664,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_RUIN_MANIAC, .trainerName = _("DUSTY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Dusty2 } }, @@ -678,9 +678,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_RUIN_MANIAC, .trainerName = _("DUSTY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Dusty3 } }, @@ -692,9 +692,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_RUIN_MANIAC, .trainerName = _("DUSTY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Dusty4 } }, @@ -706,9 +706,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_RUIN_MANIAC, .trainerName = _("DUSTY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Dusty5 } }, @@ -720,9 +720,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, .trainerPic = TRAINER_PIC_INTERVIEWER, .trainerName = _("GABBY & TY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_GabbyAndTy1 } }, @@ -734,9 +734,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, .trainerPic = TRAINER_PIC_INTERVIEWER, .trainerName = _("GABBY & TY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_GabbyAndTy2 } }, @@ -748,9 +748,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, .trainerPic = TRAINER_PIC_INTERVIEWER, .trainerName = _("GABBY & TY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_GabbyAndTy3 } }, @@ -762,9 +762,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, .trainerPic = TRAINER_PIC_INTERVIEWER, .trainerName = _("GABBY & TY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_GabbyAndTy4 } }, @@ -776,9 +776,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, .trainerPic = TRAINER_PIC_INTERVIEWER, .trainerName = _("GABBY & TY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_GabbyAndTy5 } }, @@ -790,9 +790,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, .trainerPic = TRAINER_PIC_INTERVIEWER, .trainerName = _("GABBY & TY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_GabbyAndTy6 } }, @@ -804,9 +804,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_TUBER_F, .trainerName = _("LOLA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Lola1 } }, @@ -818,9 +818,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_TUBER_F, .trainerName = _("AUSTINA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Austina } }, @@ -832,9 +832,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_TUBER_F, .trainerName = _("GWEN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Gwen } }, @@ -846,9 +846,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_TUBER_F, .trainerName = _("LOLA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Lola2 } }, @@ -860,9 +860,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_TUBER_F, .trainerName = _("LOLA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Lola3 } }, @@ -874,9 +874,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_TUBER_F, .trainerName = _("LOLA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Lola4 } }, @@ -888,9 +888,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_TUBER_F, .trainerName = _("LOLA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Lola5 } }, @@ -902,9 +902,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_TUBER_M, .trainerName = _("RICKY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Ricky1 } }, @@ -916,9 +916,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_TUBER_M, .trainerName = _("SIMON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Simon } }, @@ -930,9 +930,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_TUBER_M, .trainerName = _("CHARLIE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Charlie } }, @@ -944,9 +944,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_TUBER_M, .trainerName = _("RICKY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Ricky2 } }, @@ -958,9 +958,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_TUBER_M, .trainerName = _("RICKY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Ricky3 } }, @@ -972,9 +972,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_TUBER_M, .trainerName = _("RICKY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Ricky4 } }, @@ -986,9 +986,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_TUBER_M, .trainerName = _("RICKY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Ricky5 } }, @@ -1002,7 +1002,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("RANDALL"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.ItemCustomMoves = gTrainerParty_Randall } }, @@ -1016,7 +1016,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("PARKER"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.ItemCustomMoves = gTrainerParty_Parker } }, @@ -1030,7 +1030,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("GEORGE"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.ItemCustomMoves = gTrainerParty_George } }, @@ -1044,7 +1044,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("BERKE"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.ItemCustomMoves = gTrainerParty_Berke } }, @@ -1058,7 +1058,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("BRAXTON"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 5, .party = {.NoItemCustomMoves = gTrainerParty_Braxton } }, @@ -1072,7 +1072,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("VINCENT"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Vincent } }, @@ -1086,7 +1086,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("LEROY"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Leroy } }, @@ -1100,7 +1100,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WILTON"), .items = {ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Wilton1 } }, @@ -1114,7 +1114,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("EDGAR"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Edgar } }, @@ -1128,7 +1128,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("ALBERT"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Albert } }, @@ -1142,7 +1142,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("SAMUEL"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Samuel } }, @@ -1156,7 +1156,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("VITO"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 4, .party = {.NoItemDefaultMoves = gTrainerParty_Vito } }, @@ -1170,7 +1170,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("OWEN"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Owen } }, @@ -1184,7 +1184,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WILTON"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Wilton2 } }, @@ -1198,7 +1198,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WILTON"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Wilton3 } }, @@ -1212,7 +1212,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WILTON"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Wilton4 } }, @@ -1226,7 +1226,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WILTON"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Wilton5 } }, @@ -1240,7 +1240,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WARREN"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Warren } }, @@ -1254,7 +1254,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("MARY"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.ItemCustomMoves = gTrainerParty_Mary } }, @@ -1268,7 +1268,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("ALEXIA"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.ItemCustomMoves = gTrainerParty_Alexia } }, @@ -1282,7 +1282,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("JODY"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0xb, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN, .partySize = 1, .party = {.ItemCustomMoves = gTrainerParty_Jody } }, @@ -1296,7 +1296,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WENDY"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0xb, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN, .partySize = 3, .party = {.NoItemCustomMoves = gTrainerParty_Wendy } }, @@ -1310,7 +1310,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("KEIRA"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0xb, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Keira } }, @@ -1324,7 +1324,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("BROOKE"), .items = {ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Brooke1 } }, @@ -1338,7 +1338,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("JENNIFER"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Jennifer } }, @@ -1352,7 +1352,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("HOPE"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Hope } }, @@ -1366,7 +1366,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("SHANNON"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Shannon } }, @@ -1380,7 +1380,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("MICHELLE"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Michelle } }, @@ -1394,7 +1394,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("CAROLINE"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Caroline } }, @@ -1408,7 +1408,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("JULIE"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Julie } }, @@ -1422,7 +1422,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("BROOKE"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Brooke2 } }, @@ -1436,7 +1436,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("BROOKE"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Brooke3 } }, @@ -1450,7 +1450,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("BROOKE"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Brooke4 } }, @@ -1464,7 +1464,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("BROOKE"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Brooke5 } }, @@ -1476,9 +1476,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_HEX_MANIAC, .trainerName = _("PATRICIA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Patricia } }, @@ -1490,9 +1490,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_HEX_MANIAC, .trainerName = _("KINDRA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Kindra } }, @@ -1504,9 +1504,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_HEX_MANIAC, .trainerName = _("TAMMY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Tammy } }, @@ -1518,9 +1518,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_HEX_MANIAC, .trainerName = _("VALERIE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Valerie1 } }, @@ -1532,9 +1532,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_HEX_MANIAC, .trainerName = _("TASHA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Tasha } }, @@ -1546,9 +1546,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_HEX_MANIAC, .trainerName = _("VALERIE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Valerie2 } }, @@ -1560,9 +1560,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_HEX_MANIAC, .trainerName = _("VALERIE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Valerie3 } }, @@ -1574,9 +1574,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_HEX_MANIAC, .trainerName = _("VALERIE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Valerie4 } }, @@ -1588,9 +1588,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_HEX_MANIAC, .trainerName = _("VALERIE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Valerie5 } }, @@ -1604,7 +1604,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("CINDY"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.ItemDefaultMoves = gTrainerParty_Cindy1 } }, @@ -1618,7 +1618,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("DAPHNE"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.ItemCustomMoves = gTrainerParty_Daphne } }, @@ -1630,9 +1630,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt23 } }, @@ -1646,7 +1646,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("CINDY"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.ItemCustomMoves = gTrainerParty_Cindy2 } }, @@ -1660,7 +1660,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("BRIANNA"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.ItemDefaultMoves = gTrainerParty_Brianna } }, @@ -1674,7 +1674,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("NAOMI"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.ItemDefaultMoves = gTrainerParty_Naomi } }, @@ -1688,7 +1688,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("CINDY"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.ItemDefaultMoves = gTrainerParty_Cindy3 } }, @@ -1702,7 +1702,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("CINDY"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.ItemDefaultMoves = gTrainerParty_Cindy4 } }, @@ -1716,7 +1716,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("CINDY"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.ItemDefaultMoves = gTrainerParty_Cindy5 } }, @@ -1730,7 +1730,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("CINDY"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.ItemCustomMoves = gTrainerParty_Cindy6 } }, @@ -1742,9 +1742,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_BEAUTY, .trainerName = _("MELISSA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Melissa } }, @@ -1756,9 +1756,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_BEAUTY, .trainerName = _("SHEILA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Sheila } }, @@ -1770,9 +1770,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_BEAUTY, .trainerName = _("SHIRLEY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Shirley } }, @@ -1784,9 +1784,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_BEAUTY, .trainerName = _("JESSICA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_Jessica1 } }, @@ -1798,9 +1798,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_BEAUTY, .trainerName = _("CONNIE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Connie } }, @@ -1812,9 +1812,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_BEAUTY, .trainerName = _("BRIDGET"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Bridget } }, @@ -1826,9 +1826,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_BEAUTY, .trainerName = _("OLIVIA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemCustomMoves = gTrainerParty_Olivia } }, @@ -1840,9 +1840,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_BEAUTY, .trainerName = _("TIFFANY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Tiffany } }, @@ -1854,9 +1854,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_BEAUTY, .trainerName = _("JESSICA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_Jessica2 } }, @@ -1868,9 +1868,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_BEAUTY, .trainerName = _("JESSICA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_Jessica3 } }, @@ -1882,9 +1882,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_BEAUTY, .trainerName = _("JESSICA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_Jessica4 } }, @@ -1896,9 +1896,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_BEAUTY, .trainerName = _("JESSICA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_Jessica5 } }, @@ -1912,7 +1912,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WINSTON"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.ItemDefaultMoves = gTrainerParty_Winston1 } }, @@ -1924,9 +1924,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_EXPERT_F, .trainerName = _("MOLLIE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Mollie } }, @@ -1940,7 +1940,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("GARRET"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.ItemDefaultMoves = gTrainerParty_Garret } }, @@ -1954,7 +1954,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WINSTON"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.ItemDefaultMoves = gTrainerParty_Winston2 } }, @@ -1968,7 +1968,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WINSTON"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.ItemDefaultMoves = gTrainerParty_Winston3 } }, @@ -1982,7 +1982,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WINSTON"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.ItemDefaultMoves = gTrainerParty_Winston4 } }, @@ -1996,7 +1996,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WINSTON"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.ItemCustomMoves = gTrainerParty_Winston5 } }, @@ -2008,9 +2008,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_POKEMANIAC, .trainerName = _("STEVE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Steve1 } }, @@ -2022,9 +2022,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_BEAUTY, .trainerName = _("THALIA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Thalia1 } }, @@ -2036,9 +2036,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_POKEMANIAC, .trainerName = _("MARK"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Mark } }, @@ -2050,9 +2050,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_GRUNT_F, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt24 } }, @@ -2064,9 +2064,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_POKEMANIAC, .trainerName = _("STEVE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Steve2 } }, @@ -2078,9 +2078,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_POKEMANIAC, .trainerName = _("STEVE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Steve3 } }, @@ -2092,9 +2092,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_POKEMANIAC, .trainerName = _("STEVE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Steve4 } }, @@ -2106,9 +2106,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_POKEMANIAC, .trainerName = _("STEVE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Steve5 } }, @@ -2120,9 +2120,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("LUIS"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Luis } }, @@ -2134,9 +2134,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("DOMINIK"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Dominik } }, @@ -2148,9 +2148,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("DOUGLAS"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Douglas } }, @@ -2162,9 +2162,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("DARRIN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Darrin } }, @@ -2176,9 +2176,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("TONY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Tony1 } }, @@ -2190,9 +2190,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("JEROME"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Jerome } }, @@ -2204,9 +2204,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("MATTHEW"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Matthew } }, @@ -2218,9 +2218,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("DAVID"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_David } }, @@ -2232,9 +2232,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("SPENCER"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Spencer } }, @@ -2246,9 +2246,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("ROLAND"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Roland } }, @@ -2260,9 +2260,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("NOLEN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Nolen } }, @@ -2274,9 +2274,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("STAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Stan } }, @@ -2288,9 +2288,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("BARRY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Barry } }, @@ -2302,9 +2302,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("DEAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Dean } }, @@ -2316,9 +2316,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("RODNEY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Rodney } }, @@ -2330,9 +2330,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("RICHARD"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Richard } }, @@ -2344,9 +2344,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("HERMAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Herman } }, @@ -2358,9 +2358,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("SANTIAGO"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Santiago } }, @@ -2372,9 +2372,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("GILBERT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Gilbert } }, @@ -2386,9 +2386,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("FRANKLIN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Franklin } }, @@ -2400,9 +2400,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("KEVIN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Kevin } }, @@ -2414,9 +2414,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("JACK"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Jack } }, @@ -2428,9 +2428,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("DUDLEY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Dudley } }, @@ -2442,9 +2442,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("CHAD"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Chad } }, @@ -2456,9 +2456,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("TONY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Tony2 } }, @@ -2470,9 +2470,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("TONY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Tony3 } }, @@ -2484,9 +2484,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("TONY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Tony4 } }, @@ -2498,9 +2498,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("TONY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Tony5 } }, @@ -2512,9 +2512,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BLACK_BELT, .trainerName = _("TAKAO"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Takao } }, @@ -2526,9 +2526,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BLACK_BELT, .trainerName = _("HITOSHI"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Hitoshi } }, @@ -2540,9 +2540,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BLACK_BELT, .trainerName = _("KIYO"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Kiyo } }, @@ -2554,9 +2554,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BLACK_BELT, .trainerName = _("KOICHI"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Koichi } }, @@ -2568,9 +2568,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BLACK_BELT, .trainerName = _("NOB"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Nob1 } }, @@ -2582,9 +2582,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BLACK_BELT, .trainerName = _("NOB"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Nob2 } }, @@ -2596,9 +2596,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BLACK_BELT, .trainerName = _("NOB"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Nob3 } }, @@ -2610,9 +2610,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BLACK_BELT, .trainerName = _("NOB"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Nob4 } }, @@ -2624,9 +2624,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BLACK_BELT, .trainerName = _("NOB"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 4, .party = {.ItemDefaultMoves = gTrainerParty_Nob5 } }, @@ -2638,9 +2638,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BLACK_BELT, .trainerName = _("YUJI"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Yuji } }, @@ -2652,9 +2652,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BLACK_BELT, .trainerName = _("DAISUKE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Daisuke } }, @@ -2666,9 +2666,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BLACK_BELT, .trainerName = _("ATSUSHI"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Atsushi } }, @@ -2680,9 +2680,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_GUITARIST, .trainerName = _("KIRK"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_Kirk } }, @@ -2694,9 +2694,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt25 } }, @@ -2708,9 +2708,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt26 } }, @@ -2722,9 +2722,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_GUITARIST, .trainerName = _("SHAWN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Shawn } }, @@ -2736,9 +2736,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_GUITARIST, .trainerName = _("FERNANDO"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Fernando1 } }, @@ -2750,9 +2750,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_GUITARIST, .trainerName = _("DALTON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Dalton1 } }, @@ -2764,9 +2764,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_GUITARIST, .trainerName = _("DALTON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Dalton2 } }, @@ -2778,9 +2778,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_GUITARIST, .trainerName = _("DALTON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Dalton3 } }, @@ -2792,9 +2792,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_GUITARIST, .trainerName = _("DALTON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Dalton4 } }, @@ -2806,9 +2806,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_GUITARIST, .trainerName = _("DALTON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Dalton5 } }, @@ -2820,9 +2820,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_KINDLER, .trainerName = _("COLE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Cole } }, @@ -2834,9 +2834,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_KINDLER, .trainerName = _("JEFF"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Jeff } }, @@ -2848,9 +2848,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_KINDLER, .trainerName = _("AXLE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Axle } }, @@ -2862,9 +2862,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_KINDLER, .trainerName = _("JACE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Jace } }, @@ -2876,9 +2876,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_KINDLER, .trainerName = _("KEEGAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Keegan } }, @@ -2890,9 +2890,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_KINDLER, .trainerName = _("BERNIE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Bernie1 } }, @@ -2904,9 +2904,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_KINDLER, .trainerName = _("BERNIE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Bernie2 } }, @@ -2918,9 +2918,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_KINDLER, .trainerName = _("BERNIE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Bernie3 } }, @@ -2932,9 +2932,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_KINDLER, .trainerName = _("BERNIE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Bernie4 } }, @@ -2946,9 +2946,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_KINDLER, .trainerName = _("BERNIE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Bernie5 } }, @@ -2960,9 +2960,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_CAMPER, .trainerName = _("DREW"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Drew } }, @@ -2974,9 +2974,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_CAMPER, .trainerName = _("BEAU"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemCustomMoves = gTrainerParty_Beau } }, @@ -2988,9 +2988,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_CAMPER, .trainerName = _("LARRY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Larry } }, @@ -3002,9 +3002,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_CAMPER, .trainerName = _("SHANE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Shane } }, @@ -3016,9 +3016,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_CAMPER, .trainerName = _("JUSTIN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Justin } }, @@ -3030,9 +3030,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_CAMPER, .trainerName = _("ETHAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Ethan1 } }, @@ -3044,9 +3044,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_PICNICKER, .trainerName = _("AUTUMN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Autumn } }, @@ -3058,9 +3058,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_CAMPER, .trainerName = _("TRAVIS"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Travis } }, @@ -3072,9 +3072,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_CAMPER, .trainerName = _("ETHAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Ethan2 } }, @@ -3086,9 +3086,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_CAMPER, .trainerName = _("ETHAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Ethan3 } }, @@ -3100,9 +3100,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_CAMPER, .trainerName = _("ETHAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Ethan4 } }, @@ -3114,9 +3114,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_CAMPER, .trainerName = _("ETHAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Ethan5 } }, @@ -3128,9 +3128,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_BUG_MANIAC, .trainerName = _("BRENT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Brent } }, @@ -3142,9 +3142,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_BUG_MANIAC, .trainerName = _("DONALD"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Donald } }, @@ -3156,9 +3156,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_BUG_MANIAC, .trainerName = _("TAYLOR"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Taylor } }, @@ -3170,9 +3170,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_BUG_MANIAC, .trainerName = _("JEFFREY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Jeffrey1 } }, @@ -3184,9 +3184,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_BUG_MANIAC, .trainerName = _("DEREK"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Derek } }, @@ -3198,9 +3198,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_BUG_MANIAC, .trainerName = _("JEFFREY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Jeffrey2 } }, @@ -3212,9 +3212,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_BUG_MANIAC, .trainerName = _("JEFFREY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Jeffrey3 } }, @@ -3226,9 +3226,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_BUG_MANIAC, .trainerName = _("JEFFREY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 4, .party = {.NoItemDefaultMoves = gTrainerParty_Jeffrey4 } }, @@ -3240,9 +3240,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_BUG_MANIAC, .trainerName = _("JEFFREY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 5, .party = {.ItemDefaultMoves = gTrainerParty_Jeffrey5 } }, @@ -3254,9 +3254,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_M, .trainerName = _("EDWARD"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Edward } }, @@ -3268,9 +3268,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_M, .trainerName = _("PRESTON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Preston } }, @@ -3282,9 +3282,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_M, .trainerName = _("VIRGIL"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Virgil } }, @@ -3296,9 +3296,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_M, .trainerName = _("BLAKE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Blake } }, @@ -3310,9 +3310,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_M, .trainerName = _("WILLIAM"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_William } }, @@ -3324,9 +3324,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_M, .trainerName = _("JOSHUA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Joshua } }, @@ -3338,9 +3338,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_M, .trainerName = _("CAMERON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Cameron1 } }, @@ -3352,9 +3352,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_M, .trainerName = _("CAMERON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Cameron2 } }, @@ -3366,9 +3366,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_M, .trainerName = _("CAMERON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Cameron3 } }, @@ -3380,9 +3380,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_M, .trainerName = _("CAMERON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Cameron4 } }, @@ -3394,9 +3394,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_M, .trainerName = _("CAMERON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Cameron5 } }, @@ -3408,9 +3408,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_F, .trainerName = _("JACLYN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Jaclyn } }, @@ -3422,9 +3422,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_F, .trainerName = _("HANNAH"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Hannah } }, @@ -3436,9 +3436,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_F, .trainerName = _("SAMANTHA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Samantha } }, @@ -3450,9 +3450,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_F, .trainerName = _("MAURA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Maura } }, @@ -3464,9 +3464,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_F, .trainerName = _("KAYLA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Kayla } }, @@ -3478,9 +3478,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_F, .trainerName = _("ALEXIS"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Alexis } }, @@ -3492,9 +3492,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_F, .trainerName = _("JACKI"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Jacki1 } }, @@ -3506,9 +3506,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_F, .trainerName = _("JACKI"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Jacki2 } }, @@ -3520,9 +3520,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_F, .trainerName = _("JACKI"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Jacki3 } }, @@ -3534,9 +3534,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_F, .trainerName = _("JACKI"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Jacki4 } }, @@ -3548,9 +3548,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_F, .trainerName = _("JACKI"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Jacki5 } }, @@ -3562,9 +3562,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, .trainerPic = TRAINER_PIC_GENTLEMAN, .trainerName = _("WALTER"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Walter1 } }, @@ -3576,9 +3576,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, .trainerPic = TRAINER_PIC_GENTLEMAN, .trainerName = _("MICAH"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Micah } }, @@ -3590,9 +3590,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, .trainerPic = TRAINER_PIC_GENTLEMAN, .trainerName = _("THOMAS"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Thomas } }, @@ -3604,9 +3604,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, .trainerPic = TRAINER_PIC_GENTLEMAN, .trainerName = _("WALTER"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Walter2 } }, @@ -3618,9 +3618,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, .trainerPic = TRAINER_PIC_GENTLEMAN, .trainerName = _("WALTER"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_Walter3 } }, @@ -3632,9 +3632,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, .trainerPic = TRAINER_PIC_GENTLEMAN, .trainerName = _("WALTER"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_Walter4 } }, @@ -3646,9 +3646,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, .trainerPic = TRAINER_PIC_GENTLEMAN, .trainerName = _("WALTER"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemCustomMoves = gTrainerParty_Walter5 } }, @@ -3662,7 +3662,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("SIDNEY"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0xf, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY | AI_SCRIPT_SETUP_FIRST_TURN, .partySize = 5, .party = {.ItemCustomMoves = gTrainerParty_Sidney } }, @@ -3676,7 +3676,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("PHOEBE"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 5, .party = {.ItemCustomMoves = gTrainerParty_Phoebe } }, @@ -3690,7 +3690,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("GLACIA"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 5, .party = {.ItemCustomMoves = gTrainerParty_Glacia } }, @@ -3704,7 +3704,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("DRAKE"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 5, .party = {.ItemCustomMoves = gTrainerParty_Drake } }, @@ -3718,7 +3718,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("ROXANNE"), .items = {ITEM_POTION, ITEM_POTION, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.ItemCustomMoves = gTrainerParty_Roxanne1 } }, @@ -3732,7 +3732,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("BRAWLY"), .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.ItemCustomMoves = gTrainerParty_Brawly1 } }, @@ -3746,7 +3746,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WATTSON"), .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 4, .party = {.ItemCustomMoves = gTrainerParty_Wattson1 } }, @@ -3760,7 +3760,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("FLANNERY"), .items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 4, .party = {.ItemCustomMoves = gTrainerParty_Flannery1 } }, @@ -3774,7 +3774,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("NORMAN"), .items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 4, .party = {.ItemCustomMoves = gTrainerParty_Norman1 } }, @@ -3788,7 +3788,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WINONA"), .items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x17, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY | AI_SCRIPT_RISKY, .partySize = 5, .party = {.ItemCustomMoves = gTrainerParty_Winona1 } }, @@ -3802,7 +3802,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("TATE&LIZA"), .items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_HYPER_POTION}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 4, .party = {.ItemCustomMoves = gTrainerParty_TateAndLiza1 } }, @@ -3816,7 +3816,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("JUAN"), .items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 5, .party = {.ItemCustomMoves = gTrainerParty_Juan1 } }, @@ -3828,9 +3828,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_SCHOOL_KID_M, .trainerName = _("JERRY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Jerry1 } }, @@ -3842,9 +3842,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_SCHOOL_KID_M, .trainerName = _("TED"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Ted } }, @@ -3856,9 +3856,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_SCHOOL_KID_M, .trainerName = _("PAUL"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Paul } }, @@ -3870,9 +3870,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_SCHOOL_KID_M, .trainerName = _("JERRY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Jerry2 } }, @@ -3884,9 +3884,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_SCHOOL_KID_M, .trainerName = _("JERRY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Jerry3 } }, @@ -3898,9 +3898,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_SCHOOL_KID_M, .trainerName = _("JERRY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Jerry4 } }, @@ -3912,9 +3912,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_SCHOOL_KID_M, .trainerName = _("JERRY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Jerry5 } }, @@ -3926,9 +3926,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_SCHOOL_KID_F, .trainerName = _("KAREN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Karen1 } }, @@ -3940,9 +3940,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_SCHOOL_KID_F, .trainerName = _("GEORGIA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Georgia } }, @@ -3954,9 +3954,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_SCHOOL_KID_F, .trainerName = _("KAREN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Karen2 } }, @@ -3968,9 +3968,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_SCHOOL_KID_F, .trainerName = _("KAREN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Karen3 } }, @@ -3982,9 +3982,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_SCHOOL_KID_F, .trainerName = _("KAREN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Karen4 } }, @@ -3996,9 +3996,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_SCHOOL_KID_F, .trainerName = _("KAREN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Karen5 } }, @@ -4010,9 +4010,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_SR_AND_JR, .trainerName = _("KATE & JOY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_KateAndJoy } }, @@ -4024,9 +4024,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_SR_AND_JR, .trainerName = _("ANNA & MEG"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_AnnaAndMeg1 } }, @@ -4038,9 +4038,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_SR_AND_JR, .trainerName = _("ANNA & MEG"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_AnnaAndMeg2 } }, @@ -4052,9 +4052,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_SR_AND_JR, .trainerName = _("ANNA & MEG"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_AnnaAndMeg3 } }, @@ -4066,9 +4066,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_SR_AND_JR, .trainerName = _("ANNA & MEG"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_AnnaAndMeg4 } }, @@ -4080,9 +4080,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_SR_AND_JR, .trainerName = _("ANNA & MEG"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_AnnaAndMeg5 } }, @@ -4094,9 +4094,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_WINSTRATE_M, .trainerName = _("VICTOR"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.ItemDefaultMoves = gTrainerParty_Victor } }, @@ -4108,9 +4108,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_WINSTRATE_M, .trainerName = _("MIGUEL"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.ItemDefaultMoves = gTrainerParty_Miguel1 } }, @@ -4122,9 +4122,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_WINSTRATE_M, .trainerName = _("COLTON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 6, .party = {.ItemCustomMoves = gTrainerParty_Colton } }, @@ -4136,9 +4136,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_WINSTRATE_M, .trainerName = _("MIGUEL"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.ItemDefaultMoves = gTrainerParty_Miguel2 } }, @@ -4150,9 +4150,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_WINSTRATE_M, .trainerName = _("MIGUEL"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.ItemDefaultMoves = gTrainerParty_Miguel3 } }, @@ -4164,9 +4164,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_WINSTRATE_M, .trainerName = _("MIGUEL"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.ItemDefaultMoves = gTrainerParty_Miguel4 } }, @@ -4178,9 +4178,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_WINSTRATE_M, .trainerName = _("MIGUEL"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.ItemDefaultMoves = gTrainerParty_Miguel5 } }, @@ -4192,9 +4192,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_WINSTRATE_F, .trainerName = _("VICTORIA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x3, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT, .partySize = 1, .party = {.ItemDefaultMoves = gTrainerParty_Victoria } }, @@ -4206,9 +4206,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_WINSTRATE_F, .trainerName = _("VANESSA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.ItemDefaultMoves = gTrainerParty_Vanessa } }, @@ -4220,9 +4220,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_WINSTRATE_F, .trainerName = _("BETHANY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.ItemDefaultMoves = gTrainerParty_Bethany } }, @@ -4234,9 +4234,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_WINSTRATE_F, .trainerName = _("ISABEL"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.ItemDefaultMoves = gTrainerParty_Isabel1 } }, @@ -4248,9 +4248,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_WINSTRATE_F, .trainerName = _("ISABEL"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.ItemDefaultMoves = gTrainerParty_Isabel2 } }, @@ -4262,9 +4262,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_WINSTRATE_F, .trainerName = _("ISABEL"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.ItemDefaultMoves = gTrainerParty_Isabel3 } }, @@ -4276,9 +4276,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_WINSTRATE_F, .trainerName = _("ISABEL"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.ItemDefaultMoves = gTrainerParty_Isabel4 } }, @@ -4290,9 +4290,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_WINSTRATE_F, .trainerName = _("ISABEL"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.ItemDefaultMoves = gTrainerParty_Isabel5 } }, @@ -4304,9 +4304,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_EXPERT_M, .trainerName = _("TIMOTHY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Timothy1 } }, @@ -4318,9 +4318,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_EXPERT_M, .trainerName = _("TIMOTHY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Timothy2 } }, @@ -4332,9 +4332,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_EXPERT_M, .trainerName = _("TIMOTHY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Timothy3 } }, @@ -4346,9 +4346,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_EXPERT_M, .trainerName = _("TIMOTHY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Timothy4 } }, @@ -4360,9 +4360,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_EXPERT_M, .trainerName = _("TIMOTHY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Timothy5 } }, @@ -4374,9 +4374,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_EXPERT_F, .trainerName = _("VICKY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Vicky } }, @@ -4388,9 +4388,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_EXPERT_F, .trainerName = _("SHELBY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Shelby1 } }, @@ -4402,9 +4402,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_EXPERT_F, .trainerName = _("SHELBY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Shelby2 } }, @@ -4416,9 +4416,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_EXPERT_F, .trainerName = _("SHELBY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Shelby3 } }, @@ -4430,9 +4430,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_EXPERT_F, .trainerName = _("SHELBY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Shelby4 } }, @@ -4444,9 +4444,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_EXPERT_F, .trainerName = _("SHELBY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Shelby5 } }, @@ -4458,9 +4458,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_YOUNGSTER, .trainerName = _("CALVIN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Calvin1 } }, @@ -4472,9 +4472,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_YOUNGSTER, .trainerName = _("BILLY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Billy } }, @@ -4486,9 +4486,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_YOUNGSTER, .trainerName = _("JOSH"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Josh } }, @@ -4500,9 +4500,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_YOUNGSTER, .trainerName = _("TOMMY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Tommy } }, @@ -4514,9 +4514,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_YOUNGSTER, .trainerName = _("JOEY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Joey } }, @@ -4528,9 +4528,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_YOUNGSTER, .trainerName = _("BEN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_Ben } }, @@ -4544,7 +4544,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("QUINCY"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_Quincy } }, @@ -4558,7 +4558,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("KATELYNN"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_Katelynn } }, @@ -4570,9 +4570,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_YOUNGSTER, .trainerName = _("JAYLEN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Jaylen } }, @@ -4584,9 +4584,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_YOUNGSTER, .trainerName = _("DILLON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Dillon } }, @@ -4598,9 +4598,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_YOUNGSTER, .trainerName = _("CALVIN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Calvin2 } }, @@ -4612,9 +4612,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_YOUNGSTER, .trainerName = _("CALVIN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Calvin3 } }, @@ -4626,9 +4626,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_YOUNGSTER, .trainerName = _("CALVIN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Calvin4 } }, @@ -4640,9 +4640,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_YOUNGSTER, .trainerName = _("CALVIN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Calvin5 } }, @@ -4654,9 +4654,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_YOUNGSTER, .trainerName = _("EDDIE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Eddie } }, @@ -4668,9 +4668,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_YOUNGSTER, .trainerName = _("ALLEN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Allen } }, @@ -4682,9 +4682,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_YOUNGSTER, .trainerName = _("TIMMY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Timmy } }, @@ -4698,7 +4698,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WALLACE"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 6, .party = {.ItemCustomMoves = gTrainerParty_Wallace } }, @@ -4710,9 +4710,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_FISHERMAN, .trainerName = _("ANDREW"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Andrew } }, @@ -4724,9 +4724,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_FISHERMAN, .trainerName = _("IVAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Ivan } }, @@ -4738,9 +4738,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_FISHERMAN, .trainerName = _("CLAUDE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Claude } }, @@ -4752,9 +4752,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_FISHERMAN, .trainerName = _("ELLIOT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Elliot1 } }, @@ -4766,9 +4766,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_FISHERMAN, .trainerName = _("NED"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Ned } }, @@ -4780,9 +4780,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_FISHERMAN, .trainerName = _("DALE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 4, .party = {.NoItemDefaultMoves = gTrainerParty_Dale } }, @@ -4794,9 +4794,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_FISHERMAN, .trainerName = _("NOLAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Nolan } }, @@ -4808,9 +4808,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_FISHERMAN, .trainerName = _("BARNY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Barny } }, @@ -4822,9 +4822,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_FISHERMAN, .trainerName = _("WADE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Wade } }, @@ -4836,9 +4836,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_FISHERMAN, .trainerName = _("CARTER"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Carter } }, @@ -4850,9 +4850,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_FISHERMAN, .trainerName = _("ELLIOT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Elliot2 } }, @@ -4864,9 +4864,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_FISHERMAN, .trainerName = _("ELLIOT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 4, .party = {.NoItemDefaultMoves = gTrainerParty_Elliot3 } }, @@ -4878,9 +4878,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_FISHERMAN, .trainerName = _("ELLIOT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 4, .party = {.NoItemDefaultMoves = gTrainerParty_Elliot4 } }, @@ -4892,9 +4892,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_FISHERMAN, .trainerName = _("ELLIOT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x3, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT, .partySize = 4, .party = {.NoItemDefaultMoves = gTrainerParty_Elliot5 } }, @@ -4906,9 +4906,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_FISHERMAN, .trainerName = _("RONALD"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 6, .party = {.NoItemDefaultMoves = gTrainerParty_Ronald } }, @@ -4920,9 +4920,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, .trainerName = _("JACOB"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Jacob } }, @@ -4934,9 +4934,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, .trainerName = _("ANTHONY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Anthony } }, @@ -4948,9 +4948,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, .trainerName = _("BENJAMIN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Benjamin1 } }, @@ -4962,9 +4962,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, .trainerName = _("BENJAMIN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Benjamin2 } }, @@ -4976,9 +4976,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, .trainerName = _("BENJAMIN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Benjamin3 } }, @@ -4990,9 +4990,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, .trainerName = _("BENJAMIN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Benjamin4 } }, @@ -5004,9 +5004,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, .trainerName = _("BENJAMIN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Benjamin5 } }, @@ -5018,9 +5018,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, .trainerName = _("ABIGAIL"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Abigail1 } }, @@ -5032,9 +5032,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, .trainerName = _("JASMINE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Jasmine } }, @@ -5046,9 +5046,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, .trainerName = _("ABIGAIL"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Abigail2 } }, @@ -5060,9 +5060,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, .trainerName = _("ABIGAIL"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Abigail3 } }, @@ -5074,9 +5074,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, .trainerName = _("ABIGAIL"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Abigail4 } }, @@ -5088,9 +5088,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, .trainerName = _("ABIGAIL"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Abigail5 } }, @@ -5102,9 +5102,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M, .trainerName = _("DYLAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Dylan1 } }, @@ -5116,9 +5116,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M, .trainerName = _("DYLAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Dylan2 } }, @@ -5130,9 +5130,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M, .trainerName = _("DYLAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Dylan3 } }, @@ -5144,9 +5144,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M, .trainerName = _("DYLAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Dylan4 } }, @@ -5158,9 +5158,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M, .trainerName = _("DYLAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Dylan5 } }, @@ -5172,9 +5172,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, .trainerName = _("MARIA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Maria1 } }, @@ -5186,9 +5186,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, .trainerName = _("MARIA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Maria2 } }, @@ -5200,9 +5200,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, .trainerName = _("MARIA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Maria3 } }, @@ -5214,9 +5214,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, .trainerName = _("MARIA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Maria4 } }, @@ -5228,9 +5228,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, .trainerName = _("MARIA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Maria5 } }, @@ -5242,9 +5242,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, .trainerName = _("CAMDEN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Camden } }, @@ -5256,9 +5256,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_YOUNGSTER, .trainerName = _("DEMETRIUS"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Demetrius } }, @@ -5270,9 +5270,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, .trainerName = _("ISAIAH"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Isaiah1 } }, @@ -5284,9 +5284,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, .trainerName = _("PABLO"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Pablo1 } }, @@ -5298,9 +5298,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, .trainerName = _("CHASE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Chase } }, @@ -5312,9 +5312,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, .trainerName = _("ISAIAH"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Isaiah2 } }, @@ -5326,9 +5326,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, .trainerName = _("ISAIAH"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Isaiah3 } }, @@ -5340,9 +5340,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, .trainerName = _("ISAIAH"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Isaiah4 } }, @@ -5354,9 +5354,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, .trainerName = _("ISAIAH"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Isaiah5 } }, @@ -5368,9 +5368,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, .trainerName = _("ISOBEL"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Isobel } }, @@ -5382,9 +5382,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, .trainerName = _("DONNY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Donny } }, @@ -5396,9 +5396,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, .trainerName = _("TALIA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Talia } }, @@ -5410,9 +5410,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, .trainerName = _("KATELYN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Katelyn1 } }, @@ -5424,9 +5424,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, .trainerName = _("ALLISON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Allison } }, @@ -5438,9 +5438,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, .trainerName = _("KATELYN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Katelyn2 } }, @@ -5452,9 +5452,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, .trainerName = _("KATELYN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Katelyn3 } }, @@ -5466,9 +5466,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, .trainerName = _("KATELYN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Katelyn4 } }, @@ -5480,9 +5480,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, .trainerName = _("KATELYN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Katelyn5 } }, @@ -5494,9 +5494,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_DRAGON_TAMER, .trainerName = _("NICOLAS"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Nicolas1 } }, @@ -5508,9 +5508,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_DRAGON_TAMER, .trainerName = _("NICOLAS"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Nicolas2 } }, @@ -5522,9 +5522,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_DRAGON_TAMER, .trainerName = _("NICOLAS"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Nicolas3 } }, @@ -5536,9 +5536,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_DRAGON_TAMER, .trainerName = _("NICOLAS"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Nicolas4 } }, @@ -5550,9 +5550,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_DRAGON_TAMER, .trainerName = _("NICOLAS"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.ItemDefaultMoves = gTrainerParty_Nicolas5 } }, @@ -5564,9 +5564,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_DRAGON_TAMER, .trainerName = _("AARON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Aaron } }, @@ -5578,9 +5578,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, .trainerPic = TRAINER_PIC_BIRD_KEEPER, .trainerName = _("PERRY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Perry } }, @@ -5592,9 +5592,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, .trainerPic = TRAINER_PIC_BIRD_KEEPER, .trainerName = _("HUGH"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Hugh } }, @@ -5606,9 +5606,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, .trainerPic = TRAINER_PIC_BIRD_KEEPER, .trainerName = _("PHIL"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Phil } }, @@ -5620,9 +5620,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, .trainerPic = TRAINER_PIC_BIRD_KEEPER, .trainerName = _("JARED"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Jared } }, @@ -5634,9 +5634,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, .trainerPic = TRAINER_PIC_BIRD_KEEPER, .trainerName = _("HUMBERTO"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Humberto } }, @@ -5648,9 +5648,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, .trainerPic = TRAINER_PIC_BIRD_KEEPER, .trainerName = _("PRESLEY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Presley } }, @@ -5662,9 +5662,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, .trainerPic = TRAINER_PIC_BIRD_KEEPER, .trainerName = _("EDWARDO"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Edwardo } }, @@ -5676,9 +5676,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, .trainerPic = TRAINER_PIC_BIRD_KEEPER, .trainerName = _("COLIN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Colin } }, @@ -5690,9 +5690,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, .trainerPic = TRAINER_PIC_BIRD_KEEPER, .trainerName = _("ROBERT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Robert1 } }, @@ -5704,9 +5704,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, .trainerPic = TRAINER_PIC_BIRD_KEEPER, .trainerName = _("BENNY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Benny } }, @@ -5718,9 +5718,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, .trainerPic = TRAINER_PIC_BIRD_KEEPER, .trainerName = _("CHESTER"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Chester } }, @@ -5732,9 +5732,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, .trainerPic = TRAINER_PIC_BIRD_KEEPER, .trainerName = _("ROBERT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Robert2 } }, @@ -5746,9 +5746,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, .trainerPic = TRAINER_PIC_BIRD_KEEPER, .trainerName = _("ROBERT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Robert3 } }, @@ -5760,9 +5760,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, .trainerPic = TRAINER_PIC_BIRD_KEEPER, .trainerName = _("ROBERT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Robert4 } }, @@ -5774,9 +5774,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, .trainerPic = TRAINER_PIC_BIRD_KEEPER, .trainerName = _("ROBERT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Robert5 } }, @@ -5788,9 +5788,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, .trainerPic = TRAINER_PIC_BIRD_KEEPER, .trainerName = _("ALEX"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Alex } }, @@ -5802,9 +5802,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, .trainerPic = TRAINER_PIC_BIRD_KEEPER, .trainerName = _("BECK"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Beck } }, @@ -5816,9 +5816,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_NINJA_BOY, .trainerName = _("YASU"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x3, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Yasu } }, @@ -5830,9 +5830,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_NINJA_BOY, .trainerName = _("TAKASHI"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x3, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Takashi } }, @@ -5846,7 +5846,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("DIANNE"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x0, + .aiFlags = 0, .partySize = 2, .party = {.ItemCustomMoves = gTrainerParty_Dianne } }, @@ -5858,9 +5858,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_TUBER_F, .trainerName = _("JANI"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x0, + .aiFlags = 0, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Jani } }, @@ -5872,9 +5872,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_NINJA_BOY, .trainerName = _("LAO"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x0, + .aiFlags = 0, .partySize = 3, .party = {.NoItemCustomMoves = gTrainerParty_Lao1 } }, @@ -5886,9 +5886,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_NINJA_BOY, .trainerName = _("LUNG"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x0, + .aiFlags = 0, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Lung } }, @@ -5900,9 +5900,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_NINJA_BOY, .trainerName = _("LAO"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x0, + .aiFlags = 0, .partySize = 4, .party = {.NoItemCustomMoves = gTrainerParty_Lao2 } }, @@ -5914,9 +5914,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_NINJA_BOY, .trainerName = _("LAO"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x0, + .aiFlags = 0, .partySize = 4, .party = {.NoItemCustomMoves = gTrainerParty_Lao3 } }, @@ -5928,9 +5928,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_NINJA_BOY, .trainerName = _("LAO"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x0, + .aiFlags = 0, .partySize = 4, .party = {.NoItemCustomMoves = gTrainerParty_Lao4 } }, @@ -5942,9 +5942,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_NINJA_BOY, .trainerName = _("LAO"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x0, + .aiFlags = 0, .partySize = 4, .party = {.ItemCustomMoves = gTrainerParty_Lao5 } }, @@ -5956,9 +5956,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BATTLE_GIRL, .trainerName = _("JOCELYN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Jocelyn } }, @@ -5970,9 +5970,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BATTLE_GIRL, .trainerName = _("LAURA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Laura } }, @@ -5984,9 +5984,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BATTLE_GIRL, .trainerName = _("CYNDY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Cyndy1 } }, @@ -5998,9 +5998,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BATTLE_GIRL, .trainerName = _("CORA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Cora } }, @@ -6012,9 +6012,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BATTLE_GIRL, .trainerName = _("PAULA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Paula } }, @@ -6026,9 +6026,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BATTLE_GIRL, .trainerName = _("CYNDY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Cyndy2 } }, @@ -6040,9 +6040,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BATTLE_GIRL, .trainerName = _("CYNDY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Cyndy3 } }, @@ -6054,9 +6054,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BATTLE_GIRL, .trainerName = _("CYNDY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Cyndy4 } }, @@ -6068,9 +6068,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BATTLE_GIRL, .trainerName = _("CYNDY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Cyndy5 } }, @@ -6082,9 +6082,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_PARASOL_LADY, .trainerName = _("MADELINE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Madeline1 } }, @@ -6096,9 +6096,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_PARASOL_LADY, .trainerName = _("CLARISSA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Clarissa } }, @@ -6110,9 +6110,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_PARASOL_LADY, .trainerName = _("ANGELICA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Angelica } }, @@ -6124,9 +6124,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_PARASOL_LADY, .trainerName = _("MADELINE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Madeline2 } }, @@ -6138,9 +6138,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_PARASOL_LADY, .trainerName = _("MADELINE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Madeline3 } }, @@ -6152,9 +6152,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_PARASOL_LADY, .trainerName = _("MADELINE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_Madeline4 } }, @@ -6166,9 +6166,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_PARASOL_LADY, .trainerName = _("MADELINE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_Madeline5 } }, @@ -6180,9 +6180,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("BEVERLY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Beverly } }, @@ -6194,9 +6194,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("IMANI"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Imani } }, @@ -6208,9 +6208,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("KYLA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Kyla } }, @@ -6222,9 +6222,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("DENISE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Denise } }, @@ -6236,9 +6236,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("BETH"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Beth } }, @@ -6250,9 +6250,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("TARA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Tara } }, @@ -6264,9 +6264,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("MISSY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Missy } }, @@ -6278,9 +6278,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("ALICE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Alice } }, @@ -6292,9 +6292,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("JENNY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Jenny1 } }, @@ -6306,9 +6306,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("GRACE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grace } }, @@ -6320,9 +6320,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("TANYA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Tanya } }, @@ -6334,9 +6334,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("SHARON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Sharon } }, @@ -6348,9 +6348,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("NIKKI"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Nikki } }, @@ -6362,9 +6362,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("BRENDA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Brenda } }, @@ -6376,9 +6376,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("KATIE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Katie } }, @@ -6390,9 +6390,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("SUSIE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Susie } }, @@ -6404,9 +6404,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("KARA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Kara } }, @@ -6418,9 +6418,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("DANA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Dana } }, @@ -6432,9 +6432,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("SIENNA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Sienna } }, @@ -6446,9 +6446,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("DEBRA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Debra } }, @@ -6460,9 +6460,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("LINDA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Linda } }, @@ -6474,9 +6474,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("KAYLEE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Kaylee } }, @@ -6488,9 +6488,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("LAUREL"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Laurel } }, @@ -6502,9 +6502,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("CARLEE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Carlee } }, @@ -6516,9 +6516,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("JENNY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Jenny2 } }, @@ -6530,9 +6530,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("JENNY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Jenny3 } }, @@ -6544,9 +6544,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("JENNY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Jenny4 } }, @@ -6558,9 +6558,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("JENNY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Jenny5 } }, @@ -6572,9 +6572,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_PICNICKER, .trainerName = _("HEIDI"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_Heidi } }, @@ -6586,9 +6586,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_PICNICKER, .trainerName = _("BECKY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_Becky } }, @@ -6600,9 +6600,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_PICNICKER, .trainerName = _("CAROL"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Carol } }, @@ -6614,9 +6614,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_PICNICKER, .trainerName = _("NANCY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Nancy } }, @@ -6628,9 +6628,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_PICNICKER, .trainerName = _("MARTHA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Martha } }, @@ -6642,9 +6642,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_PICNICKER, .trainerName = _("DIANA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Diana1 } }, @@ -6656,9 +6656,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_M, .trainerName = _("CEDRIC"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Cedric } }, @@ -6670,9 +6670,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_PICNICKER, .trainerName = _("IRENE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Irene } }, @@ -6684,9 +6684,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_PICNICKER, .trainerName = _("DIANA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Diana2 } }, @@ -6698,9 +6698,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_PICNICKER, .trainerName = _("DIANA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Diana3 } }, @@ -6712,9 +6712,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_PICNICKER, .trainerName = _("DIANA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Diana4 } }, @@ -6726,9 +6726,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_PICNICKER, .trainerName = _("DIANA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Diana5 } }, @@ -6740,9 +6740,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_TWINS, .trainerName = _("AMY & LIV"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_AmyAndLiv1 } }, @@ -6754,9 +6754,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_TWINS, .trainerName = _("AMY & LIV"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_AmyAndLiv2 } }, @@ -6768,9 +6768,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_TWINS, .trainerName = _("GINA & MIA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_GinaAndMia1 } }, @@ -6782,9 +6782,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_TWINS, .trainerName = _("MIU & YUKI"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_MiuAndYuki } }, @@ -6796,9 +6796,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_TWINS, .trainerName = _("AMY & LIV"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_AmyAndLiv3 } }, @@ -6810,9 +6810,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_TWINS, .trainerName = _("GINA & MIA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_GinaAndMia2 } }, @@ -6824,9 +6824,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_TWINS, .trainerName = _("AMY & LIV"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_AmyAndLiv4 } }, @@ -6838,9 +6838,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_TWINS, .trainerName = _("AMY & LIV"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_AmyAndLiv5 } }, @@ -6852,9 +6852,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_TWINS, .trainerName = _("AMY & LIV"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_AmyAndLiv6 } }, @@ -6866,9 +6866,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_SAILOR, .trainerName = _("HUEY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Huey } }, @@ -6880,9 +6880,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_SAILOR, .trainerName = _("EDMOND"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Edmond } }, @@ -6894,9 +6894,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_SAILOR, .trainerName = _("ERNEST"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Ernest1 } }, @@ -6908,9 +6908,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_SAILOR, .trainerName = _("DWAYNE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Dwayne } }, @@ -6922,9 +6922,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_SAILOR, .trainerName = _("PHILLIP"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Phillip } }, @@ -6936,9 +6936,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_SAILOR, .trainerName = _("LEONARD"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Leonard } }, @@ -6950,9 +6950,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_SAILOR, .trainerName = _("DUNCAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Duncan } }, @@ -6964,9 +6964,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_SAILOR, .trainerName = _("ERNEST"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Ernest2 } }, @@ -6978,9 +6978,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_SAILOR, .trainerName = _("ERNEST"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Ernest3 } }, @@ -6992,9 +6992,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_SAILOR, .trainerName = _("ERNEST"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Ernest4 } }, @@ -7006,9 +7006,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_SAILOR, .trainerName = _("ERNEST"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Ernest5 } }, @@ -7020,9 +7020,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_HIKER, .trainerName = _("ELI"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Eli } }, @@ -7034,9 +7034,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_WINSTRATE_F, .trainerName = _("ANNIKA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.ItemCustomMoves = gTrainerParty_Annika } }, @@ -7050,7 +7050,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("JAZMYN"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Jazmyn } }, @@ -7062,9 +7062,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_NINJA_BOY, .trainerName = _("JONAS"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Jonas } }, @@ -7076,9 +7076,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_PARASOL_LADY, .trainerName = _("KAYLEY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Kayley } }, @@ -7090,9 +7090,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_EXPERT_M, .trainerName = _("AURON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Auron } }, @@ -7104,9 +7104,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_SAILOR, .trainerName = _("KELVIN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Kelvin } }, @@ -7120,7 +7120,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("MARLEY"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.ItemCustomMoves = gTrainerParty_Marley } }, @@ -7132,9 +7132,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BATTLE_GIRL, .trainerName = _("REYNA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Reyna } }, @@ -7146,9 +7146,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_SAILOR, .trainerName = _("HUDSON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Hudson } }, @@ -7160,9 +7160,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_EXPERT_M, .trainerName = _("CONOR"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Conor } }, @@ -7174,9 +7174,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_COLLECTOR, .trainerName = _("EDWIN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Edwin1 } }, @@ -7188,9 +7188,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_COLLECTOR, .trainerName = _("HECTOR"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Hector } }, @@ -7202,9 +7202,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_ADMIN, .trainerName = _("TABITHA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Tabitha1 } }, @@ -7216,9 +7216,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_COLLECTOR, .trainerName = _("EDWIN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Edwin2 } }, @@ -7230,9 +7230,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_COLLECTOR, .trainerName = _("EDWIN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Edwin3 } }, @@ -7244,9 +7244,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_COLLECTOR, .trainerName = _("EDWIN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Edwin4 } }, @@ -7258,9 +7258,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_COLLECTOR, .trainerName = _("EDWIN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Edwin5 } }, @@ -7274,7 +7274,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WALLY"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 5, .party = {.NoItemCustomMoves = gTrainerParty_Wally1 } }, @@ -7286,9 +7286,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_BRENDAN, .trainerName = _("BRENDAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Brendan1 } }, @@ -7300,9 +7300,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_BRENDAN, .trainerName = _("BRENDAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Brendan2 } }, @@ -7314,9 +7314,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_BRENDAN, .trainerName = _("BRENDAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Brendan3 } }, @@ -7328,9 +7328,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_BRENDAN, .trainerName = _("BRENDAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0xb, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Brendan4 } }, @@ -7342,9 +7342,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_BRENDAN, .trainerName = _("BRENDAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Brendan5 } }, @@ -7356,9 +7356,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_BRENDAN, .trainerName = _("BRENDAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Brendan6 } }, @@ -7370,9 +7370,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_BRENDAN, .trainerName = _("BRENDAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Brendan7 } }, @@ -7384,9 +7384,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_BRENDAN, .trainerName = _("BRENDAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Brendan8 } }, @@ -7398,9 +7398,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_BRENDAN, .trainerName = _("BRENDAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Brendan9 } }, @@ -7412,9 +7412,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_MAY, .trainerName = _("MAY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_May1 } }, @@ -7426,9 +7426,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_MAY, .trainerName = _("MAY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_May2 } }, @@ -7440,9 +7440,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_MAY, .trainerName = _("MAY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_May3 } }, @@ -7454,9 +7454,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_MAY, .trainerName = _("MAY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_May4 } }, @@ -7468,9 +7468,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_MAY, .trainerName = _("MAY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_May5 } }, @@ -7482,9 +7482,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_MAY, .trainerName = _("MAY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_May6 } }, @@ -7496,9 +7496,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_MAY, .trainerName = _("MAY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_May7 } }, @@ -7510,9 +7510,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_MAY, .trainerName = _("MAY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_May8 } }, @@ -7524,9 +7524,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_MAY, .trainerName = _("MAY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_May9 } }, @@ -7538,9 +7538,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M, .trainerName = _("ISAAC"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 6, .party = {.NoItemDefaultMoves = gTrainerParty_Isaac1 } }, @@ -7552,9 +7552,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_BUG_CATCHER, .trainerName = _("DAVIS"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Davis } }, @@ -7566,9 +7566,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, .trainerPic = TRAINER_PIC_COOL_TRAINER_M, .trainerName = _("MITCHELL"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_Mitchell } }, @@ -7580,9 +7580,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M, .trainerName = _("ISAAC"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 6, .party = {.NoItemDefaultMoves = gTrainerParty_Isaac2 } }, @@ -7594,9 +7594,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M, .trainerName = _("ISAAC"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 6, .party = {.NoItemDefaultMoves = gTrainerParty_Isaac3 } }, @@ -7608,9 +7608,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M, .trainerName = _("ISAAC"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 6, .party = {.NoItemDefaultMoves = gTrainerParty_Isaac4 } }, @@ -7622,9 +7622,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M, .trainerName = _("ISAAC"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 6, .party = {.NoItemDefaultMoves = gTrainerParty_Isaac5 } }, @@ -7636,9 +7636,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, .trainerName = _("LYDIA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 6, .party = {.NoItemDefaultMoves = gTrainerParty_Lydia1 } }, @@ -7652,7 +7652,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("HALLE"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Halle } }, @@ -7664,9 +7664,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_RUIN_MANIAC, .trainerName = _("GARRISON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Garrison } }, @@ -7678,9 +7678,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, .trainerName = _("LYDIA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 6, .party = {.NoItemDefaultMoves = gTrainerParty_Lydia2 } }, @@ -7692,9 +7692,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, .trainerName = _("LYDIA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 6, .party = {.NoItemDefaultMoves = gTrainerParty_Lydia3 } }, @@ -7706,9 +7706,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, .trainerName = _("LYDIA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 6, .party = {.NoItemDefaultMoves = gTrainerParty_Lydia4 } }, @@ -7720,9 +7720,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, .trainerName = _("LYDIA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 6, .party = {.NoItemDefaultMoves = gTrainerParty_Lydia5 } }, @@ -7736,7 +7736,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("JACKSON"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Jackson1 } }, @@ -7750,7 +7750,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("LORENZO"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Lorenzo } }, @@ -7764,7 +7764,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("SEBASTIAN"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Sebastian } }, @@ -7778,7 +7778,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("JACKSON"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0xb, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Jackson2 } }, @@ -7792,7 +7792,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("JACKSON"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Jackson3 } }, @@ -7806,7 +7806,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("JACKSON"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0xb, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Jackson4 } }, @@ -7820,7 +7820,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("JACKSON"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Jackson5 } }, @@ -7834,7 +7834,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("CATHERINE"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0xb, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Catherine1 } }, @@ -7848,7 +7848,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("JENNA"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0xb, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Jenna } }, @@ -7862,7 +7862,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("SOPHIA"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Sophia } }, @@ -7876,7 +7876,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("CATHERINE"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0xb, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Catherine2 } }, @@ -7890,7 +7890,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("CATHERINE"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Catherine3 } }, @@ -7904,7 +7904,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("CATHERINE"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0xb, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Catherine4 } }, @@ -7918,7 +7918,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("CATHERINE"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Catherine5 } }, @@ -7930,9 +7930,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, .trainerName = _("JULIO"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Julio } }, @@ -7944,9 +7944,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt27 } }, @@ -7958,9 +7958,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt28 } }, @@ -7972,9 +7972,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt29 } }, @@ -7986,9 +7986,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt30 } }, @@ -8000,9 +8000,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_HIKER, .trainerName = _("MARC"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Marc } }, @@ -8014,9 +8014,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_SAILOR, .trainerName = _("BRENDEN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Brenden } }, @@ -8028,9 +8028,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BATTLE_GIRL, .trainerName = _("LILITH"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Lilith } }, @@ -8042,9 +8042,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BLACK_BELT, .trainerName = _("CRISTIAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Cristian } }, @@ -8056,9 +8056,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_HEX_MANIAC, .trainerName = _("SYLVIA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Sylvia } }, @@ -8070,9 +8070,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("LEONARDO"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Leonardo } }, @@ -8086,7 +8086,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("ATHENA"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.ItemCustomMoves = gTrainerParty_Athena } }, @@ -8098,9 +8098,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("HARRISON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Harrison } }, @@ -8112,9 +8112,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt31 } }, @@ -8126,9 +8126,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("CLARENCE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Clarence } }, @@ -8140,9 +8140,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_F, .trainerName = _("TERRY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Terry } }, @@ -8154,9 +8154,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, .trainerPic = TRAINER_PIC_GENTLEMAN, .trainerName = _("NATE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Nate } }, @@ -8168,9 +8168,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_HEX_MANIAC, .trainerName = _("KATHLEEN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Kathleen } }, @@ -8182,9 +8182,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, .trainerPic = TRAINER_PIC_GENTLEMAN, .trainerName = _("CLIFFORD"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Clifford } }, @@ -8196,9 +8196,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_M, .trainerName = _("NICHOLAS"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Nicholas } }, @@ -8210,9 +8210,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_GRUNT_F, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt32 } }, @@ -8224,9 +8224,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt33 } }, @@ -8238,9 +8238,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt34 } }, @@ -8252,9 +8252,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt35 } }, @@ -8266,9 +8266,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt36 } }, @@ -8280,9 +8280,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_F, .trainerName = _("MACEY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Macey } }, @@ -8294,9 +8294,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_BRENDAN, .trainerName = _("BRENDAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Brendan10 } }, @@ -8308,9 +8308,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_BRENDAN, .trainerName = _("BRENDAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Brendan11 } }, @@ -8322,9 +8322,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_EXPERT_M, .trainerName = _("PAXTON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Paxton } }, @@ -8336,9 +8336,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, .trainerName = _("ISABELLA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Isabella } }, @@ -8350,9 +8350,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt37 } }, @@ -8364,9 +8364,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_ADMIN, .trainerName = _("TABITHA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 4, .party = {.NoItemDefaultMoves = gTrainerParty_Tabitha2 } }, @@ -8380,7 +8380,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("JONATHAN"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0xb, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Jonathan } }, @@ -8392,9 +8392,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_BRENDAN, .trainerName = _("BRENDAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Brendan12 } }, @@ -8406,9 +8406,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_MAY, .trainerName = _("MAY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0xb, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_May10 } }, @@ -8422,7 +8422,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("MAXIE"), .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Maxie1 } }, @@ -8436,7 +8436,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("MAXIE"), .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Maxie2 } }, @@ -8448,9 +8448,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_LASS, .trainerName = _("TIANA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Tiana } }, @@ -8462,9 +8462,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_LASS, .trainerName = _("HALEY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Haley1 } }, @@ -8476,9 +8476,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_LASS, .trainerName = _("JANICE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Janice } }, @@ -8490,9 +8490,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_LASS, .trainerName = _("VIVI"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Vivi } }, @@ -8504,9 +8504,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_LASS, .trainerName = _("HALEY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Haley2 } }, @@ -8518,9 +8518,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_LASS, .trainerName = _("HALEY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Haley3 } }, @@ -8532,9 +8532,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_LASS, .trainerName = _("HALEY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Haley4 } }, @@ -8546,9 +8546,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_LASS, .trainerName = _("HALEY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Haley5 } }, @@ -8560,9 +8560,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_LASS, .trainerName = _("SALLY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Sally } }, @@ -8574,9 +8574,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_LASS, .trainerName = _("ROBIN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Robin } }, @@ -8588,9 +8588,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_LASS, .trainerName = _("ANDREA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Andrea } }, @@ -8602,9 +8602,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_LASS, .trainerName = _("CRISSY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Crissy } }, @@ -8616,9 +8616,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_BUG_CATCHER, .trainerName = _("RICK"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Rick } }, @@ -8630,9 +8630,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_BUG_CATCHER, .trainerName = _("LYLE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 4, .party = {.NoItemDefaultMoves = gTrainerParty_Lyle } }, @@ -8644,9 +8644,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_BUG_CATCHER, .trainerName = _("JOSE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Jose } }, @@ -8658,9 +8658,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_BUG_CATCHER, .trainerName = _("DOUG"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Doug } }, @@ -8672,9 +8672,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_BUG_CATCHER, .trainerName = _("GREG"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Greg } }, @@ -8686,9 +8686,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_BUG_CATCHER, .trainerName = _("KENT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Kent } }, @@ -8700,9 +8700,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_BUG_CATCHER, .trainerName = _("JAMES"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_James1 } }, @@ -8714,9 +8714,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_BUG_CATCHER, .trainerName = _("JAMES"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_James2 } }, @@ -8728,9 +8728,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_BUG_CATCHER, .trainerName = _("JAMES"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_James3 } }, @@ -8742,9 +8742,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_BUG_CATCHER, .trainerName = _("JAMES"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_James4 } }, @@ -8756,9 +8756,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_BUG_CATCHER, .trainerName = _("JAMES"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 4, .party = {.NoItemDefaultMoves = gTrainerParty_James5 } }, @@ -8770,9 +8770,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_HIKER, .trainerName = _("BRICE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Brice } }, @@ -8784,9 +8784,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_HIKER, .trainerName = _("TRENT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Trent1 } }, @@ -8798,9 +8798,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_HIKER, .trainerName = _("LENNY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Lenny } }, @@ -8812,9 +8812,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_HIKER, .trainerName = _("LUCAS"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Lucas1 } }, @@ -8826,9 +8826,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_HIKER, .trainerName = _("ALAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Alan } }, @@ -8840,9 +8840,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_HIKER, .trainerName = _("CLARK"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Clark } }, @@ -8854,9 +8854,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_HIKER, .trainerName = _("ERIC"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Eric } }, @@ -8868,9 +8868,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_HIKER, .trainerName = _("LUCAS"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Lucas2 } }, @@ -8882,9 +8882,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_HIKER, .trainerName = _("MIKE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_Mike1 } }, @@ -8896,9 +8896,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_HIKER, .trainerName = _("MIKE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Mike2 } }, @@ -8910,9 +8910,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_HIKER, .trainerName = _("TRENT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 4, .party = {.NoItemDefaultMoves = gTrainerParty_Trent2 } }, @@ -8924,9 +8924,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_HIKER, .trainerName = _("TRENT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 4, .party = {.NoItemDefaultMoves = gTrainerParty_Trent3 } }, @@ -8938,9 +8938,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_HIKER, .trainerName = _("TRENT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 4, .party = {.NoItemDefaultMoves = gTrainerParty_Trent4 } }, @@ -8952,9 +8952,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_HIKER, .trainerName = _("TRENT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 4, .party = {.NoItemDefaultMoves = gTrainerParty_Trent5 } }, @@ -8966,9 +8966,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_YOUNG_COUPLE, .trainerName = _("DEZ & LUKE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_DezAndLuke } }, @@ -8980,9 +8980,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_YOUNG_COUPLE, .trainerName = _("LEA & JED"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_LeaAndJed } }, @@ -8994,9 +8994,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_YOUNG_COUPLE, .trainerName = _("KIRA & DAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_KiraAndDan1 } }, @@ -9008,9 +9008,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_YOUNG_COUPLE, .trainerName = _("KIRA & DAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_KiraAndDan2 } }, @@ -9022,9 +9022,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_YOUNG_COUPLE, .trainerName = _("KIRA & DAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_KiraAndDan3 } }, @@ -9036,9 +9036,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_YOUNG_COUPLE, .trainerName = _("KIRA & DAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_KiraAndDan4 } }, @@ -9050,9 +9050,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_YOUNG_COUPLE, .trainerName = _("KIRA & DAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_KiraAndDan5 } }, @@ -9064,9 +9064,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_BEAUTY, .trainerName = _("JOHANNA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Johanna } }, @@ -9080,7 +9080,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("GERALD"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Gerald } }, @@ -9092,9 +9092,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BATTLE_GIRL, .trainerName = _("VIVIAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_Vivian } }, @@ -9106,9 +9106,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BATTLE_GIRL, .trainerName = _("DANIELLE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Danielle } }, @@ -9120,9 +9120,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_NINJA_BOY, .trainerName = _("HIDEO"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x3, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_Hideo } }, @@ -9134,9 +9134,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_NINJA_BOY, .trainerName = _("KEIGO"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x3, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_Keigo } }, @@ -9148,9 +9148,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_NINJA_BOY, .trainerName = _("RILEY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x3, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_Riley } }, @@ -9162,9 +9162,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_CAMPER, .trainerName = _("FLINT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Flint } }, @@ -9176,9 +9176,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_PICNICKER, .trainerName = _("ASHLEY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Ashley } }, @@ -9190,9 +9190,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_WALLY, .trainerName = _("WALLY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Wally2 } }, @@ -9206,7 +9206,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WALLY"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 5, .party = {.NoItemCustomMoves = gTrainerParty_Wally3 } }, @@ -9220,7 +9220,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WALLY"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 5, .party = {.NoItemCustomMoves = gTrainerParty_Wally4 } }, @@ -9234,7 +9234,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WALLY"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 5, .party = {.NoItemCustomMoves = gTrainerParty_Wally5 } }, @@ -9248,7 +9248,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WALLY"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 5, .party = {.NoItemCustomMoves = gTrainerParty_Wally6 } }, @@ -9260,9 +9260,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_BRENDAN, .trainerName = _("BRENDAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 4, .party = {.NoItemDefaultMoves = gTrainerParty_Brendan13 } }, @@ -9274,9 +9274,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_BRENDAN, .trainerName = _("BRENDAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 4, .party = {.NoItemDefaultMoves = gTrainerParty_Brendan14 } }, @@ -9288,9 +9288,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_BRENDAN, .trainerName = _("BRENDAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 4, .party = {.NoItemDefaultMoves = gTrainerParty_Brendan15 } }, @@ -9302,9 +9302,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_MAY, .trainerName = _("MAY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 4, .party = {.NoItemDefaultMoves = gTrainerParty_May11 } }, @@ -9316,9 +9316,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_MAY, .trainerName = _("MAY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 4, .party = {.NoItemDefaultMoves = gTrainerParty_May12 } }, @@ -9330,9 +9330,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_MAY, .trainerName = _("MAY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 4, .party = {.NoItemDefaultMoves = gTrainerParty_May13 } }, @@ -9344,9 +9344,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_FISHERMAN, .trainerName = _("JONAH"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Jonah } }, @@ -9358,9 +9358,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_FISHERMAN, .trainerName = _("HENRY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Henry } }, @@ -9372,9 +9372,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_FISHERMAN, .trainerName = _("ROGER"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Roger } }, @@ -9388,7 +9388,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("ALEXA"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Alexa } }, @@ -9402,7 +9402,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("RUBEN"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Ruben } }, @@ -9414,9 +9414,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BLACK_BELT, .trainerName = _("KOJI"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Koji1 } }, @@ -9428,9 +9428,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_FISHERMAN, .trainerName = _("WAYNE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Wayne } }, @@ -9442,9 +9442,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, .trainerPic = TRAINER_PIC_BIRD_KEEPER, .trainerName = _("AIDAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Aidan } }, @@ -9456,9 +9456,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("REED"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Reed } }, @@ -9470,9 +9470,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("TISHA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Tisha } }, @@ -9484,9 +9484,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_TWINS, .trainerName = _("TORI & TIA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_ToriAndTia } }, @@ -9498,9 +9498,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_SR_AND_JR, .trainerName = _("KIM & IRIS"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_KimAndIris } }, @@ -9512,9 +9512,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_SR_AND_JR, .trainerName = _("TYRA & IVY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_TyraAndIvy } }, @@ -9526,9 +9526,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_YOUNG_COUPLE, .trainerName = _("MEL & PAUL"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_MelAndPaul } }, @@ -9540,9 +9540,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_OLD_COUPLE, .trainerName = _("JOHN & JAY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_JohnAndJay1 } }, @@ -9554,9 +9554,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_OLD_COUPLE, .trainerName = _("JOHN & JAY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_JohnAndJay2 } }, @@ -9568,9 +9568,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_OLD_COUPLE, .trainerName = _("JOHN & JAY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_JohnAndJay3 } }, @@ -9582,9 +9582,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_OLD_COUPLE, .trainerName = _("JOHN & JAY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0xb, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_JohnAndJay4 } }, @@ -9596,9 +9596,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_OLD_COUPLE, .trainerName = _("JOHN & JAY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemCustomMoves = gTrainerParty_JohnAndJay5 } }, @@ -9610,9 +9610,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SIS_AND_BRO, .trainerName = _("RELI & IAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_ReliAndIan } }, @@ -9624,9 +9624,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SIS_AND_BRO, .trainerName = _("LILA & ROY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_LilaAndRoy1 } }, @@ -9638,9 +9638,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SIS_AND_BRO, .trainerName = _("LILA & ROY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_LilaAndRoy2 } }, @@ -9652,9 +9652,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SIS_AND_BRO, .trainerName = _("LILA & ROY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_LilaAndRoy3 } }, @@ -9666,9 +9666,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SIS_AND_BRO, .trainerName = _("LILA & ROY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_LilaAndRoy4 } }, @@ -9680,9 +9680,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SIS_AND_BRO, .trainerName = _("LILA & ROY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_LilaAndRoy5 } }, @@ -9694,9 +9694,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SIS_AND_BRO, .trainerName = _("LISA & RAY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = TRUE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_LisaAndRay } }, @@ -9708,9 +9708,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_FISHERMAN, .trainerName = _("CHRIS"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 4, .party = {.NoItemDefaultMoves = gTrainerParty_Chris } }, @@ -9722,9 +9722,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, .trainerPic = TRAINER_PIC_RICH_BOY, .trainerName = _("DAWSON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.ItemDefaultMoves = gTrainerParty_Dawson } }, @@ -9738,7 +9738,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("SARAH"), .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.ItemDefaultMoves = gTrainerParty_Sarah } }, @@ -9750,9 +9750,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_FISHERMAN, .trainerName = _("DARIAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Darian } }, @@ -9764,9 +9764,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_TUBER_F, .trainerName = _("HAILEY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Hailey } }, @@ -9778,9 +9778,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_TUBER_M, .trainerName = _("CHANDLER"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Chandler } }, @@ -9792,9 +9792,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, .trainerPic = TRAINER_PIC_WINSTRATE_M, .trainerName = _("KALEB"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.ItemDefaultMoves = gTrainerParty_Kaleb } }, @@ -9806,9 +9806,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_GUITARIST, .trainerName = _("JOSEPH"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Joseph } }, @@ -9820,9 +9820,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, .trainerName = _("ALYSSA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Alyssa } }, @@ -9834,9 +9834,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_GUITARIST, .trainerName = _("MARCOS"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Marcos } }, @@ -9848,9 +9848,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BLACK_BELT, .trainerName = _("RHETT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Rhett } }, @@ -9862,9 +9862,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_CAMPER, .trainerName = _("TYRON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Tyron } }, @@ -9876,9 +9876,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_AROMA_LADY, .trainerName = _("CELINA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Celina } }, @@ -9890,9 +9890,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_PICNICKER, .trainerName = _("BIANCA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Bianca } }, @@ -9904,9 +9904,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_KINDLER, .trainerName = _("HAYDEN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Hayden } }, @@ -9918,9 +9918,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_PICNICKER, .trainerName = _("SOPHIE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Sophie } }, @@ -9932,9 +9932,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, .trainerPic = TRAINER_PIC_BIRD_KEEPER, .trainerName = _("COBY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Coby } }, @@ -9946,9 +9946,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_CAMPER, .trainerName = _("LAWRENCE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Lawrence } }, @@ -9960,9 +9960,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_POKEMANIAC, .trainerName = _("WYATT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Wyatt } }, @@ -9974,9 +9974,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_PICNICKER, .trainerName = _("ANGELINA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Angelina } }, @@ -9988,9 +9988,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_FISHERMAN, .trainerName = _("KAI"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Kai } }, @@ -10002,9 +10002,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_PICNICKER, .trainerName = _("CHARLOTTE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Charlotte } }, @@ -10016,9 +10016,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_YOUNGSTER, .trainerName = _("DEANDRE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Deandre } }, @@ -10030,9 +10030,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt38 } }, @@ -10044,9 +10044,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt39 } }, @@ -10058,9 +10058,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt40 } }, @@ -10072,9 +10072,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt41 } }, @@ -10086,9 +10086,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt42 } }, @@ -10100,9 +10100,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt43 } }, @@ -10114,9 +10114,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt44 } }, @@ -10128,9 +10128,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt45 } }, @@ -10142,9 +10142,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt46 } }, @@ -10156,9 +10156,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt47 } }, @@ -10170,9 +10170,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt48 } }, @@ -10184,9 +10184,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt49 } }, @@ -10198,9 +10198,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt50 } }, @@ -10212,9 +10212,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_GRUNT_F, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt51 } }, @@ -10226,9 +10226,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_GRUNT_F, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt52 } }, @@ -10240,9 +10240,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_GRUNT_F, .trainerName = _("GRUNT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Grunt53 } }, @@ -10254,9 +10254,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_ADMIN, .trainerName = _("TABITHA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 4, .party = {.NoItemDefaultMoves = gTrainerParty_Tabitha3 } }, @@ -10270,7 +10270,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("DARCY"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Darcy } }, @@ -10282,9 +10282,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, .trainerPic = TRAINER_PIC_MAGMA_LEADER_MAXIE, .trainerName = _("MAXIE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Maxie3 } }, @@ -10296,9 +10296,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_M, .trainerName = _("PETE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Pete } }, @@ -10310,9 +10310,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMER_F, .trainerName = _("ISABELLE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Isabelle } }, @@ -10324,9 +10324,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_RUIN_MANIAC, .trainerName = _("ANDRES"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Andres1 } }, @@ -10338,9 +10338,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, .trainerPic = TRAINER_PIC_BIRD_KEEPER, .trainerName = _("JOSUE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Josue } }, @@ -10352,9 +10352,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, .trainerName = _("CAMRON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Camron } }, @@ -10366,9 +10366,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_SAILOR, .trainerName = _("CORY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Cory1 } }, @@ -10382,7 +10382,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("CAROLINA"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Carolina } }, @@ -10394,9 +10394,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, .trainerPic = TRAINER_PIC_BIRD_KEEPER, .trainerName = _("ELIJAH"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Elijah } }, @@ -10408,9 +10408,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, .trainerPic = TRAINER_PIC_PICNICKER, .trainerName = _("CELIA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Celia } }, @@ -10422,9 +10422,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_RUIN_MANIAC, .trainerName = _("BRYAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Bryan } }, @@ -10436,9 +10436,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_CAMPER, .trainerName = _("BRANDEN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Branden } }, @@ -10450,9 +10450,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_KINDLER, .trainerName = _("BRYANT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Bryant } }, @@ -10464,9 +10464,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_AROMA_LADY, .trainerName = _("SHAYLA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Shayla } }, @@ -10478,9 +10478,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, .trainerName = _("KYRA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Kyra } }, @@ -10492,9 +10492,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_NINJA_BOY, .trainerName = _("JAIDEN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Jaiden } }, @@ -10506,9 +10506,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_F, .trainerName = _("ALIX"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Alix } }, @@ -10520,9 +10520,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BATTLE_GIRL, .trainerName = _("HELENE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Helene } }, @@ -10534,9 +10534,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_F, .trainerName = _("MARLENE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Marlene } }, @@ -10548,9 +10548,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_HIKER, .trainerName = _("DEVAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Devan } }, @@ -10562,9 +10562,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_YOUNGSTER, .trainerName = _("JOHNSON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Johnson } }, @@ -10576,9 +10576,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, .trainerName = _("MELINA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Melina } }, @@ -10590,9 +10590,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_F, .trainerName = _("BRANDI"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Brandi } }, @@ -10604,9 +10604,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BATTLE_GIRL, .trainerName = _("AISHA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Aisha } }, @@ -10620,7 +10620,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("MAKAYLA"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Makayla } }, @@ -10632,9 +10632,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_GUITARIST, .trainerName = _("FABIAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Fabian } }, @@ -10646,9 +10646,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_KINDLER, .trainerName = _("DAYTON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Dayton } }, @@ -10660,9 +10660,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_PARASOL_LADY, .trainerName = _("RACHEL"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Rachel } }, @@ -10676,7 +10676,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("LEONEL"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemCustomMoves = gTrainerParty_Leonel } }, @@ -10688,9 +10688,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BATTLE_GIRL, .trainerName = _("CALLIE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Callie } }, @@ -10702,9 +10702,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_BUG_MANIAC, .trainerName = _("CALE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Cale } }, @@ -10716,9 +10716,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M, .trainerName = _("MYLES"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 6, .party = {.NoItemDefaultMoves = gTrainerParty_Myles } }, @@ -10730,9 +10730,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, .trainerName = _("PAT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 6, .party = {.NoItemDefaultMoves = gTrainerParty_Pat } }, @@ -10746,7 +10746,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("CRISTIN"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Cristin1 } }, @@ -10758,9 +10758,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_MAY, .trainerName = _("MAY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_May14 } }, @@ -10772,9 +10772,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_MAY, .trainerName = _("MAY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_May15 } }, @@ -10788,7 +10788,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("ROXANNE"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 4, .party = {.ItemCustomMoves = gTrainerParty_Roxanne2 } }, @@ -10802,7 +10802,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("ROXANNE"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 5, .party = {.ItemCustomMoves = gTrainerParty_Roxanne3 } }, @@ -10816,7 +10816,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("ROXANNE"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 5, .party = {.ItemCustomMoves = gTrainerParty_Roxanne4 } }, @@ -10830,7 +10830,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("ROXANNE"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 6, .party = {.ItemCustomMoves = gTrainerParty_Roxanne5 } }, @@ -10844,7 +10844,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("BRAWLY"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 4, .party = {.ItemCustomMoves = gTrainerParty_Brawly2 } }, @@ -10858,7 +10858,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("BRAWLY"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 4, .party = {.ItemCustomMoves = gTrainerParty_Brawly3 } }, @@ -10872,7 +10872,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("BRAWLY"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 5, .party = {.ItemCustomMoves = gTrainerParty_Brawly4 } }, @@ -10886,7 +10886,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("BRAWLY"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 6, .party = {.ItemCustomMoves = gTrainerParty_Brawly5 } }, @@ -10900,7 +10900,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WATTSON"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 4, .party = {.ItemCustomMoves = gTrainerParty_Wattson2 } }, @@ -10914,7 +10914,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WATTSON"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 5, .party = {.ItemCustomMoves = gTrainerParty_Wattson3 } }, @@ -10928,7 +10928,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WATTSON"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 5, .party = {.ItemCustomMoves = gTrainerParty_Wattson4 } }, @@ -10942,7 +10942,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WATTSON"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 6, .party = {.ItemCustomMoves = gTrainerParty_Wattson5 } }, @@ -10956,7 +10956,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("FLANNERY"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 4, .party = {.ItemCustomMoves = gTrainerParty_Flannery2 } }, @@ -10970,7 +10970,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("FLANNERY"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 5, .party = {.ItemCustomMoves = gTrainerParty_Flannery3 } }, @@ -10984,7 +10984,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("FLANNERY"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 6, .party = {.ItemCustomMoves = gTrainerParty_Flannery4 } }, @@ -10998,7 +10998,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("FLANNERY"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 6, .party = {.ItemCustomMoves = gTrainerParty_Flannery5 } }, @@ -11012,7 +11012,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("NORMAN"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 4, .party = {.ItemCustomMoves = gTrainerParty_Norman2 } }, @@ -11026,7 +11026,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("NORMAN"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 5, .party = {.ItemCustomMoves = gTrainerParty_Norman3 } }, @@ -11040,7 +11040,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("NORMAN"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 5, .party = {.ItemCustomMoves = gTrainerParty_Norman4 } }, @@ -11054,7 +11054,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("NORMAN"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 6, .party = {.ItemCustomMoves = gTrainerParty_Norman5 } }, @@ -11068,7 +11068,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WINONA"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x17, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY | AI_SCRIPT_RISKY, .partySize = 5, .party = {.ItemCustomMoves = gTrainerParty_Winona2 } }, @@ -11082,7 +11082,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WINONA"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x17, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY | AI_SCRIPT_RISKY, .partySize = 6, .party = {.ItemCustomMoves = gTrainerParty_Winona3 } }, @@ -11096,7 +11096,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WINONA"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x17, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY | AI_SCRIPT_RISKY, .partySize = 6, .party = {.ItemCustomMoves = gTrainerParty_Winona4 } }, @@ -11110,7 +11110,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("WINONA"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x17, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY | AI_SCRIPT_RISKY, .partySize = 6, .party = {.ItemCustomMoves = gTrainerParty_Winona5 } }, @@ -11124,7 +11124,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("TATE&LIZA"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 5, .party = {.ItemCustomMoves = gTrainerParty_TateAndLiza2 } }, @@ -11138,7 +11138,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("TATE&LIZA"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 6, .party = {.ItemCustomMoves = gTrainerParty_TateAndLiza3 } }, @@ -11152,7 +11152,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("TATE&LIZA"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 6, .party = {.ItemCustomMoves = gTrainerParty_TateAndLiza4 } }, @@ -11166,7 +11166,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("TATE&LIZA"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 6, .party = {.ItemCustomMoves = gTrainerParty_TateAndLiza5 } }, @@ -11180,7 +11180,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("JUAN"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 5, .party = {.ItemCustomMoves = gTrainerParty_Juan2 } }, @@ -11194,7 +11194,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("JUAN"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 5, .party = {.ItemCustomMoves = gTrainerParty_Juan3 } }, @@ -11208,7 +11208,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("JUAN"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 6, .party = {.ItemCustomMoves = gTrainerParty_Juan4 } }, @@ -11222,7 +11222,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("JUAN"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, .doubleBattle = TRUE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 6, .party = {.ItemCustomMoves = gTrainerParty_Juan5 } }, @@ -11234,9 +11234,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, .trainerPic = TRAINER_PIC_BUG_MANIAC, .trainerName = _("ANGELO"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.ItemCustomMoves = gTrainerParty_Angelo } }, @@ -11248,9 +11248,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, .trainerPic = TRAINER_PIC_BIRD_KEEPER, .trainerName = _("DARIUS"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Darius } }, @@ -11264,7 +11264,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("STEVEN"), .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 6, .party = {.ItemCustomMoves = gTrainerParty_Steven } }, @@ -11276,9 +11276,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_SALON_MAIDEN_ANABEL, .trainerName = _("ANABEL"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Anabel } }, @@ -11290,9 +11290,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_DOME_ACE_TUCKER, .trainerName = _("TUCKER"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Tucker } }, @@ -11304,9 +11304,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_PALACE_MAVEN_SPENSER, .trainerName = _("SPENSER"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Spenser } }, @@ -11318,9 +11318,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_ARENA_TYCOON_GRETA, .trainerName = _("GRETA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Greta } }, @@ -11332,9 +11332,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_FACTORY_HEAD_NOLAND, .trainerName = _("NOLAND"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Noland } }, @@ -11346,9 +11346,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_PIKE_QUEEN_LUCY, .trainerName = _("LUCY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Lucy } }, @@ -11360,9 +11360,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_PYRAMID_KING_BRANDON, .trainerName = _("BRANDON"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Brandon } }, @@ -11374,9 +11374,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_RUIN_MANIAC, .trainerName = _("ANDRES"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Andres2 } }, @@ -11388,9 +11388,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_RUIN_MANIAC, .trainerName = _("ANDRES"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Andres3 } }, @@ -11402,9 +11402,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_RUIN_MANIAC, .trainerName = _("ANDRES"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Andres4 } }, @@ -11416,9 +11416,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_RUIN_MANIAC, .trainerName = _("ANDRES"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Andres5 } }, @@ -11430,9 +11430,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_SAILOR, .trainerName = _("CORY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Cory2 } }, @@ -11444,9 +11444,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_SAILOR, .trainerName = _("CORY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Cory3 } }, @@ -11458,9 +11458,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_SAILOR, .trainerName = _("CORY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Cory4 } }, @@ -11472,9 +11472,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_SAILOR, .trainerName = _("CORY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Cory5 } }, @@ -11486,9 +11486,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, .trainerName = _("PABLO"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Pablo2 } }, @@ -11500,9 +11500,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, .trainerName = _("PABLO"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Pablo3 } }, @@ -11514,9 +11514,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, .trainerName = _("PABLO"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Pablo4 } }, @@ -11528,9 +11528,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, .trainerName = _("PABLO"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Pablo5 } }, @@ -11542,9 +11542,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BLACK_BELT, .trainerName = _("KOJI"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Koji2 } }, @@ -11556,9 +11556,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BLACK_BELT, .trainerName = _("KOJI"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Koji3 } }, @@ -11570,9 +11570,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BLACK_BELT, .trainerName = _("KOJI"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Koji4 } }, @@ -11584,9 +11584,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_BLACK_BELT, .trainerName = _("KOJI"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Koji5 } }, @@ -11600,7 +11600,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("CRISTIN"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Cristin2 } }, @@ -11614,7 +11614,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("CRISTIN"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Cristin3 } }, @@ -11628,7 +11628,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("CRISTIN"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Cristin4 } }, @@ -11642,7 +11642,7 @@ const struct Trainer gTrainers[] = { .trainerName = _("CRISTIN"), .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Cristin5 } }, @@ -11654,9 +11654,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_GUITARIST, .trainerName = _("FERNANDO"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Fernando2 } }, @@ -11668,9 +11668,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_GUITARIST, .trainerName = _("FERNANDO"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Fernando3 } }, @@ -11682,9 +11682,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_GUITARIST, .trainerName = _("FERNANDO"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Fernando4 } }, @@ -11696,9 +11696,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_GUITARIST, .trainerName = _("FERNANDO"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Fernando5 } }, @@ -11710,9 +11710,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_HIKER, .trainerName = _("SAWYER"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Sawyer2 } }, @@ -11724,9 +11724,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_HIKER, .trainerName = _("SAWYER"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Sawyer3 } }, @@ -11738,9 +11738,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_HIKER, .trainerName = _("SAWYER"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Sawyer4 } }, @@ -11752,9 +11752,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, .trainerPic = TRAINER_PIC_HIKER, .trainerName = _("SAWYER"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x7, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Sawyer5 } }, @@ -11766,9 +11766,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, .trainerName = _("GABRIELLE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 6, .party = {.NoItemDefaultMoves = gTrainerParty_Gabrielle2 } }, @@ -11780,9 +11780,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, .trainerName = _("GABRIELLE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 6, .party = {.NoItemDefaultMoves = gTrainerParty_Gabrielle3 } }, @@ -11794,9 +11794,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, .trainerName = _("GABRIELLE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 6, .party = {.NoItemDefaultMoves = gTrainerParty_Gabrielle4 } }, @@ -11808,9 +11808,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, .trainerName = _("GABRIELLE"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 6, .party = {.NoItemDefaultMoves = gTrainerParty_Gabrielle5 } }, @@ -11822,9 +11822,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_BEAUTY, .trainerName = _("THALIA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Thalia2 } }, @@ -11836,9 +11836,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_BEAUTY, .trainerName = _("THALIA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Thalia3 } }, @@ -11850,9 +11850,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_BEAUTY, .trainerName = _("THALIA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Thalia4 } }, @@ -11864,9 +11864,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_BEAUTY, .trainerName = _("THALIA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x1, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, .partySize = 3, .party = {.NoItemDefaultMoves = gTrainerParty_Thalia5 } }, @@ -11878,9 +11878,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_F, .trainerName = _("MARIELA"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x0, + .aiFlags = 0, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Mariela } }, @@ -11892,9 +11892,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, .trainerPic = TRAINER_PIC_PSYCHIC_M, .trainerName = _("ALVARO"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x0, + .aiFlags = 0, .partySize = 2, .party = {.NoItemDefaultMoves = gTrainerParty_Alvaro } }, @@ -11906,9 +11906,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, .trainerPic = TRAINER_PIC_GENTLEMAN, .trainerName = _("EVERETT"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x0, + .aiFlags = 0, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Everett } }, @@ -11920,9 +11920,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_RED, .trainerName = _("RED"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x0, + .aiFlags = 0, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Red } }, @@ -11934,9 +11934,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_LEAF, .trainerName = _("LEAF"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x0, + .aiFlags = 0, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Leaf } }, @@ -11948,9 +11948,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_RUBY_SAPPHIRE_BRENDAN, .trainerName = _("BRENDAN"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x0, + .aiFlags = 0, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_Brendan16 } }, @@ -11962,9 +11962,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MALE, .trainerPic = TRAINER_PIC_RUBY_SAPPHIRE_MAY, .trainerName = _("MAY"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = 0x0, + .aiFlags = 0, .partySize = 1, .party = {.NoItemDefaultMoves = gTrainerParty_May16 } }, diff --git a/src/data2b.c b/src/data2b.c new file mode 100644 index 000000000..46a158e09 --- /dev/null +++ b/src/data2b.c @@ -0,0 +1,138 @@ +#include "global.h" +#include "data2.h" +#include "graphics.h" + +extern const union AnimCmd gAnimCmd_General_Frame0[]; +extern const union AnimCmd AnimCmd_82FF540[]; + +#include "data/pokemon_graphics/unknown_anims.h" +#include "data/pokemon_graphics/front_pic_coordinates.h" +#include "data/pokemon_graphics/still_front_pic_table.h" +#include "data/pokemon_graphics/back_pic_coordinates.h" + +#include "data/pokemon_graphics/back_pic_table.h" +#include "data/pokemon_graphics/palette_table.h" +#include "data/pokemon_graphics/shiny_palette_table.h" + +#include "data/trainer_graphics/front_pic_anims.h" +#include "data/trainer_graphics/front_pic_tables.h" +#include "data/trainer_graphics/back_pic_anims.h" +#include "data/trainer_graphics/back_pic_tables.h" + +#include "data/pokemon_graphics/enemy_mon_elevation.h" +#include "data/pokemon_graphics/front_anims.h" +#include "data/pokemon_graphics/front_pic_table.h" + +const u32 gUnknown830AF4C[] = // Potentially part of battle_data.c +{ + 0x00000888, 0x00000888, 0x00000888, 0x00000888, + 0x00000088, 0x00000888, 0x00000888, 0x00000886, + 0x00000888, 0x00000886, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000888, 0x00000888, + 0x00000886, 0x00000888, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000886, 0x00000886, + 0x00000888, 0x00000088, 0x00000088, 0x00000088, + 0x00000088, 0x00000888, 0x00000886, 0x00000888, + 0x00000888, 0x00000888, 0x00000886, 0x00000886, + 0x00000888, 0x00000088, 0x00000088, 0x00000088, + 0x00000088, 0x00000886, 0x00000886, 0x00000088, + 0x00000886, 0x00000886, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000888, 0x00000888, + 0x00000886, 0x00000888, 0x00000088, 0x00000088, + 0x00000888, 0x00000888, 0x00000888, 0x00000886, + 0x00000888, 0x00000888, 0x00000888, 0x00000886, + 0x00000886, 0x00000886, 0x00000886, 0x00000886, + 0x00000886, 0x00000886, 0x00000888, 0x00000888, + 0x00000886, 0x00000886, 0x00000886, 0x00000886, + 0x00000886, 0x00000888, 0x00000888, 0x00000888, + 0x00000888, 0x00000886, 0x00000886, 0x00000888, + 0x00000886, 0x00000886, 0x00000888, 0x00000888, + 0x00000088, 0x00000088, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000888, 0x00000888, + 0x00000886, 0x00000886, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000088, 0x00000886, + 0x00000888, 0x00000088, 0x00000088, 0x00000088, + 0x00000088, 0x00000888, 0x00000886, 0x00000888, + 0x00000088, 0x00000088, 0x00000886, 0x00000886, + 0x00000088, 0x00000088, 0x00000888, 0x00000886, + 0x00000886, 0x00000888, 0x00000888, 0x00000088, + 0x00000888, 0x00000886, 0x00000886, 0x00000888, + 0x00000886, 0x00000888, 0x00000888, 0x00000886, + 0x00000888, 0x00000888, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000088, 0x00000888, + 0x00000888, 0x00000888, 0x00000888, 0x00000888, + 0x00000088, 0x00000888, 0x00000888, 0x00000886, + 0x00000886, 0x00000888, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000888, 0x00000886, + 0x00000888, 0x00000886, 0x00000088, 0x00000088, + 0x00000088, 0x00000888, 0x00000088, 0x00000888, + 0x00000888, 0x00000088, 0x00000088, 0x00000888, + 0x00000886, 0x00000888, 0x00000886, 0x00000886, + 0x00000886, 0x00000888, 0x00000888, 0x00000888, + 0x00000088, 0x00000888, 0x00000888, 0x00000888, + 0x00000088, 0x00000888, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000088, 0x00000088, + 0x00000886, 0x00000888, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000088, 0x00000888, + 0x00000886, 0x00000888, 0x00000088, 0x00000088, + 0x00000888, 0x00000888, 0x00000088, 0x00000888, + 0x00000888, 0x00000888, 0x00000888, 0x00000088, + 0x00000888, 0x00000888, 0x00000088, 0x00000088, + 0x00000088, 0x00000888, 0x00000088, 0x00000888, + 0x00000888, 0x00000888, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000888, 0x00000888, + 0x00000888, 0x00000886, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000888, 0x00000888, + 0x00000888, 0x00000886, 0x00000886, 0x00000886, + 0x00000088, 0x00000088, 0x00000088, 0x00000886, + 0x00000088, 0x00000886, 0x00000886, 0x00000886, + 0x00000088, 0x00000886, 0x00000088, 0x00000088, + 0x00000088, 0x00000088, 0x00000088, 0x00000886, + 0x00000886, 0x00000886, 0x00000888, 0x00000888, + 0x00000886, 0x00000886, 0x00000886, 0x00000886, + 0x00000088, 0x00000088, 0x00000886, 0x00000886, + 0x00001882, 0x00000088, 0x00000088, 0x00000088, + 0x00000088, 0x00000886, 0x00000886, 0x00000886, + 0x00000088, 0x00000088, 0x00000088, 0x00000088, + 0x00000886, 0x00000088, 0x00000886, 0x00000088, + 0x00000088, 0x00000088, 0x00000088, 0x00000088, + 0x00000088, 0x00000088, 0x00000886, 0x00000886, + 0x00000088, 0x00000088, 0x00000088, 0x00000886, + 0x00000886, 0x00000088, 0x00000088, 0x00000088, + 0x00000088, 0x00000088, 0x00000088, 0x00000088, + 0x00000088, 0x00000088, 0x00000088, 0x00000088, + 0x00000088, 0x00000088, 0x00000886, 0x00000088, + 0x00000088, 0x00000886, 0x00000886, 0x00000886, + 0x00000886, 0x00000886, 0x00000088, 0x00000088, + 0x00000088, 0x00000088, 0x00000088, 0x00000886, + 0x00000886, 0x00000886, 0x00000886, 0x00000088, + 0x00000886, 0x00000088, 0x00000886, 0x00000886, + 0x00000886, 0x00000088, 0x00000088, 0x00000088, + 0x00000088, 0x00000088, 0x00000088, 0x00000088, + 0x00000088, 0x00000088, 0x00000886, 0x00000886, + 0x00000886, 0x00000888, 0x00000886, 0x00000886, + 0x00000088, 0x00000088, 0x00000088, 0x00000088, + 0x00000886, 0x00000886, 0x00000088, 0x00000088, + 0x00000088, 0x00000088, 0x00000088, 0x00000088, + 0x00000088, 0x00000088, 0x00000088, 0x00000088, + 0x00000088, 0x00000088, 0x00000088, 0x00000088, + 0x00000088, 0x00000088, 0x00000088, 0x00000088, + 0x00000088, 0x00000888, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000888, 0x00000888, + 0x00000888, 0x00000888, 0x00000888, 0x00000888, +}; diff --git a/src/daycare.c b/src/daycare.c index c73d91521..934cdea43 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -61,7 +61,16 @@ EWRAM_DATA static u16 sHatchedEggMotherMoves[4] = {0}; #include "data/pokemon/egg_moves.h" -static const struct WindowTemplate sDaycareLevelMenuWindowTemplate = {0, 0xF, 1, 0xE, 6, 0xF, 8}; +static const struct WindowTemplate sDaycareLevelMenuWindowTemplate = +{ + .priority = 0, + .tilemapLeft = 15, + .tilemapTop = 1, + .width = 14, + .height = 6, + .paletteNum = 15, + .baseBlock = 8 +}; static const struct ListMenuItem sLevelMenuItems[] = { @@ -368,7 +377,7 @@ static void ClearDaycareMonMail(struct DayCareMail *mail) { s32 i; - for (i = 0; i < OT_NAME_LENGTH + 1; i++) + for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++) mail->OT_name[i] = 0; for (i = 0; i < POKEMON_NAME_LENGTH + 1; i++) mail->monName[i] = 0; diff --git a/src/decoration.c b/src/decoration.c index b21d51278..e1def6d38 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -214,22 +214,67 @@ void (*const SecretBasePC_SelectedDecorActions[][2])(u8 taskId) = { } }; -const struct WindowTemplate gUnknown_085A6B90[4] = { - { 0, 1, 1, 18, 8, 15, 0x0001 }, - { 0, 1, 1, 13, 18, 13, 0x0091 }, - { 0, 17, 1, 12, 2, 15, 0x017b }, - { 0, 16, 13, 13, 6, 15, 0x0193 } +const struct WindowTemplate gUnknown_085A6B90[4] = +{ + { + .priority = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 18, + .height = 8, + .paletteNum = 15, + .baseBlock = 0x0001 + }, + { + .priority = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 13, + .height = 18, + .paletteNum = 13, + .baseBlock = 0x0091 + }, + { + .priority = 0, + .tilemapLeft = 17, + .tilemapTop = 1, + .width = 12, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x017b + }, + { + .priority = 0, + .tilemapLeft = 16, + .tilemapTop = 13, + .width = 13, + .height = 6, + .paletteNum = 15, + .baseBlock = 0x0193 + } }; const u16 gUnknown_085A6BB0[] = INCBIN_U16("graphics/decorations/unk_85a6bb0.gbapal"); -const struct ListMenuTemplate gUnknown_085A6BD0 = { - NULL, - sub_8127480, - sub_81274A0, - 0, 0, - 0, 0, 8, 0, - 9, 2, 1, 3, FALSE, 0, FALSE, 7 +const struct ListMenuTemplate gUnknown_085A6BD0 = +{ + .items = NULL, + .moveCursorFunc = sub_8127480, + .itemPrintFunc = sub_81274A0, + .totalItems = 0, + .maxShowed = 0, + .windowId = 0, + .header_X = 0, + .item_X = 8, + .cursor_X = 0, + .upText_Y = 9, + .cursorPal = 2, + .fillValue = 1, + .cursorShadowPal = 3, + .lettersSpacing = FALSE, + .itemVerticalPadding = 0, + .scrollMultiple = FALSE, + .fontId = 7 }; #include "data/decoration/icon.h" @@ -1087,7 +1132,7 @@ void sub_8127B04(u8 taskId) { DrawWholeMapView(); Overworld_SetWarpDestination(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, gTasks[taskId].data[3], gTasks[taskId].data[4]); - warp_in(); + WarpIntoMap(); } u16 sub_8127B54(u8 decor, u8 a1) diff --git a/src/easy_chat.c b/src/easy_chat.c new file mode 100644 index 000000000..fbf4c0e70 --- /dev/null +++ b/src/easy_chat.c @@ -0,0 +1,807 @@ + +// Includes +#include "global.h" +#include "malloc.h" +#include "constants/songs.h" +#include "sound.h" +#include "overworld.h" +#include "task.h" +#include "main.h" +#include "link.h" +#include "field_weather.h" +#include "window.h" +#include "palette.h" +#include "event_data.h" +#include "easy_chat.h" + +// Static type declarations + +#define EZCHAT_TASK_STATE 0 +#define EZCHAT_TASK_KIND 1 +#define EZCHAT_TASK_WORDS 2 +#define EZCHAT_TASK_MAINCALLBACK 4 +#define EZCHAT_TASK_UNK06 6 +#define EZCHAT_TASK_SIZE 7 + +// Static RAM declarations + +EWRAM_DATA struct +{ + u8 kind; + u8 unk_01; + u8 unk_02; + u8 unk_03; + u8 unk_04; + s8 unk_05; + s8 unk_06; + u8 unk_07; + u8 unk_08; + u8 unk_09; + u8 unk_0a; + u8 unk_0b; + u8 unk_0c; + u8 unk_0d; + u8 unk_0e[0x4]; + u8 sizeParam; + u8 unk_13; + u8 unk_14[0x20]; + const u8 *src; + const u16 *words; + u16 ecWordBuffer[9]; +} *gUnknown_0203A118 = NULL; + +// Static ROM declarations + +static void sub_811A2C0(u8); +static void sub_811A278(void); +static bool8 sub_811A428(u8); +static void sub_811A2FC(u8); +static void sub_811A4D0(MainCallback); +static bool32 sub_811A88C(u16); +static void sub_811A8A4(u16); +void sub_811A8F0(void); +static bool8 EasyChat_AllocateResources(u8, u16 *, u8); +static void EasyChat_FreeResources(void); +static u16 sub_811AAAC(void); +static u16 sub_811AB68(void); +u16 sub_811ACDC(void); +u16 sub_811AE44(void); +u16 sub_811AF00(void); +u16 sub_811AF8C(void); +u16 sub_811AFEC(void); +u16 sub_811B040(void); +u16 sub_811B08C(void); +u16 sub_811B0BC(void); +u16 sub_811B0E8(void); +u16 sub_811B0F8(void); +u16 sub_811B150(void); +u16 sub_811B1B4(void); +u8 sub_811BA68(void); +u8 sub_811BCC8(u8); +void sub_811BDF0(u8 *); +void sub_811BF78(void); +bool8 sub_811BF8C(void); +bool8 sub_811BFA4(void); +void sub_811C13C(void); +/*static*/ void sub_811C158(u16); +/*static*/ bool8 sub_811C170(void); +bool8 sub_811F28C(void); +void sub_811F2B8(void); +u8 sub_811F3AC(void); + +// .rodata + +extern const struct { + u16 word; + MainCallback callback; +} gUnknown_08597530[4]; +extern const struct { + u8 unk_00; + u8 unk_01; + u8 unk_02; + u8 unk_03; + u8 *data; + u8 filler_08[16]; +} gUnknown_08597550[]; + +// .text + +void sub_811A20C(u8 kind, u16 *words, MainCallback callback, u8 sizeParam) +{ + u8 taskId; + + ResetTasks(); + taskId = CreateTask(sub_811A2C0, 0); + gTasks[taskId].data[EZCHAT_TASK_KIND] = kind; + gTasks[taskId].data[EZCHAT_TASK_SIZE] = sizeParam; + SetWordTaskArg(taskId, EZCHAT_TASK_WORDS, (u32)words); + SetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK, (u32)callback); + SetMainCallback2(sub_811A278); +} + +static void sub_811A278(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_811A290(void) +{ + TransferPlttBuffer(); + LoadOam(); + ProcessSpriteCopyRequests(); +} + +static void sub_811A2A4(u8 taskId, TaskFunc taskFunc) +{ + gTasks[taskId].func = taskFunc; + gTasks[taskId].data[EZCHAT_TASK_STATE] = 0; +} + +static void sub_811A2C0(u8 taskId) +{ + if (!is_c1_link_related_active()) + { + while (sub_811A428(taskId)); + } + else + { + if (sub_811A428(taskId) == TRUE) + { + return; + } + } + sub_811A2A4(taskId, sub_811A2FC); +} + +static void sub_811A2FC(u8 taskId) +{ + u16 v0; + s16 *data; + + data = gTasks[taskId].data; + switch (data[EZCHAT_TASK_STATE]) + { + case 0: + SetVBlankCallback(sub_811A290); + BlendPalettes(0xFFFFFFFF, 16, 0); + BeginNormalPaletteFade(-1, -1, 16, 0, 0); + data[EZCHAT_TASK_STATE] = 5; + break; + case 1: + v0 = sub_811AAAC(); + if (sub_811A88C(v0)) + { + BeginNormalPaletteFade(-1, -2, 0, 16, 0); + data[EZCHAT_TASK_STATE] = 3; + data[EZCHAT_TASK_UNK06] = v0; + } + else if (v0 == 0x18) + { + BeginNormalPaletteFade(-1, -1, 0, 16, 0); + data[EZCHAT_TASK_STATE] = 4; + } + else if (v0 != 0) + { + PlaySE(SE_SELECT); + sub_811C158(v0); + data[EZCHAT_TASK_STATE] ++; + } + break; + case 2: + if (!sub_811C170()) + { + data[EZCHAT_TASK_STATE] = 1; + } + break; + case 3: + if (!gPaletteFade.active) + { + sub_811A8A4(data[EZCHAT_TASK_UNK06]); + } + break; + case 4: + if (!gPaletteFade.active) + { + sub_811A4D0((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK)); + } + break; + case 5: + if (!gPaletteFade.active) + { + data[EZCHAT_TASK_STATE] = 1; + } + break; + } +} + +static bool8 sub_811A428(u8 taskId) +{ + s16 *data; + + data = gTasks[taskId].data; + switch (data[EZCHAT_TASK_STATE]) + { + case 0: + SetVBlankCallback(NULL); + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetPaletteFade(); + break; + case 1: + if (!sub_811F28C()) + { + sub_811A4D0((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK)); + } + break; + case 2: + if (!EasyChat_AllocateResources(data[EZCHAT_TASK_KIND], (u16 *)GetWordTaskArg(taskId, EZCHAT_TASK_WORDS), data[EZCHAT_TASK_SIZE])) + { + sub_811A4D0((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK)); + } + break; + case 3: + if (!sub_811BF8C()) + { + sub_811A4D0((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK)); + } + break; + case 4: + if (sub_811BFA4()) + { + return TRUE; + } + break; + default: + return FALSE; + } + data[EZCHAT_TASK_STATE] ++; + return TRUE; +} + +static void sub_811A4D0(MainCallback callback) +{ + sub_811C13C(); + EasyChat_FreeResources(); + sub_811F2B8(); + FreeAllWindowBuffers(); + SetMainCallback2(callback); +} + +void easy_chat_input_maybe(void) +{ + int i; + u16 *words; + struct MauvilleManBard *bard; + u8 sizeParam = 3; + switch (gSpecialVar_0x8004) + { + case 0: + words = gSaveBlock1Ptr->unk2BB0; + break; + case 1: + words = gSaveBlock1Ptr->unk2BBC; + break; + case 2: + words = gSaveBlock1Ptr->unk2BC8; + break; + case 3: + words = gSaveBlock1Ptr->unk2BD4; + break; + case 4: + words = gSaveBlock1Ptr->mail[gSpecialVar_0x8005].words; + break; + case 6: + bard = &gSaveBlock1Ptr->oldMan.bard; + for (i = 0; i < 6; i ++) + { + bard->temporaryLyrics[i] = bard->songLyrics[i]; + } + words = bard->temporaryLyrics; + break; + case 5: + words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].bravoTrainer.words; + sizeParam = gSpecialVar_0x8006; + break; + case 7: + words = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanclubOpinions.words[gSpecialVar_0x8006]; + sizeParam = 1; + break; + case 8: + words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].unkShow04.words; + sizeParam = 0; + break; + case 9: + words = (u16 *)gStringVar3; + words[0] = gSaveBlock1Ptr->easyChatPairs[0].words[0]; + words[1] = gSaveBlock1Ptr->easyChatPairs[0].words[1]; + break; + case 10: + words = gSaveBlock1Ptr->gabbyAndTyData.quote; + *words = -1; + sizeParam = 1; + break; + case 11: + words = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].bravoTrainer.words[gSpecialVar_0x8006]; + sizeParam = 0; + break; + case 12: + words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanclubOpinions.words18; + sizeParam = 1; + break; + case 13: + words = (u16 *)gStringVar3; + InitializeEasyChatWordArray(words, 2); + break; + case 14: + words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanClubSpecial.words; + words[0] = -1; + sizeParam = 2; + break; + case 15: + words = &gSaveBlock1Ptr->lilycoveLady.quiz.unk_016; + break; + case 16: + return; + case 17: + words = gSaveBlock1Ptr->lilycoveLady.quiz.unk_002; + break; + case 18: + words = &gSaveBlock1Ptr->lilycoveLady.quiz.unk_014; + break; + case 19: + words = (u16 *)&gSaveBlock2Ptr->field_DC[0].field_0[0x28]; + break; + case 20: + words = sub_801B058(); + break; + default: + return; + } + overworld_free_bg_tilemaps(); + sub_811A20C(gSpecialVar_0x8004, words, CB2_ReturnToFieldContinueScript, sizeParam); +} + +static void sub_811A7E4(void) +{ + LilycoveLady *lilycoveLady; + + UpdatePaletteFade(); + switch (gMain.state) + { + case 0: + FadeScreen(1, 0); + break; + case 1: + if (!gPaletteFade.active) + { + lilycoveLady = &gSaveBlock1Ptr->lilycoveLady; + lilycoveLady->quiz.unk_016 = -1; + overworld_free_bg_tilemaps(); + sub_811A8F0(); + } + return; + } + gMain.state ++; +} + +void sub_811A858(void) +{ + SetMainCallback2(sub_811A7E4); +} + +static int sub_811A868(u16 word) +{ + int i; + + for (i = 0; i < ARRAY_COUNT(gUnknown_08597530); i ++) + { + if (word == gUnknown_08597530[i].word) + return i; + } + return -1; +} + +static bool32 sub_811A88C(u16 word) +{ + return sub_811A868(word) == -1 ? FALSE : TRUE; +} + +static void sub_811A8A4(u16 word) +{ + int i; + + i = sub_811A868(word); + ResetTasks(); + sub_811A4D0(gUnknown_08597530[i].callback); +} + +void sub_811A8CC(void) +{ + sub_811A20C(0xF, &gSaveBlock1Ptr->lilycoveLady.quiz.unk_016, CB2_ReturnToFieldContinueScript, 3); +} + +void sub_811A8F0(void) +{ + sub_811A20C(0x10, gSaveBlock1Ptr->lilycoveLady.quiz.unk_002, CB2_ReturnToFieldContinueScript, 3); +} + +void sub_811A914(void) +{ + sub_811A20C(0x12, &gSaveBlock1Ptr->lilycoveLady.quiz.unk_014, CB2_ReturnToFieldContinueScript, 3); +} + +void sub_811A938(void) +{ + sub_811A20C(0x11, gSaveBlock1Ptr->lilycoveLady.quiz.unk_002, CB2_ReturnToFieldContinueScript, 3); +} + +static bool8 EasyChat_AllocateResources(u8 kind, u16 *words, u8 sizeParam) +{ + u8 r6; + int i; + + gUnknown_0203A118 = malloc(sizeof(*gUnknown_0203A118)); + if (gUnknown_0203A118 == NULL) + { + return FALSE; + } + gUnknown_0203A118->kind = kind; + gUnknown_0203A118->words = words; + gUnknown_0203A118->unk_05 = 0; + gUnknown_0203A118->unk_06 = 0; + gUnknown_0203A118->unk_09 = 0; + gUnknown_0203A118->sizeParam = sizeParam; + gUnknown_0203A118->unk_13 = 0; + r6 = sub_811BCC8(kind); + if (kind == 0x10) + { + sub_811BDF0(gUnknown_0203A118->unk_14); + gUnknown_0203A118->src = gUnknown_0203A118->unk_14; + gUnknown_0203A118->unk_04 = 7; + } + else + { + gUnknown_0203A118->unk_04 = 0; + gUnknown_0203A118->src = gUnknown_08597550[r6].data; + } + gUnknown_0203A118->unk_02 = gUnknown_08597550[r6].unk_01; + gUnknown_0203A118->unk_03 = gUnknown_08597550[r6].unk_02; + gUnknown_0203A118->unk_07 = gUnknown_0203A118->unk_02 * gUnknown_0203A118->unk_03; + gUnknown_0203A118->unk_01 = r6; + if (gUnknown_0203A118->unk_07 > 9) + { + gUnknown_0203A118->unk_07 = 9; + } + if (words != NULL) + { + CpuCopy16(words, gUnknown_0203A118->ecWordBuffer, gUnknown_0203A118->unk_07 * sizeof(u16)); + } + else + { + for (i = 0; i < gUnknown_0203A118->unk_07; i ++) + { + gUnknown_0203A118->ecWordBuffer[i] = -1; + } + gUnknown_0203A118->words = gUnknown_0203A118->ecWordBuffer; + } + gUnknown_0203A118->unk_0d = (sub_811F3AC() - 1) / 2 + 1; + return TRUE; +} + +static void EasyChat_FreeResources(void) +{ + if (gUnknown_0203A118 != NULL) + FREE_AND_SET_NULL(gUnknown_0203A118); +} + +static u16 sub_811AAAC(void) +{ + switch (gUnknown_0203A118->unk_04) + { + case 0: + return sub_811AB68(); + case 1: + return sub_811ACDC(); + case 2: + return sub_811AE44(); + case 3: + return sub_811AF00(); + case 4: + return sub_811AF8C(); + case 5: + return sub_811B040(); + case 6: + return sub_811AFEC(); + case 7: + return sub_811B08C(); + case 8: + return sub_811B0BC(); + case 9: + return sub_811B0E8(); + case 10: + return sub_811B0F8(); + } + return 0; +} + +bool32 sub_811AB44(void) +{ + switch (sub_811BA68()) + { + case 2: + case 7: + case 8: + return TRUE; + } + return FALSE; +} + +#ifdef NONMATCHING +static u16 sub_811AB68(void) +{ + if (gMain.newKeys & A_BUTTON) + { + sub_811BF78(); + gUnknown_0203A118->unk_04 = 2; + gUnknown_0203A118->unk_0a = 0; + gUnknown_0203A118->unk_0b = 0; + gUnknown_0203A118->unk_0c = 0; + return 9; + } + else if (gMain.newKeys & B_BUTTON) + { // FIXME: See note below + return sub_811B150(); + } + else if (gMain.newKeys & START_BUTTON) + { // FIXME: See note below + return sub_811B1B4(); + } + else if (gMain.newKeys & DPAD_UP) + { + gUnknown_0203A118->unk_06--; + } + else if (gMain.newKeys & DPAD_LEFT) + { // FIXME: See note below + gUnknown_0203A118->unk_05--; + } + else if (gMain.newKeys & DPAD_DOWN) + { // FIXME: See note below + gUnknown_0203A118->unk_06++; + } + else if (gMain.newKeys & DPAD_RIGHT) + { // FIXME: See note below + gUnknown_0203A118->unk_05++; + } + else + { + return 0; + } + if (gUnknown_0203A118->unk_06 < 0) + { + gUnknown_0203A118->unk_06 = gUnknown_08597550[gUnknown_0203A118->unk_01].unk_02; + } + if (gUnknown_0203A118->unk_06 > gUnknown_08597550[gUnknown_0203A118->unk_01].unk_02) + { + gUnknown_0203A118->unk_06 = 0; + } + if (gUnknown_0203A118->unk_06 == gUnknown_08597550[gUnknown_0203A118->unk_01].unk_02) + { + if (gUnknown_0203A118->unk_05 > 2) + { + gUnknown_0203A118->unk_05 = 2; + } + gUnknown_0203A118->unk_04 = 1; + return 3; + } + /* + * FIXME: right, down, left, b, and start + * should be inserted here, but aren't + */ + if (gUnknown_0203A118->unk_05 < 0) + { + gUnknown_0203A118->unk_05 = gUnknown_08597550[gUnknown_0203A118->unk_01].unk_01 - 1; + } + if (gUnknown_0203A118->unk_05 >= gUnknown_08597550[gUnknown_0203A118->unk_01].unk_01) + { + gUnknown_0203A118->unk_05 = 0; + } + if (sub_811AB44() && gUnknown_0203A118->unk_05 == 1 && gUnknown_0203A118->unk_06 == 4) + { + gUnknown_0203A118->unk_05 = 0; + } + return 2; +} +#else +__attribute__((naked)) static u16 sub_811AB68(void) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tldr r0, =gMain\n" + "\tldrh r1, [r0, 0x2E]\n" + "\tmovs r0, 0x1\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _0811ABB8\n" + "\tbl sub_811BF78\n" + "\tldr r1, =gUnknown_0203A118\n" + "\tldr r3, [r1]\n" + "\tmovs r2, 0\n" + "\tmovs r0, 0x2\n" + "\tstrb r0, [r3, 0x4]\n" + "\tldr r0, [r1]\n" + "\tstrb r2, [r0, 0xA]\n" + "\tldr r0, [r1]\n" + "\tstrb r2, [r0, 0xB]\n" + "\tldr r0, [r1]\n" + "\tstrb r2, [r0, 0xC]\n" + "\tmovs r0, 0x9\n" + "\tb _0811ACCC_return_r0\n" + "\t.pool\n" + "_0811AB9C:\n" + "\tmovs r0, 0x20\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbne _0811AC68_dpad_left\n" + "\tmovs r0, 0x80\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbne _0811AC58_dpad_down\n" + "\tmovs r0, 0x10\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbne _0811AC48_dpad_right\n" + "\tmovs r0, 0\n" + "\tb _0811ACCC_return_r0\n" + "_0811ABB8:\n" + "\tmovs r0, 0x2\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbne _0811AC78_b_button\n" + "\tmovs r0, 0x8\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbne _0811AC7E_start_button\n" + "\tmovs r0, 0x40\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _0811AB9C\n" + "\tldr r2, =gUnknown_0203A118\n" + "\tldr r1, [r2]\n" + "\tldrb r0, [r1, 0x6]\n" + "\tsubs r0, 0x1\n" + "_0811ABD8:\n" + "\tstrb r0, [r1, 0x6]\n" + "_0811ABDA:\n" + "\tadds r7, r2, 0\n" + "\tadds r4, r7, 0\n" + "\tldr r2, [r4]\n" + "\tmovs r0, 0x6\n" + "\tldrsb r0, [r2, r0]\n" + "\tldr r6, =gUnknown_08597550\n" + "\tcmp r0, 0\n" + "\tbge _0811ABF8\n" + "\tldrb r0, [r2, 0x1]\n" + "\tlsls r1, r0, 1\n" + "\tadds r1, r0\n" + "\tlsls r1, 3\n" + "\tadds r1, r6\n" + "\tldrb r0, [r1, 0x2]\n" + "\tstrb r0, [r2, 0x6]\n" + "_0811ABF8:\n" + "\tldr r3, [r4]\n" + "\tmovs r2, 0x6\n" + "\tldrsb r2, [r3, r2]\n" + "\tadds r5, r6, 0\n" + "\tldrb r1, [r3, 0x1]\n" + "\tlsls r0, r1, 1\n" + "\tadds r0, r1\n" + "\tlsls r0, 3\n" + "\tadds r0, r5\n" + "\tldrb r0, [r0, 0x2]\n" + "\tcmp r2, r0\n" + "\tble _0811AC14\n" + "\tmovs r0, 0\n" + "\tstrb r0, [r3, 0x6]\n" + "_0811AC14:\n" + "\tldr r3, [r4]\n" + "\tmovs r2, 0x6\n" + "\tldrsb r2, [r3, r2]\n" + "\tldrb r1, [r3, 0x1]\n" + "\tlsls r0, r1, 1\n" + "\tadds r0, r1\n" + "\tlsls r0, 3\n" + "\tadds r1, r0, r5\n" + "\tldrb r0, [r1, 0x2]\n" + "\tcmp r2, r0\n" + "\tbne _0811AC88\n" + "\tmovs r0, 0x5\n" + "\tldrsb r0, [r3, r0]\n" + "\tcmp r0, 0x2\n" + "\tble _0811AC36\n" + "\tmovs r0, 0x2\n" + "\tstrb r0, [r3, 0x5]\n" + "_0811AC36:\n" + "\tldr r1, [r4]\n" + "\tmovs r0, 0x1\n" + "\tstrb r0, [r1, 0x4]\n" + "\tmovs r0, 0x3\n" + "\tb _0811ACCC_return_r0\n" + "\t.pool\n" + "_0811AC48_dpad_right:\n" + "\tldr r2, =gUnknown_0203A118\n" + "\tldr r1, [r2]\n" + "\tldrb r0, [r1, 0x5]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1, 0x5]\n" + "\tb _0811ABDA\n" + "\t.pool\n" + "_0811AC58_dpad_down:\n" + "\tldr r2, =gUnknown_0203A118\n" + "\tldr r1, [r2]\n" + "\tldrb r0, [r1, 0x6]\n" + "\tadds r0, 0x1\n" + "\tb _0811ABD8\n" + "\t.pool\n" + "_0811AC68_dpad_left:\n" + "\tldr r2, =gUnknown_0203A118\n" + "\tldr r1, [r2]\n" + "\tldrb r0, [r1, 0x5]\n" + "\tsubs r0, 0x1\n" + "\tstrb r0, [r1, 0x5]\n" + "\tb _0811ABDA\n" + "\t.pool\n" + "_0811AC78_b_button:\n" + "\tbl sub_811B150\n" + "\tb _0811AC82\n" + "_0811AC7E_start_button:\n" + "\tbl sub_811B1B4\n" + "_0811AC82:\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tb _0811ACCC_return_r0\n" + "_0811AC88:\n" + "\tmovs r0, 0x5\n" + "\tldrsb r0, [r3, r0]\n" + "\tcmp r0, 0\n" + "\tbge _0811AC96\n" + "\tldrb r0, [r1, 0x1]\n" + "\tsubs r0, 0x1\n" + "\tstrb r0, [r3, 0x5]\n" + "_0811AC96:\n" + "\tldr r3, [r4]\n" + "\tmovs r2, 0x5\n" + "\tldrsb r2, [r3, r2]\n" + "\tldrb r1, [r3, 0x1]\n" + "\tlsls r0, r1, 1\n" + "\tadds r0, r1\n" + "\tlsls r0, 3\n" + "\tadds r0, r6\n" + "\tldrb r0, [r0, 0x1]\n" + "\tcmp r2, r0\n" + "\tblt _0811ACB0\n" + "\tmovs r0, 0\n" + "\tstrb r0, [r3, 0x5]\n" + "_0811ACB0:\n" + "\tbl sub_811AB44\n" + "\tcmp r0, 0\n" + "\tbeq _0811ACCA\n" + "\tldr r2, [r7]\n" + "\tldr r0, [r2, 0x4]\n" + "\tldr r1, =0x00ffff00\n" + "\tands r0, r1\n" + "\tldr r1, =0x00040100\n" + "\tcmp r0, r1\n" + "\tbne _0811ACCA\n" + "\tmovs r0, 0\n" + "\tstrb r0, [r2, 0x5]\n" + "_0811ACCA:\n" + "\tmovs r0, 0x2\n" + "_0811ACCC_return_r0:\n" + "\tpop {r4-r7}\n" + "\tpop {r1}\n" + "\tbx r1\n" + "\t.pool"); +} +#endif diff --git a/src/egg_hatch.c b/src/egg_hatch.c index 67876f33b..25af28da4 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -253,13 +253,27 @@ static const struct BgTemplate sBgTemplates_EggHatch[2] = static const struct WindowTemplate sWinTemplates_EggHatch[2] = { - {0, 2, 0xF, 0x1A, 4, 0, 0x40}, + { + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 15, + .width = 26, + .height = 4, + .paletteNum = 0, + .baseBlock = 64 + }, DUMMY_WIN_TEMPLATE }; static const struct WindowTemplate sYesNoWinTemplate = { - 0, 0x15, 9, 5, 4, 0xF, 0x1A8 + .priority = 0, + .tilemapLeft = 21, + .tilemapTop = 9, + .width = 5, + .height = 4, + .paletteNum = 15, + .baseBlock = 424 }; static const s16 sEggShardVelocities[][2] = @@ -512,7 +526,7 @@ static void CB2_EggHatch_0(void) gMain.state++; break; case 2: - copy_decompressed_tile_data_to_vram_autofree(0, gBattleTextboxTiles, 0, 0, 0); + DecompressAndLoadBgGfxUsingHeap(0, gBattleTextboxTiles, 0, 0, 0); CopyToBgTilemapBuffer(0, gBattleTextboxTilemap, 0, 0); LoadCompressedPalette(gBattleTextboxPalette, 0, 0x20); gMain.state++; @@ -659,7 +673,7 @@ static void CB2_EggHatch_1(void) } break; case 10: - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar3); diff --git a/src/event_data.c b/src/event_data.c index efd439a3c..8a998fe26 100644 --- a/src/event_data.c +++ b/src/event_data.c @@ -25,7 +25,7 @@ EWRAM_DATA u16 gSpecialVar_MonBoxPos = 0; EWRAM_DATA u16 gSpecialVar_0x8014 = 0; EWRAM_DATA static u8 gUnknown_020375FC[16] = {0}; -extern u16 * const gSpecialVars[]; +extern u16 *const gSpecialVars[]; extern void sub_80BB358(void); @@ -47,7 +47,7 @@ void ClearTempFieldEventData(void) FlagClear(FLAG_0x880); } -// probably had different flag splits at one point. +// Probably had different flag splits at one point. void ClearUpperFlags(void) { memset(gSaveBlock1Ptr->flags + 0x124, 0, TEMP_UPPER_FLAGS_SIZE); @@ -112,34 +112,34 @@ bool32 IsMysteryGiftEnabled(void) void sub_809D4D8(void) { - FlagClear(0x1E4); - FlagClear(0x1E5); - FlagClear(0x1E6); - FlagClear(0x1E7); - FlagClear(0x1E8); - FlagClear(0x1E9); - FlagClear(0x1EA); - FlagClear(0x1EB); - FlagClear(0x1EC); - FlagClear(0x1ED); - FlagClear(0x1EE); - FlagClear(0x1EF); - FlagClear(0x1F0); - FlagClear(0x1F1); - FlagClear(0x1F2); - FlagClear(0x1F3); + FlagClear(FLAG_MYSTERY_EVENT_DONE); + FlagClear(FLAG_0x1E5); + FlagClear(FLAG_0x1E6); + FlagClear(FLAG_0x1E7); + FlagClear(FLAG_0x1E8); + FlagClear(FLAG_0x1E9); + FlagClear(FLAG_0x1EA); + FlagClear(FLAG_0x1EB); + FlagClear(FLAG_0x1EC); + FlagClear(FLAG_0x1ED); + FlagClear(FLAG_0x1EE); + FlagClear(FLAG_0x1EF); + FlagClear(FLAG_0x1F0); + FlagClear(FLAG_0x1F1); + FlagClear(FLAG_0x1F2); + FlagClear(FLAG_0x1F3); } void sub_809D570(void) { - VarSet(0x40DD, 0); - VarSet(0x40DE, 0); - VarSet(0x40DF, 0); - VarSet(0x40E0, 0); - VarSet(0x40E1, 0); - VarSet(0x40E2, 0); - VarSet(0x40E3, 0); - VarSet(0x40E4, 0); + VarSet(VAR_EVENT_PICHU_SLOT, 0); + VarSet(VAR_0x40DE, 0); + VarSet(VAR_0x40DF, 0); + VarSet(VAR_0x40E0, 0); + VarSet(VAR_0x40E1, 0); + VarSet(VAR_0x40E2, 0); + VarSet(VAR_0x40E3, 0); + VarSet(VAR_0x40E4, 0); } void DisableResetRTC(void) @@ -164,13 +164,12 @@ bool32 CanResetRTC(void) u16 *GetVarPointer(u16 id) { - if (id < 0x4000) + if (id < VARS_START) return NULL; - - if ((s16)id >= 0) - return &gSaveBlock1Ptr->vars[id - 0x4000]; - - return gSpecialVars[id - 0x8000]; + else if (id < SPECIAL_VARS_START) + return &gSaveBlock1Ptr->vars[id - VARS_START]; + else + return gSpecialVars[id - SPECIAL_VARS_START]; } u16 VarGet(u16 id) @@ -192,18 +191,17 @@ bool8 VarSet(u16 id, u16 value) u8 VarGetEventObjectGraphicsId(u8 id) { - return VarGet(0x4010 + id); + return VarGet(VAR_OBJ_GFX_ID_0 + id); } u8 *GetFlagPointer(u16 id) { if (id == 0) - return 0; - - if (id < 0x4000) + return NULL; + else if (id < SPECIAL_FLAGS_START) return &gSaveBlock1Ptr->flags[id / 8]; - - return &gUnknown_020375FC[(id - 0x4000) / 8]; + else + return &gUnknown_020375FC[(id - SPECIAL_FLAGS_START) / 8]; } u8 FlagSet(u16 id) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 5fdceb4c3..9a1e711c3 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -26,9 +26,9 @@ // this file was known as evobjmv.c in Game Freak's original source -extern u8 gUnknown_020375B4; -extern u16 gUnknown_020375B6; -extern struct LockedAnimEventObjects *gLockedAnimEventObjects; +EWRAM_DATA u8 sCurrentReflectionType = 0; +EWRAM_DATA u16 sCurrentSpecialObjectPaletteTag = 0; +EWRAM_DATA struct LockedAnimEventObjects *gLockedAnimEventObjects = {0}; static void MoveCoordsInDirection(u32, s16 *, s16 *, s16, s16); static bool8 EventObjectExecSingleMovementAction(struct EventObject *, struct Sprite *); @@ -102,7 +102,7 @@ static struct EventObjectTemplate *FindEventObjectTemplateByLocalId(u8 localId, static void ClearEventObjectMovement(struct EventObject *, struct Sprite *); static void EventObjectSetSingleMovement(struct EventObject *, struct Sprite *, u8); -const u8 gUnknown_084975C4[] = {1, 1, 6, 7, 8, 9, 6, 7, 8, 9, 11, 11, 0, 0, 0, 0}; +const u8 gReflectionEffectPaletteMap[] = {1, 1, 6, 7, 8, 9, 6, 7, 8, 9, 11, 11, 0, 0, 0, 0}; const struct SpriteTemplate gCameraSpriteTemplate = {0, 0xFFFF, &gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, ObjectCB_CameraObject}; @@ -376,7 +376,7 @@ const u8 gInitialMovementTypeFacingDirections[] = { #include "data/field_event_obj/event_object_subsprites.h" #include "data/field_event_obj/event_object_graphics_info.h" -const struct SpritePalette gUnknown_0850BBC8[] = { +const struct SpritePalette sEventObjectSpritePalettes[] = { {gEventObjectPalette0, 0x1103}, {gEventObjectPalette1, 0x1104}, {gEventObjectPalette2, 0x1105}, @@ -415,7 +415,7 @@ const struct SpritePalette gUnknown_0850BBC8[] = { {NULL, 0x0000}, }; -const u16 Unknown_0850BCE8[] = { +const u16 gPlayerReflectionPaletteTags[] = { 0x1101, 0x1101, 0x1101, @@ -429,115 +429,115 @@ const u16 Unknown_0850BCF0[] = { 0x1111, }; -const u16 Unknown_0850BCF8[] = { +const u16 gPlayerUnderwaterReflectionPaletteTags[] = { 0x1115, 0x1115, 0x1115, 0x1115, }; -const struct PairedPalettes gUnknown_0850BD00[] = { - {0x1100, Unknown_0850BCE8}, +const struct PairedPalettes gPlayerReflectionPaletteSets[] = { + {0x1100, gPlayerReflectionPaletteTags}, {0x1110, Unknown_0850BCF0}, - {0x1115, Unknown_0850BCF8}, + {0x1115, gPlayerUnderwaterReflectionPaletteTags}, {0x11FF, NULL}, }; -const u16 Unknown_0850BD20[] = { +const u16 gQuintyPlumpReflectionPaletteTags[] = { 0x110C, 0x110C, 0x110C, 0x110C, }; -const u16 Unknown_0850BD28[] = { +const u16 gTruckReflectionPaletteTags[] = { 0x110D, 0x110D, 0x110D, 0x110D, }; -const u16 Unknown_0850BD30[] = { +const u16 gVigorothMoverReflectionPaletteTags[] = { 0x110E, 0x110E, 0x110E, 0x110E, }; -const u16 Unknown_0850BD38[] = { +const u16 gMovingBoxReflectionPaletteTags[] = { 0x1112, 0x1112, 0x1112, 0x1112, }; -const u16 Unknown_0850BD40[] = { +const u16 gCableCarReflectionPaletteTags[] = { 0x1113, 0x1113, 0x1113, 0x1113, }; -const u16 Unknown_0850BD48[] = { +const u16 gSSTidalReflectionPaletteTags[] = { 0x1114, 0x1114, 0x1114, 0x1114, }; -const u16 Unknown_0850BD50[] = { +const u16 gSubmarineShadowReflectionPaletteTags[] = { 0x111B, 0x111B, 0x111B, 0x111B, }; -const u16 Unknown_0850BD58[] = { +const u16 Unknown_0850BD58[] = { // Kyogre2? 0x1117, 0x1117, 0x1117, 0x1117, }; -const u16 Unknown_0850BD60[] = { +const u16 Unknown_0850BD60[] = { // Groudon2? 0x1119, 0x1119, 0x1119, 0x1119, }; -const u16 Unknown_0850BD68[] = { +const u16 Unknown_0850BD68[] = { // Invisible Keckleon? 0x1109, 0x1109, 0x1109, 0x1109, }; -const u16 Unknown_0850BD70[] = { +const u16 gRedLeafReflectionPaletteTags[] = { 0x111D, 0x111D, 0x111D, 0x111D, }; -const struct PairedPalettes gUnknown_0850BD78[] = { - {4352, Unknown_0850BCE8}, +const struct PairedPalettes gSpecialObjectReflectionPaletteSets[] = { + {4352, gPlayerReflectionPaletteTags}, {4368, Unknown_0850BCF0}, - {4363, Unknown_0850BD20}, - {4365, Unknown_0850BD28}, - {4366, Unknown_0850BD30}, - {4370, Unknown_0850BD38}, - {4371, Unknown_0850BD40}, - {4372, Unknown_0850BD48}, + {4363, gQuintyPlumpReflectionPaletteTags}, + {4365, gTruckReflectionPaletteTags}, + {4366, gVigorothMoverReflectionPaletteTags}, + {4370, gMovingBoxReflectionPaletteTags}, + {4371, gCableCarReflectionPaletteTags}, + {4372, gSSTidalReflectionPaletteTags}, {4374, Unknown_0850BD58}, {4376, Unknown_0850BD60}, {4357, Unknown_0850BD68}, - {4379, Unknown_0850BD50}, - {4381, Unknown_0850BD70}, + {4379, gSubmarineShadowReflectionPaletteTags}, + {4381, gRedLeafReflectionPaletteTags}, {4607, NULL}, }; -const u16 gUnknown_0850BDE8[] = { +const u16 gObjectPaletteTags0[] = { 0x1100, 0x1101, 0x1103, @@ -550,7 +550,7 @@ const u16 gUnknown_0850BDE8[] = { 0x110A, }; -const u16 gUnknown_0850BDFC[] = { +const u16 gObjectPaletteTags1[] = { 0x1100, 0x1101, 0x1103, @@ -563,7 +563,7 @@ const u16 gUnknown_0850BDFC[] = { 0x110A, }; -const u16 gUnknown_0850BE10[] = { +const u16 gObjectPaletteTags2[] = { 0x1100, 0x1101, 0x1103, @@ -576,7 +576,7 @@ const u16 gUnknown_0850BE10[] = { 0x110A, }; -const u16 gUnknown_0850BE24[] = { +const u16 gObjectPaletteTags3[] = { 0x1100, 0x1101, 0x1103, @@ -590,11 +590,11 @@ const u16 gUnknown_0850BE24[] = { }; -const u16 *const gUnknown_0850BE38[] = { - gUnknown_0850BDE8, - gUnknown_0850BDFC, - gUnknown_0850BE10, - gUnknown_0850BE24, +const u16 *const gObjectPaletteTagSets[] = { + gObjectPaletteTags0, + gObjectPaletteTags1, + gObjectPaletteTags2, + gObjectPaletteTags3, }; #include "data/field_event_obj/berry_tree_graphics_tables.h" @@ -798,7 +798,7 @@ bool8 (*const gDirectionBlockedMetatileFuncs[])(u8) = { MetatileBehavior_IsWestBlocked }; -const struct Coords16 gDirectionToVectors[] = { +static const struct Coords16 sDirectionToVectors[] = { { 0, 0}, { 0, 1}, { 0, -1}, @@ -1461,11 +1461,11 @@ static u8 TrySetupEventObjectSprite(struct EventObjectTemplate *eventObjectTempl paletteSlot = graphicsInfo->paletteSlot; if (paletteSlot == 0) { - npc_load_two_palettes__no_record(graphicsInfo->paletteTag1, 0); + LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag1, 0); } else if (paletteSlot == 10) { - npc_load_two_palettes__and_record(graphicsInfo->paletteTag1, 10); + LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag1, 10); } else if (paletteSlot >= 16) { @@ -1653,7 +1653,7 @@ u8 sprite_new(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction) sprite->data[1] = z; if (graphicsInfo->paletteSlot == 10) { - npc_load_two_palettes__and_record(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot); + LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot); } else if (graphicsInfo->paletteSlot >= 16) { @@ -1806,11 +1806,11 @@ static void sub_808E1B8(u8 eventObjectId, s16 x, s16 y) paletteSlot = graphicsInfo->paletteSlot; if (paletteSlot == 0) { - npc_load_two_palettes__no_record(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot); + LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot); } else if (paletteSlot == 10) { - npc_load_two_palettes__and_record(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot); + LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot); } else if (paletteSlot >= 16) { @@ -1882,11 +1882,11 @@ void EventObjectSetGraphicsId(struct EventObject *eventObject, u8 graphicsId) paletteSlot = graphicsInfo->paletteSlot; if (paletteSlot == 0) { - pal_patch_for_npc(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot); + PatchObjectPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot); } else if (paletteSlot == 10) { - npc_load_two_palettes__and_record(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot); + LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot); } else if (paletteSlot >= 16) { @@ -1980,14 +1980,14 @@ const struct EventObjectGraphicsInfo *GetEventObjectGraphicsInfo(u8 graphicsId) { graphicsId = VarGetEventObjectGraphicsId(graphicsId - SPRITE_VAR); } - if (graphicsId == 0x45) + if (graphicsId == EVENT_OBJ_GFX_BARD) { bard = GetCurrentMauvilleOldMan(); return gMauvilleOldManGraphicsInfoPointers[bard]; } if (graphicsId >= NUM_OBJECT_GRAPHICS_INFO) { - graphicsId = 0x05; // LittleBoy1 + graphicsId = EVENT_OBJ_GFX_LITTLE_BOY_1; } return gEventObjectGraphicsInfoPointers[graphicsId]; } @@ -2071,7 +2071,7 @@ void sub_808E82C(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y) } } -void gpu_pal_allocator_reset__manage_upper_four(void) +void FreeAndReserveObjectSpritePalettes(void) { FreeAllSpritePalettes(); gReservedSpritePaletteCount = 12; @@ -2084,7 +2084,7 @@ static void sub_808E894(u16 paletteTag) paletteSlot = FindEventObjectPaletteIndexByTag(paletteTag); if (paletteSlot != 0x11ff) // always true { - sub_808E8F4(&gUnknown_0850BBC8[paletteSlot]); + sub_808E8F4(&sEventObjectSpritePalettes[paletteSlot]); } } @@ -2107,19 +2107,19 @@ static u8 sub_808E8F4(const struct SpritePalette *spritePalette) return LoadSpritePalette(spritePalette); } -void pal_patch_for_npc(u16 paletteTag, u8 paletteSlot) +void PatchObjectPalette(u16 paletteTag, u8 paletteSlot) { u16 paletteIdx; paletteIdx = FindEventObjectPaletteIndexByTag(paletteTag); - LoadPalette(gUnknown_0850BBC8[paletteIdx].data, 16 * paletteSlot + 256, 0x20); + LoadPalette(sEventObjectSpritePalettes[paletteIdx].data, 16 * paletteSlot + 256, 0x20); } -void pal_patch_for_npc_range(const u16 *paletteTags, u8 minSlot, u8 maxSlot) +void PatchObjectPaletteRange(const u16 *paletteTags, u8 minSlot, u8 maxSlot) { while (minSlot < maxSlot) { - pal_patch_for_npc(*paletteTags, minSlot); + PatchObjectPalette(*paletteTags, minSlot); paletteTags++; minSlot++; } @@ -2129,9 +2129,9 @@ static u8 FindEventObjectPaletteIndexByTag(u16 tag) { u8 i; - for (i = 0; gUnknown_0850BBC8[i].tag != 0x11ff; i++) + for (i = 0; sEventObjectSpritePalettes[i].tag != 0x11ff; i++) { - if (gUnknown_0850BBC8[i].tag == tag) + if (sEventObjectSpritePalettes[i].tag == tag) { return i; } @@ -2139,32 +2139,32 @@ static u8 FindEventObjectPaletteIndexByTag(u16 tag) return 0xff; } -void npc_load_two_palettes__no_record(u16 tag, u8 slot) +void LoadPlayerObjectReflectionPalette(u16 tag, u8 slot) { u8 i; - pal_patch_for_npc(tag, slot); - for (i = 0; gUnknown_0850BD00[i].tag != 0x11ff; i++) + PatchObjectPalette(tag, slot); + for (i = 0; gPlayerReflectionPaletteSets[i].tag != 0x11ff; i++) { - if (gUnknown_0850BD00[i].tag == tag) + if (gPlayerReflectionPaletteSets[i].tag == tag) { - pal_patch_for_npc(gUnknown_0850BD00[i].data[gUnknown_020375B4], gUnknown_084975C4[slot]); + PatchObjectPalette(gPlayerReflectionPaletteSets[i].data[sCurrentReflectionType], gReflectionEffectPaletteMap[slot]); return; } } } -void npc_load_two_palettes__and_record(u16 tag, u8 slot) +void LoadSpecialObjectReflectionPalette(u16 tag, u8 slot) { u8 i; - gUnknown_020375B6 = tag; - pal_patch_for_npc(tag, slot); - for (i = 0; gUnknown_0850BD78[i].tag != 0x11ff; i++) + sCurrentSpecialObjectPaletteTag = tag; + PatchObjectPalette(tag, slot); + for (i = 0; gSpecialObjectReflectionPaletteSets[i].tag != 0x11ff; i++) { - if (gUnknown_0850BD78[i].tag == tag) + if (gSpecialObjectReflectionPaletteSets[i].tag == tag) { - pal_patch_for_npc(gUnknown_0850BD78[i].data[gUnknown_020375B4], gUnknown_084975C4[slot]); + PatchObjectPalette(gSpecialObjectReflectionPaletteSets[i].data[sCurrentReflectionType], gReflectionEffectPaletteMap[slot]); return; } } @@ -2172,7 +2172,7 @@ void npc_load_two_palettes__and_record(u16 tag, u8 slot) static void sub_808EAB0(u16 tag, u8 slot) { - pal_patch_for_npc(tag, slot); + PatchObjectPalette(tag, slot); } void unref_sub_808EAC4(struct EventObject *eventObject, s16 x, s16 y) @@ -2191,7 +2191,7 @@ void ShiftEventObjectCoords(struct EventObject *eventObject, s16 x, s16 y) eventObject->currentCoords.y = y; } -/*static*/ void npc_coords_set(struct EventObject *eventObject, s16 x, s16 y) +/*static*/ void SetEventObjectCoords(struct EventObject *eventObject, s16 x, s16 y) { eventObject->previousCoords.x = x; eventObject->previousCoords.y = y; @@ -2206,7 +2206,7 @@ void sub_808EB08(struct EventObject *eventObject, s16 x, s16 y) sprite = &gSprites[eventObject->spriteId]; graphicsInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId); - npc_coords_set(eventObject, x, y); + SetEventObjectCoords(eventObject, x, y); sub_8093038(eventObject->currentCoords.x, eventObject->currentCoords.y, &sprite->pos1.x, &sprite->pos1.y); sprite->centerToCornerVecX = -(graphicsInfo->width >> 1); sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); @@ -2414,7 +2414,7 @@ u8 CopySprite(struct Sprite *sprite, s16 x, s16 y, u8 subpriority) return i; } -u8 obj_unfreeze(struct Sprite *sprite, s16 x, s16 y, u8 subpriority) +u8 CreateCopySpriteAt(struct Sprite *sprite, s16 x, s16 y, u8 subpriority) { s16 i; @@ -2610,35 +2610,35 @@ void sub_808F28C(u8 localId, u8 mapNum, u8 mapGroup, u8 decorCat) } } -void npc_paltag_set_load(u8 palSlot) +void InitEventObjectPalettes(u8 palSlot) { - gpu_pal_allocator_reset__manage_upper_four(); - gUnknown_020375B6 = 0x11ff; - gUnknown_020375B4 = palSlot; + FreeAndReserveObjectSpritePalettes(); + sCurrentSpecialObjectPaletteTag = 0x11ff; + sCurrentReflectionType = palSlot; if (palSlot == 1) { - pal_patch_for_npc_range(gUnknown_0850BE38[gUnknown_020375B4], 0, 6); + PatchObjectPaletteRange(gObjectPaletteTagSets[sCurrentReflectionType], 0, 6); gReservedSpritePaletteCount = 8; } else { - pal_patch_for_npc_range(gUnknown_0850BE38[gUnknown_020375B4], 0, 10); + PatchObjectPaletteRange(gObjectPaletteTagSets[sCurrentReflectionType], 0, 10); } } -u16 npc_paltag_by_palslot(u8 palSlot) +u16 GetObjectPaletteTag(u8 palSlot) { u8 i; if (palSlot < 10) { - return gUnknown_0850BE38[gUnknown_020375B4][palSlot]; + return gObjectPaletteTagSets[sCurrentReflectionType][palSlot]; } - for (i = 0; gUnknown_0850BD78[i].tag != 0x11ff; i++) + for (i = 0; gSpecialObjectReflectionPaletteSets[i].tag != 0x11ff; i++) { - if (gUnknown_0850BD78[i].tag == gUnknown_020375B6) + if (gSpecialObjectReflectionPaletteSets[i].tag == sCurrentSpecialObjectPaletteTag) { - return gUnknown_0850BD78[i].data[gUnknown_020375B4]; + return gSpecialObjectReflectionPaletteSets[i].data[sCurrentReflectionType]; } } return 0x11ff; @@ -4957,14 +4957,14 @@ void sub_8092EF0(u8 localId, u8 mapNum, u8 mapGroup) void MoveCoords(u8 direction, s16 *x, s16 *y) { - *x += gDirectionToVectors[direction].x; - *y += gDirectionToVectors[direction].y; + *x += sDirectionToVectors[direction].x; + *y += sDirectionToVectors[direction].y; } void sub_8092F60(u8 direction, s16 *x, s16 *y) { - *x += gDirectionToVectors[direction].x << 4; - *y += gDirectionToVectors[direction].y << 4; + *x += sDirectionToVectors[direction].x << 4; + *y += sDirectionToVectors[direction].y << 4; } static void MoveCoordsInDirection(u32 dir, s16 *x, s16 *y, s16 deltaX, s16 deltaY) @@ -4972,13 +4972,13 @@ static void MoveCoordsInDirection(u32 dir, s16 *x, s16 *y, s16 deltaX, s16 delta u8 direction = dir; s16 dx2 = (u16)deltaX; s16 dy2 = (u16)deltaY; - if (gDirectionToVectors[direction].x > 0) + if (sDirectionToVectors[direction].x > 0) *x += dx2; - if (gDirectionToVectors[direction].x < 0) + if (sDirectionToVectors[direction].x < 0) *x -= dx2; - if (gDirectionToVectors[direction].y > 0) + if (sDirectionToVectors[direction].y > 0) *y += dy2; - if (gDirectionToVectors[direction].y < 0) + if (sDirectionToVectors[direction].y < 0) *y -= dy2; } @@ -8389,32 +8389,32 @@ void UnfreezeEventObjects(void) void Step1(struct Sprite *sprite, u8 dir) { - sprite->pos1.x += gDirectionToVectors[dir].x; - sprite->pos1.y += gDirectionToVectors[dir].y; + sprite->pos1.x += sDirectionToVectors[dir].x; + sprite->pos1.y += sDirectionToVectors[dir].y; } void Step2(struct Sprite *sprite, u8 dir) { - sprite->pos1.x += 2 * (u16) gDirectionToVectors[dir].x; - sprite->pos1.y += 2 * (u16) gDirectionToVectors[dir].y; + sprite->pos1.x += 2 * (u16) sDirectionToVectors[dir].x; + sprite->pos1.y += 2 * (u16) sDirectionToVectors[dir].y; } void Step3(struct Sprite *sprite, u8 dir) { - sprite->pos1.x += 2 * (u16) gDirectionToVectors[dir].x + (u16) gDirectionToVectors[dir].x; - sprite->pos1.y += 2 * (u16) gDirectionToVectors[dir].y + (u16) gDirectionToVectors[dir].y; + sprite->pos1.x += 2 * (u16) sDirectionToVectors[dir].x + (u16) sDirectionToVectors[dir].x; + sprite->pos1.y += 2 * (u16) sDirectionToVectors[dir].y + (u16) sDirectionToVectors[dir].y; } void Step4(struct Sprite *sprite, u8 dir) { - sprite->pos1.x += 4 * (u16) gDirectionToVectors[dir].x; - sprite->pos1.y += 4 * (u16) gDirectionToVectors[dir].y; + sprite->pos1.x += 4 * (u16) sDirectionToVectors[dir].x; + sprite->pos1.y += 4 * (u16) sDirectionToVectors[dir].y; } void Step8(struct Sprite *sprite, u8 dir) { - sprite->pos1.x += 8 * (u16) gDirectionToVectors[dir].x; - sprite->pos1.y += 8 * (u16) gDirectionToVectors[dir].y; + sprite->pos1.x += 8 * (u16) sDirectionToVectors[dir].x; + sprite->pos1.y += 8 * (u16) sDirectionToVectors[dir].y; } void oamt_npc_ministep_reset(struct Sprite *sprite, u8 a2, u8 a3) diff --git a/src/evolution_scene.c b/src/evolution_scene.c index f039c5f24..ae15e79fe 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -66,7 +66,7 @@ extern void sub_807F19C(void); extern void sub_807B140(void); extern void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies); extern void Overworld_PlaySpecialMapMusic(void); -extern void sub_81BFA38(struct Pokemon *party, u8 monId, u8 partyCount, void *CB2_ptr, u16 move); +extern void ShowSelectMovePokemonSummaryScreen(struct Pokemon *party, u8 monId, u8 partyCount, void *CB2_ptr, u16 move); extern u8 sub_81C1B94(void); extern void sub_807F1A8(u8 arg0, const u8 *arg1, u8 arg2); extern void sub_800E084(void); @@ -918,7 +918,7 @@ static void Task_EvolutionScene(u8 taskID) if (!gPaletteFade.active) { FreeAllWindowBuffers(); - sub_81BFA38(gPlayerParty, gTasks[taskID].tPartyID, + ShowSelectMovePokemonSummaryScreen(gPlayerParty, gTasks[taskID].tPartyID, gPlayerPartyCount - 1, CB2_EvolutionSceneLoadGraphics, gMoveToLearn); gTasks[taskID].tLearnMoveState++; @@ -1222,7 +1222,7 @@ static void Task_TradeEvolutionScene(u8 taskID) } break; case 4: - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: sEvoCursorPos = 0; @@ -1252,7 +1252,7 @@ static void Task_TradeEvolutionScene(u8 taskID) Free(GetBgTilemapBuffer(0)); FreeAllWindowBuffers(); - sub_81BFA38(gPlayerParty, gTasks[taskID].tPartyID, + ShowSelectMovePokemonSummaryScreen(gPlayerParty, gTasks[taskID].tPartyID, gPlayerPartyCount - 1, CB2_TradeEvolutionSceneLoadGraphics, gMoveToLearn); gTasks[taskID].tLearnMoveState++; @@ -1484,7 +1484,7 @@ static void InitMovingBackgroundTask(bool8 isLink) LoadPalette(sUnknown_085B51E4, 0xA0, 0x20); - copy_decompressed_tile_data_to_vram_autofree(1, sUnknown_085B4134, FALSE, 0, 0); + DecompressAndLoadBgGfxUsingHeap(1, sUnknown_085B4134, FALSE, 0, 0); CopyToBgTilemapBuffer(1, sUnknown_085B482C, 0, 0); CopyToBgTilemapBuffer(outerBgId, sUnknown_085B4D10, 0, 0); CopyBgTilemapBufferToVram(1); diff --git a/src/field_effect.c b/src/field_effect.c index f047c78a3..ecda8578b 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -1,8 +1,6 @@ - -// Includes #include "global.h" #include "field_effect.h" -#include "battle_dome_cards.h" +#include "trainer_pokemon_sprites.h" #include "decompress.h" #include "field_camera.h" #include "field_effect_helpers.h" @@ -557,7 +555,7 @@ u8 AddNewGameBirchObject(s16 x, s16 y, u8 subpriority) #ifdef NONMATCHING u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y) { - u16 spriteId = sub_818D7D8(species, 0, 0x8000, 1, x, y, 0, gMonPaletteTable[species].tag); + u16 spriteId = CreateMonPicSprite_HandleDeoxys(species, 0, 0x8000, 1, x, y, 0, gMonPaletteTable[species].tag); PreservePaletteInWeather(IndexOfSpritePaletteTag(gMonPaletteTable[species].tag) + 0x10); if (spriteId == 0xFFFF) return 0x40; @@ -590,7 +588,7 @@ u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y) movs r1, 0\n\ adds r2, r3, 0\n\ movs r3, 0x1\n\ - bl sub_818D7D8\n\ + bl CreateMonPicSprite_HandleDeoxys\n\ lsls r0, 16\n\ lsrs r5, r0, 16\n\ ldrh r0, [r4, 0x4]\n\ @@ -619,7 +617,7 @@ _080B5FDE:\n\ u8 CreateMonSprite_FieldMove(u16 species, u32 d, u32 g, s16 x, s16 y, u8 subpriority) { const struct CompressedSpritePalette *spritePalette = GetMonSpritePalStructFromOtIdPersonality(species, d, g); - u16 spriteId = sub_818D7D8(species, d, g, 1, x, y, 0, spritePalette->tag); + u16 spriteId = CreateMonPicSprite_HandleDeoxys(species, d, g, 1, x, y, 0, spritePalette->tag); PreservePaletteInWeather(IndexOfSpritePaletteTag(spritePalette->tag) + 0x10); if (spriteId == 0xFFFF) return 0x40; @@ -634,7 +632,7 @@ void FreeResourcesAndDestroySprite(struct Sprite *sprite, u8 spriteId) { FreeOamMatrix(sprite->oam.matrixNum); } - sub_818D820(spriteId); + FreeAndDestroyMonPicSprite(spriteId); } #ifdef NONMATCHING @@ -1172,7 +1170,7 @@ void task00_8084310(u8 taskId) if (!FieldEffectActiveListContains(FLDEFF_USE_FLY)) { Overworld_ResetStateAfterFly(); - warp_in(); + WarpIntoMap(); SetMainCallback2(CB2_LoadMap); gFieldCallback = mapldr_08084390; DestroyTask(taskId); @@ -1357,7 +1355,7 @@ void sub_80B6FB8(struct Task *); void sub_80B7004(struct Task *); void sub_80B7050(void); void sub_80B7060(void); -bool8 sub_80859A0(void); +bool8 BGMusicStopped(void); void sub_80B70B4(void); void sub_80E1570(void); void sub_80B70DC(u8); @@ -1478,10 +1476,10 @@ void sub_80B7050(void) void sub_80B7060(void) { - if (!gPaletteFade.active && sub_80859A0() == TRUE) + if (!gPaletteFade.active && BGMusicStopped() == TRUE) { sub_80E1570(); - warp_in(); + WarpIntoMap(); gFieldCallback = sub_80B70B4; SetMainCallback2(CB2_LoadMap); DestroyTask(FindTaskIdByFunc(sub_80B6E88)); @@ -1840,9 +1838,9 @@ bool8 sub_80B77F8(struct Task *task, struct EventObject *eventObject, struct Spr bool8 sub_80B7814(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite) { - if (!gPaletteFade.active && sub_80859A0() == TRUE) + if (!gPaletteFade.active && BGMusicStopped() == TRUE) { - warp_in(); + WarpIntoMap(); gFieldCallback = mapldr_080851BC; SetMainCallback2(CB2_LoadMap); DestroyTask(FindTaskIdByFunc(sub_80B75F0)); @@ -2006,9 +2004,9 @@ void mapldr_080859D4(void); bool8 sub_80B7BF4(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite) { - if (!gPaletteFade.active && sub_80859A0() == TRUE) + if (!gPaletteFade.active && BGMusicStopped() == TRUE) { - warp_in(); + WarpIntoMap(); gFieldCallback = sub_80B6B68; SetMainCallback2(CB2_LoadMap); DestroyTask(FindTaskIdByFunc(sub_80B7A8C)); @@ -2065,11 +2063,11 @@ void sub_80B7D34(struct Task *task) eventObject = &gEventObjects[gPlayerAvatar.eventObjectId]; if (!EventObjectIsMovementOverridden(eventObject) || EventObjectClearHeldMovementIfFinished(eventObject)) { - if (task->data[14] == 0 && !gPaletteFade.active && sub_80859A0() == TRUE) + if (task->data[14] == 0 && !gPaletteFade.active && BGMusicStopped() == TRUE) { SetEventObjectDirection(eventObject, task->data[15]); sub_8084E14(); - warp_in(); + WarpIntoMap(); gFieldCallback = mapldr_080859D4; SetMainCallback2(CB2_LoadMap); DestroyTask(FindTaskIdByFunc(sub_80B7CE4)); @@ -2236,10 +2234,10 @@ static void TeleportFieldEffectTask4(struct Task *task) task->data[5] = TRUE; } - if (sub_80859A0() == TRUE) + if (BGMusicStopped() == TRUE) { Overworld_SetWarpDestToLastHealLoc(); - warp_in(); + WarpIntoMap(); SetMainCallback2(CB2_LoadMap); gFieldCallback = mapldr_08085D88; DestroyTask(FindTaskIdByFunc(ExecuteTeleportFieldEffectTask)); diff --git a/src/field_message_box.c b/src/field_message_box.c index 8ca291e33..7ed87e837 100755 --- a/src/field_message_box.c +++ b/src/field_message_box.c @@ -4,7 +4,9 @@ #include "string_util.h" #include "task.h" #include "text.h" -#include "battle_frontier_1.h" + +extern bool32 sub_8196094(void); +extern void sub_8196080(u8*); EWRAM_DATA u8 gUnknown_020375BC = 0; @@ -23,7 +25,7 @@ void sub_8098128(void) void sub_8098154(u8 taskId) { struct Task *task = &gTasks[taskId]; - + switch (task->data[0]) { case 0: @@ -61,12 +63,12 @@ bool8 ShowFieldMessage(u8 *str) return FALSE; textbox_fdecode_auto_and_task_add(str, 1); gUnknown_020375BC = 2; - return TRUE; + return TRUE; } void sub_8098214(u8 taskId) { - if (sub_8196094() == 0) + if (!sub_8196094()) { gUnknown_020375BC = 0; DestroyTask(taskId); diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c new file mode 100644 index 000000000..6ab721643 --- /dev/null +++ b/src/field_player_avatar.c @@ -0,0 +1,581 @@ +#include "global.h" +#include "global.fieldmap.h" +#include "sprite.h" +#include "event_object_movement.h" +#include "bike.h" +#include "metatile_behavior.h" +#include "metatile_behaviors.h" +#include "constants/flags.h" +#include "event_data.h" +#include "fieldmap.h" +#include "overworld.h" +#include "rotating_gate.h" +#include "constants/event_object_movement_constants.h" +#include "field_player_avatar.h" + +extern void task_add_bump_boulder(u8, u8); +static bool8 ShouldJumpLedge(s16, s16, u8); +static bool8 sub_808B1BC(s16, s16, u8); +static u8 sub_808B164(struct EventObject *, s16, s16, u8, u8); +static u8 sub_808B238(s16, s16, u8); +static void check_acro_bike_metatile(s16, s16, u8, u8 *); +extern void PlayerNotOnBikeCollide(u8); +extern void PlayerNotOnBikeCollideWithFarawayIslandMew(u8); +extern void PlayerRun(u8); +static void MovePlayerNotOnBike(u8, u16); +static u8 CheckMovementInputNotOnBike(u8); +extern void sub_808C5B0(void); +extern void sub_808C4D8(void); +static u8 CheckForPlayerAvatarCollision(u8); +static u8 EventObjectCB2_NoMovement2(); +extern void sub_808C280(struct EventObject *); +static bool8 TryInterruptEventObjectSpecialAnim(struct EventObject *, u8); +void npc_clear_strange_bits(struct EventObject *); +extern void DoPlayerAvatarTransition(void); +static bool8 TryDoMetatileBehaviorForcedMovement(); +static void MovePlayerAvatarUsingKeypadInput(u8, u16, u16); +static void PlayerAllowForcedMovementIfMovingSameDirection(); +static u8 sub_808B028(u8); +static u8 GetForcedMovementByMetatileBehavior(); +static void PlayerNotOnBikeNotMoving(u8, u16); +static void PlayerNotOnBikeTurningInPlace(u8, u16); +static void PlayerNotOnBikeMoving(u8, u16); +extern void sub_808C750(u8); + +static bool8 (*const gUnknown_084973FC[])(u8) = +{ + MetatileBehavior_IsTrickHouseSlipperyFloor, + MetatileBehavior_IsIce_2, + MetatileBehavior_IsWalkSouth, + MetatileBehavior_IsWalkNorth, + MetatileBehavior_IsWalkWest, + MetatileBehavior_IsWalkEast, + MetatileBehavior_IsSouthwardCurrent, + MetatileBehavior_IsNorthwardCurrent, + MetatileBehavior_IsWestwardCurrent, + MetatileBehavior_IsEastwardCurrent, + MetatileBehavior_IsSlideSouth, + MetatileBehavior_IsSlideNorth, + MetatileBehavior_IsSlideWest, + MetatileBehavior_IsSlideEast, + MetatileBehavior_IsWaterfall, + MetatileBehavior_IsSecretBaseJumpMat, + MetatileBehavior_IsSecretBaseSpinMat, + MetatileBehavior_IsMuddySlope, +}; + +static bool8 (*const gUnknown_08497444[])(void) = +{ + ForcedMovement_None, + ForcedMovement_Slip, + ForcedMovement_Slip, + ForcedMovement_WalkSouth, + ForcedMovement_WalkNorth, + ForcedMovement_WalkWest, + ForcedMovement_WalkEast, + ForcedMovement_PushedSouthByCurrent, + ForcedMovement_PushedNorthByCurrent, + ForcedMovement_PushedWestByCurrent, + ForcedMovement_PushedEastByCurrent, + ForcedMovement_SlideSouth, + ForcedMovement_SlideNorth, + ForcedMovement_SlideWest, + ForcedMovement_SlideEast, + ForcedMovement_PushedSouthByCurrent, + ForcedMovement_0xBB, + ForcedMovement_0xBC, + ForcedMovement_MuddySlope, +}; + +static void (*const gUnknown_08497490[])(u8, u16) = +{ + PlayerNotOnBikeNotMoving, + PlayerNotOnBikeTurningInPlace, + PlayerNotOnBikeMoving, +}; + +static bool8 (*const gUnknown_0849749C[])(u8) = +{ + MetatileBehavior_IsBumpySlope, + MetatileBehavior_IsIsolatedVerticalRail, + MetatileBehavior_IsIsolatedHorizontalRail, + MetatileBehavior_IsVerticalRail, + MetatileBehavior_IsHorizontalRail, +}; + +static const u8 gUnknown_084974B0[] = {9, 10, 11, 12, 13, 0, 0, 0}; + +void MovementType_Player(struct Sprite *sprite) +{ + UpdateEventObjectCurrentMovement(&gEventObjects[sprite->data[0]], sprite, EventObjectCB2_NoMovement2); +} + +static u8 EventObjectCB2_NoMovement2() +{ + return 0; +} + +void player_step(u8 direction, u16 newKeys, u16 heldKeys) +{ + struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId]; + + sub_808C280(playerEventObj); + if (gPlayerAvatar.preventStep == FALSE) + { + Bike_TryAcroBikeHistoryUpdate(newKeys, heldKeys); + if (TryInterruptEventObjectSpecialAnim(playerEventObj, direction) == 0) + { + npc_clear_strange_bits(playerEventObj); + DoPlayerAvatarTransition(); + if (TryDoMetatileBehaviorForcedMovement() == 0) + { + MovePlayerAvatarUsingKeypadInput(direction, newKeys, heldKeys); + PlayerAllowForcedMovementIfMovingSameDirection(); + } + } + } +} + +static bool8 TryInterruptEventObjectSpecialAnim(struct EventObject *playerEventObj, u8 direction) +{ + #ifdef NONMATCHING + u8 r5 = direction; + u8 r6 = direction; + #else + u8 r5 = direction; + register u8 r6 asm("r6") = direction; + #endif + //a very bad HACK + + if (EventObjectIsMovementOverridden(playerEventObj) + && !EventObjectClearHeldMovementIfFinished(playerEventObj)) + { + u8 heldMovementActionId = EventObjectGetHeldMovementActionId(playerEventObj); + if (heldMovementActionId > MOVEMENT_ACTION_WALK_FAST_RIGHT && heldMovementActionId < MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_DOWN) + { + if (direction == DIR_NONE) + { + return TRUE; + } + + if (playerEventObj->movementDirection != r5) + { + EventObjectClearHeldMovement(playerEventObj); + return FALSE; + } + + if (!sub_808B028(r6)) + { + EventObjectClearHeldMovement(playerEventObj); + return FALSE; + } + } + + return TRUE; + } + + return FALSE; +} + +void npc_clear_strange_bits(struct EventObject *eventObj) +{ + eventObj->inanimate = 0; + eventObj->disableAnim = 0; + eventObj->facingDirectionLocked = 0; + gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_DASH; +} + +static void MovePlayerAvatarUsingKeypadInput(u8 direction, u16 newKeys, u16 heldKeys) +{ + if ((gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE) + || (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ACRO_BIKE)) + MovePlayerOnBike(direction, newKeys, heldKeys); + else + MovePlayerNotOnBike(direction, heldKeys); +} + +static void PlayerAllowForcedMovementIfMovingSameDirection(void) +{ + if (gPlayerAvatar.runningState == MOVING) + gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_5; +} + +static bool8 TryDoMetatileBehaviorForcedMovement() +{ + return gUnknown_08497444[GetForcedMovementByMetatileBehavior()](); +} + +static u8 GetForcedMovementByMetatileBehavior(void) +{ + u8 i; + + if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_5)) + { + u8 metatileBehavior = gEventObjects[gPlayerAvatar.eventObjectId].currentMetatileBehavior; + + for (i = 0; i < 18; i++) + { + if (gUnknown_084973FC[i](metatileBehavior)) + return i + 1; + } + } + return 0; +} + +bool8 ForcedMovement_None(void) +{ + if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_6) + { + struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId]; + + playerEventObj->facingDirectionLocked = 0; + playerEventObj->enableAnim = 1; + SetEventObjectDirection(playerEventObj, playerEventObj->facingDirection); + gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_6; + } + return FALSE; +} + +static u8 DoForcedMovement(u8 direction, void (*b)(u8)) +{ + struct PlayerAvatar *playerAvatar = &gPlayerAvatar; + u8 collisionType = CheckForPlayerAvatarCollision(direction); + + playerAvatar->flags |= PLAYER_AVATAR_FLAG_6; + if (collisionType != 0) + { + ForcedMovement_None(); + if (collisionType <= 4) + { + return 0; + } + else + { + if (collisionType == COLLISION_LEDGE_JUMP) + PlayerJumpLedge(direction); + playerAvatar->flags |= PLAYER_AVATAR_FLAG_6; + playerAvatar->runningState = MOVING; + return 1; + } + } + else + { + playerAvatar->runningState = MOVING; + b(direction); + return 1; + } +} + +u8 DoForcedMovementInCurrentDirection(void (*a)(u8)) +{ + struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId]; + + playerEventObj->disableAnim = 1; + return DoForcedMovement(playerEventObj->movementDirection, a); +} + +bool8 ForcedMovement_Slip(void) +{ + return DoForcedMovementInCurrentDirection(PlayerGoSpeed2); +} + +bool8 ForcedMovement_WalkSouth(void) +{ + return DoForcedMovement(DIR_SOUTH, PlayerGoSpeed1); +} + +bool8 ForcedMovement_WalkNorth(void) +{ + return DoForcedMovement(DIR_NORTH, PlayerGoSpeed1); +} + +bool8 ForcedMovement_WalkWest(void) +{ + return DoForcedMovement(DIR_WEST, PlayerGoSpeed1); +} + +bool8 ForcedMovement_WalkEast(void) +{ + return DoForcedMovement(DIR_EAST, PlayerGoSpeed1); +} + +bool8 ForcedMovement_PushedSouthByCurrent(void) +{ + return DoForcedMovement(DIR_SOUTH, PlayerGoSpeed3); +} + +bool8 ForcedMovement_PushedNorthByCurrent(void) +{ + return DoForcedMovement(DIR_NORTH, PlayerGoSpeed3); +} + +bool8 ForcedMovement_PushedWestByCurrent(void) +{ + return DoForcedMovement(DIR_WEST, PlayerGoSpeed3); +} + +bool8 ForcedMovement_PushedEastByCurrent(void) +{ + return DoForcedMovement(DIR_EAST, PlayerGoSpeed3); +} + +u8 ForcedMovement_Slide(u8 direction, void (*b)(u8)) +{ + struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId]; + + playerEventObj->disableAnim = 1; + playerEventObj->facingDirectionLocked = 1; + return DoForcedMovement(direction, b); +} + +bool8 ForcedMovement_SlideSouth(void) +{ + return ForcedMovement_Slide(DIR_SOUTH, PlayerGoSpeed2); +} + +bool8 ForcedMovement_SlideNorth(void) +{ + return ForcedMovement_Slide(DIR_NORTH, PlayerGoSpeed2); +} + +bool8 ForcedMovement_SlideWest(void) +{ + return ForcedMovement_Slide(DIR_WEST, PlayerGoSpeed2); +} + +bool8 ForcedMovement_SlideEast(void) +{ + return ForcedMovement_Slide(DIR_EAST, PlayerGoSpeed2); +} + +bool8 ForcedMovement_0xBB(void) +{ + sub_808C4D8(); + return TRUE; +} + +bool8 ForcedMovement_0xBC(void) +{ + sub_808C5B0(); + return TRUE; +} + +bool8 ForcedMovement_MuddySlope(void) +{ + struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId]; + + if (playerEventObj->movementDirection != DIR_NORTH || GetPlayerSpeed() <= 3) + { + Bike_UpdateBikeCounterSpeed(0); + playerEventObj->facingDirectionLocked = 1; + return DoForcedMovement(1, PlayerGoSpeed2); + } + else + { + return FALSE; + } +} + +static void MovePlayerNotOnBike(u8 direction, u16 heldKeys) +{ + gUnknown_08497490[CheckMovementInputNotOnBike(direction)](direction, heldKeys); +} + +static u8 CheckMovementInputNotOnBike(u8 direction) +{ + if (direction == DIR_NONE) + { + gPlayerAvatar.runningState = NOT_MOVING; + return 0; + } + else if (direction != GetPlayerMovementDirection() && gPlayerAvatar.runningState != MOVING) + { + gPlayerAvatar.runningState = TURN_DIRECTION; + return 1; + } + else + { + gPlayerAvatar.runningState = MOVING; + return 2; + } +} + +static void PlayerNotOnBikeNotMoving(u8 direction, u16 heldKeys) +{ + PlayerFaceDirection(GetPlayerFacingDirection()); +} + +static void PlayerNotOnBikeTurningInPlace(u8 direction, u16 heldKeys) +{ + PlayerTurnInPlace(direction); +} + +static void PlayerNotOnBikeMoving(u8 direction, u16 heldKeys) +{ + u8 r0 = CheckForPlayerAvatarCollision(direction); + + if (r0 != 0) + { + if (r0 == 6) + { + PlayerJumpLedge(direction); + return; + } + else if (r0 == 4 && IsPlayerCollidingWithFarawayIslandMew(direction) != 0) + { + PlayerNotOnBikeCollideWithFarawayIslandMew(direction); + return; + } + else + { + u8 r4 = r0 - 5; + + if (r4 > 3) + { + PlayerNotOnBikeCollide(direction); + return; + } + else + { + return; + } + } + } + + if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING) + { + // speed 2 is fast, same speed as running + PlayerGoSpeed2(direction); + return; + } + + if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_4) && (heldKeys & B_BUTTON) && FlagGet(FLAG_SYS_B_DASH) + && IsRunningDisallowed(gEventObjects[gPlayerAvatar.eventObjectId].currentMetatileBehavior) == 0) + { + PlayerRun(direction); + gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_DASH; + return; + } + else + { + PlayerGoSpeed1(direction); + } +} + +static u8 CheckForPlayerAvatarCollision(u8 direction) +{ + s16 x, y; + struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId]; + + x = playerEventObj->currentCoords.x; + y = playerEventObj->currentCoords.y; + MoveCoords(direction, &x, &y); + return CheckForEventObjectCollision(playerEventObj, x, y, direction, MapGridGetMetatileBehaviorAt(x, y)); +} + +static u8 sub_808B028(u8 direction) +{ + s16 x, y; + struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId]; + + x = playerEventObj->currentCoords.x; + y = playerEventObj->currentCoords.y; + MoveCoords(direction, &x, &y); + return sub_808B164(playerEventObj, x, y, direction, MapGridGetMetatileBehaviorAt(x, y)); +} + +u8 CheckForEventObjectCollision(struct EventObject *a, s16 x, s16 y, u8 direction, u8 e) +{ + u8 collision; + + collision = GetCollisionAtCoords(a, x, y, direction); + if (collision == 3 && sub_808B1BC(x, y, direction)) + return 5; + if (ShouldJumpLedge(x, y, direction)) + { + IncrementGameStat(GAME_STAT_JUMPED_DOWN_LEDGES); + return COLLISION_LEDGE_JUMP; + } + if (collision == 4 && sub_808B238(x, y, direction)) + return 7; + + if (collision == 0) + { + if (CheckForRotatingGatePuzzleCollision(direction, x, y)) + return 8; + check_acro_bike_metatile(x, y, e, &collision); + } + return collision; +} + +static u8 sub_808B164(struct EventObject *a, s16 x, s16 y, u8 direction, u8 e) +{ + u8 collision = GetCollisionAtCoords(a, x, y, direction); + + if (collision == 0) + { + if (CheckForRotatingGatePuzzleCollisionWithoutAnimation(direction, x, y) != 0) + return 8; + check_acro_bike_metatile(x, y, e, &collision); + } + return collision; +} + +static bool8 sub_808B1BC(s16 x, s16 y, u8 direction) +{ + if ((gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING) + && MapGridGetZCoordAt(x, y) == 3 + && GetEventObjectIdByXYZ(x, y, 3) == 16) + { + sub_808C750(direction); + return TRUE; + } + else + { + return FALSE; + } +} + +static bool8 ShouldJumpLedge(s16 x, s16 y, u8 z) +{ + if (GetLedgeJumpDirection(x, y, z) != 0) + return TRUE; + else + return FALSE; +} + +static u8 sub_808B238(s16 x, s16 y, u8 direction) +{ + if (FlagGet(FLAG_SYS_USE_STRENGTH)) + { + u8 eventObjectId = GetEventObjectIdByXY(x, y); + + if (eventObjectId != 16 && gEventObjects[eventObjectId].graphicsId == 0x57) + { + x = gEventObjects[eventObjectId].currentCoords.x; + y = gEventObjects[eventObjectId].currentCoords.y; + MoveCoords(direction, &x, &y); + if (GetCollisionAtCoords(&gEventObjects[eventObjectId], x, y, direction) == 0 + && MetatileBehavior_IsNonAnimDoor(MapGridGetMetatileBehaviorAt(x, y)) == 0) + { + task_add_bump_boulder(eventObjectId, direction); + return 1; + } + } + } + return 0; +} + +static void check_acro_bike_metatile(s16 unused1, s16 unused2, u8 c, u8 *d) +{ + u8 i; + + for (i = 0; i < 5; i++) + { + if (gUnknown_0849749C[i](c)) + { + *d = gUnknown_084974B0[i]; + return; + } + } +} diff --git a/src/field_region_map.c b/src/field_region_map.c index 34b6089df..d77bde01b 100644 --- a/src/field_region_map.c +++ b/src/field_region_map.c @@ -55,15 +55,32 @@ static const struct BgTemplate gUnknown_085E5068[] = { } }; -static const struct WindowTemplate gUnknown_085E5070[] = { - { 0, 17, 17, 12, 2, 15, 0x0001 }, - { 0, 22, 1, 7, 2, 15, 0x0019 }, +static const struct WindowTemplate gUnknown_085E5070[] = +{ + { + .priority = 0, + .tilemapLeft = 17, + .tilemapTop = 17, + .width = 12, + .height = 2, + .paletteNum = 15, + .baseBlock = 1 + }, + { + .priority = 0, + .tilemapLeft = 22, + .tilemapTop = 1, + .width = 7, + .height = 2, + .paletteNum = 15, + .baseBlock = 25 + }, DUMMY_WIN_TEMPLATE }; // .text -void sub_817018C(MainCallback callback) +void FieldInitRegionMap(MainCallback callback) { SetVBlankCallback(NULL); sFieldRegionMapHandler = malloc(sizeof(*sFieldRegionMapHandler)); diff --git a/src/field_special_scene.c b/src/field_special_scene.c index 39977808f..c6cb0741d 100644 --- a/src/field_special_scene.c +++ b/src/field_special_scene.c @@ -63,32 +63,24 @@ s16 GetTruckBoxMovement(int a1) // for the box movement? return 0; } -// smh STILL BROKEN IN EMERALD void Task_Truck1(u8 taskId) { s16 *data = gTasks[taskId].data; - s16 cameraYpan; - s16 box1 = 0; - s16 box2 = 0; - s16 box3 = 0; - u8 mapNum, mapGroup; - register s16 zero asm("r4"); + s16 cameraXpan = 0, cameraYpan = 0; + s16 box1, box2, box3; box1 = GetTruckBoxMovement(data[0] + 30) * 4; // top box. - sub_808E82C(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3, box1 + 3); + sub_808E82C(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, box1 + 3); box2 = GetTruckBoxMovement(data[0]) * 2; // bottom left box. - sub_808E82C(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 0, box2 - 3); + sub_808E82C(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, box2 - 3); box3 = GetTruckBoxMovement(data[0]) * 4; // bottom right box. - mapNum = gSaveBlock1Ptr->location.mapNum; - mapGroup = gSaveBlock1Ptr->location.mapGroup; - zero = 0; - sub_808E82C(3, mapNum, mapGroup, -3, box3); + sub_808E82C(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, box3); if (++data[0] == SECONDS(500)) // this will never run - data[0] = zero; // reset the timer if it gets stuck. + data[0] = 0; // reset the timer if it gets stuck. cameraYpan = GetTruckCameraBobbingY(data[0]); - SetCameraPanning(0, cameraYpan); + SetCameraPanning(cameraXpan, cameraYpan); } void Task_Truck2(u8 taskId) @@ -272,7 +264,7 @@ bool8 sub_80FB59C(void) void Task_HandlePorthole(u8 taskId) { s16 *data = gTasks[taskId].data; - u16 *var = GetVarPointer(VAR_PORTHOLE); + u16 *var = GetVarPointer(VAR_PORTHOLE_STATE); struct WarpData *location = &gSaveBlock1Ptr->location; switch (data[0]) diff --git a/src/field_specials.c b/src/field_specials.c new file mode 100644 index 000000000..14f99b426 --- /dev/null +++ b/src/field_specials.c @@ -0,0 +1,4330 @@ +#include "global.h" +#include "main.h" +#include "battle.h" +#include "battle_tower.h" +#include "cable_club.h" +#include "data2.h" +#include "decoration.h" +#include "diploma.h" +#include "event_data.h" +#include "event_object_movement.h" +#include "fieldmap.h" +#include "field_camera.h" +#include "field_effect.h" +#include "field_message_box.h" +#include "field_player_avatar.h" +#include "field_region_map.h" +#include "field_screen.h" +#include "field_specials.h" +#include "field_weather.h" +#include "international_string_util.h" +#include "item_icon.h" +#include "link.h" +#include "list_menu.h" +#include "malloc.h" +#include "match_call.h" +#include "menu.h" +#include "overworld.h" +#include "party_menu.h" +#include "pokeblock.h" +#include "pokemon.h" +#include "pokemon_storage_system.h" +#include "random.h" +#include "rayquaza_scene.h" +#include "region_map.h" +#include "rom_8011DC0.h" +#include "rtc.h" +#include "script.h" +#include "script_menu.h" +#include "sound.h" +#include "starter_choose.h" +#include "string_util.h" +#include "strings.h" +#include "task.h" +#include "text.h" +#include "tv.h" +#include "wallclock.h" +#include "window.h" +#include "constants/event_objects.h" +#include "constants/items.h" +#include "constants/maps.h" +#include "constants/songs.h" +#include "constants/species.h" +#include "constants/moves.h" +#include "constants/vars.h" +#include "constants/battle_frontier.h" + +EWRAM_DATA bool8 gBikeCyclingChallenge = FALSE; +EWRAM_DATA u8 gBikeCollisions = 0; +EWRAM_DATA u32 gBikeCyclingTimer = 0; +EWRAM_DATA u8 gUnknown_0203AB5C = 0; +EWRAM_DATA u8 gUnknown_0203AB5D = 0; +EWRAM_DATA u8 gUnknown_0203AB5E = 0; +EWRAM_DATA u16 gUnknown_0203AB60 = 0; +EWRAM_DATA u16 gUnknown_0203AB62 = 0; +EWRAM_DATA struct ListMenuItem *gUnknown_0203AB64 = NULL; +EWRAM_DATA u16 gUnknown_0203AB68 = 0; +EWRAM_DATA u16 gUnknown_0203AB6A = 0; +EWRAM_DATA u8 gUnknown_0203AB6C = 0; +EWRAM_DATA u8 gUnknown_0203AB6D = 0; +EWRAM_DATA u8 gUnknown_0203AB6E = 0; +EWRAM_DATA u8 gUnknown_0203AB6F = 0; +EWRAM_DATA u32 gUnknown_0203AB70 = 0; + +struct ListMenuTemplate gUnknown_030061D0; + +extern const u16 gEventObjectPalette8[]; +extern const u16 gEventObjectPalette17[]; +extern const u16 gEventObjectPalette33[]; +extern const u16 gEventObjectPalette34[]; + +extern void LoadPalette(const void *src, u32 offset, u16 size); // incorrect signature, needed to match +extern void BlendPalettes(u32, u8, u16); + +void UpdateMovedLilycoveFanClubMembers(void); +void sub_813BF60(void); +u16 GetNumMovedLilycoveFanClubMembers(void); + +static void RecordCyclingRoadResults(u32, u8); +static void LoadLinkPartnerEventObjectSpritePalette(u8 graphicsId, u8 localEventId, u8 paletteNum); +static void Task_PetalburgGym(u8); +static void PetalburgGymFunc(u8, u16); +static void Task_PCTurnOnEffect(u8); +static void PCTurnOnEffect_0(struct Task *); +static void PCTurnOnEffect_1(s16, s8, s8); +static void PCTurnOffEffect(void); +static void Task_LotteryCornerComputerEffect(u8); +static void LotteryCornerComputerEffect(struct Task *); +static void sub_81395BC(u8 taskId); +static void sub_8139620(u8 taskId); +static void sub_8139AF4(u8 taskId); +static void sub_8139C2C(u16 a1, u8 a2); +static void sub_8139C80(u8 taskId); +static void sub_813A2DC(u8 taskId); +static void sub_813AA60(u16 a0, u16 a1); +static void sub_813ACE8(u8 a0, u16 a1); +static void sub_813A42C(void); +static void sub_813A4EC(u8 taskId); +static void sub_813A694(u8 taskId); +static void sub_813A46C(s32 itemIndex, bool8 onInit, struct ListMenu *list); +static void sub_813AC44(u16 a0, u16 a1); +static void sub_813AD34(u8 a0, u16 a1); +static void sub_813A570(u8 taskId); +static void sub_813A738(u8 taskId); +static void sub_813A600(u8 taskId); +static void sub_813A664(u8 taskId); +static void sub_813ABD4(u16 a0); +static void task_deoxys_sound(u8 taskId); +static void sub_813B0B4(u8 a0); +static void sub_813B160(u8 taskId); +static void sub_813B57C(u8 taskId); +static void sub_813B824(u8 taskId); +static void _fwalk(u8 taskId); +static u8 sub_813BF44(void); +static void sub_813BD84(void); +static u16 sub_813BB74(void); +static void sub_813BE30(struct LinkBattleRecords *linkRecords, u8 a, u8 b); + +void Special_ShowDiploma(void) +{ + SetMainCallback2(CB2_ShowDiploma); + ScriptContext2_Enable(); +} + +void Special_ViewWallClock(void) +{ + gMain.savedCallback = CB2_ReturnToField; + SetMainCallback2(CB2_ViewWallClock); + ScriptContext2_Enable(); +} + +void ResetCyclingRoadChallengeData(void) +{ + gBikeCyclingChallenge = FALSE; + gBikeCollisions = 0; + gBikeCyclingTimer = 0; +} + +void Special_BeginCyclingRoadChallenge(void) +{ + gBikeCyclingChallenge = TRUE; + gBikeCollisions = 0; + gBikeCyclingTimer = gMain.vblankCounter1; +} + +u16 GetPlayerAvatarBike(void) +{ + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE)) + return 1; + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE)) + return 2; + return 0; +} + +static void DetermineCyclingRoadResults(u32 numFrames, u8 numBikeCollisions) +{ + u8 result; + + if (numBikeCollisions < 100) + { + ConvertIntToDecimalStringN(gStringVar1, numBikeCollisions, STR_CONV_MODE_LEFT_ALIGN, 2); + StringAppend(gStringVar1, gText_SpaceTimes); + } + else + { + StringCopy(gStringVar1, gText_99TimesPlus); + } + + if (numFrames < 3600) + { + ConvertIntToDecimalStringN(gStringVar2, numFrames / 60, STR_CONV_MODE_RIGHT_ALIGN, 2); + gStringVar2[2] = CHAR_PERIOD; + ConvertIntToDecimalStringN(&gStringVar2[3], ((numFrames % 60) * 100) / 60, STR_CONV_MODE_LEADING_ZEROS, 2); + StringAppend(gStringVar2, gText_SpaceSeconds); + } + else + { + StringCopy(gStringVar2, gText_1MinutePlus); + } + + result = 0; + if (numBikeCollisions == 0) + { + result = 5; + } + else if (numBikeCollisions < 4) + { + result = 4; + } + else if (numBikeCollisions < 10) + { + result = 3; + } + else if (numBikeCollisions < 20) + { + result = 2; + } + else if (numBikeCollisions < 100) + { + result = 1; + } + + if (numFrames / 60 <= 10) + { + result += 5; + } + else if (numFrames / 60 <= 15) + { + result += 4; + } + else if (numFrames / 60 <= 20) + { + result += 3; + } + else if (numFrames / 60 <= 40) + { + result += 2; + } + else if (numFrames / 60 < 60) + { + result += 1; + } + + + gSpecialVar_Result = result; +} + +void FinishCyclingRoadChallenge(void) { + const u32 numFrames = gMain.vblankCounter1 - gBikeCyclingTimer; + + DetermineCyclingRoadResults(numFrames, gBikeCollisions); + RecordCyclingRoadResults(numFrames, gBikeCollisions); +} + +static void RecordCyclingRoadResults(u32 numFrames, u8 numBikeCollisions) { + u16 low = VarGet(VAR_CYCLING_ROAD_RECORD_TIME_L); + u16 high = VarGet(VAR_CYCLING_ROAD_RECORD_TIME_H); + u32 framesRecord = low + (high << 16); + + if (framesRecord > numFrames || framesRecord == 0) + { + VarSet(VAR_CYCLING_ROAD_RECORD_TIME_L, numFrames); + VarSet(VAR_CYCLING_ROAD_RECORD_TIME_H, numFrames >> 16); + VarSet(VAR_CYCLING_ROAD_RECORD_COLLISIONS, numBikeCollisions); + } +} + +u16 GetRecordedCyclingRoadResults(void) { + u16 low = VarGet(VAR_CYCLING_ROAD_RECORD_TIME_L); + u16 high = VarGet(VAR_CYCLING_ROAD_RECORD_TIME_H); + u32 framesRecord = low + (high << 16); + + if (framesRecord == 0) + { + return FALSE; + } + + DetermineCyclingRoadResults(framesRecord, VarGet(VAR_CYCLING_ROAD_RECORD_COLLISIONS)); + return TRUE; +} + +void UpdateCyclingRoadState(void) { + if (gLastUsedWarp.mapNum == MAP_NUM(ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE) && gLastUsedWarp.mapGroup == MAP_GROUP(ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE)) + { + return; + } + + if (VarGet(VAR_CYCLING_CHALLENGE_STATE) == 2 || VarGet(VAR_CYCLING_CHALLENGE_STATE) == 3) + { + VarSet(VAR_CYCLING_CHALLENGE_STATE, 0); + Overworld_SetSavedMusic(MUS_DUMMY); + } +} + +void SetSSTidalFlag(void) +{ + FlagSet(FLAG_SYS_CRUISE_MODE); + *GetVarPointer(VAR_CRUISE_STEP_COUNT) = 0; +} + +void ResetSSTidalFlag(void) +{ + FlagClear(FLAG_SYS_CRUISE_MODE); +} + +bool32 CountSSTidalStep(u16 delta) +{ + if (!FlagGet(FLAG_SYS_CRUISE_MODE) || (*GetVarPointer(VAR_CRUISE_STEP_COUNT) += delta) <= 0xcc) + { + return FALSE; + } + return TRUE; +} + +u8 GetSSTidalLocation(s8 *mapGroup, s8 *mapNum, s16 *x, s16 *y) +{ + u16 *varCruiseStepCount = GetVarPointer(VAR_CRUISE_STEP_COUNT); + switch (*GetVarPointer(VAR_PORTHOLE_STATE)) + { + case 1: + case 8: + return 1; + case 3: + case 9: + return 4; + case 4: + case 5: + return 2; + case 6: + case 10: + return 3; + case 2: + if (*varCruiseStepCount < 60) + { + *mapNum = MAP_NUM(ROUTE134); + *x = *varCruiseStepCount + 19; + } + else if (*varCruiseStepCount < 140) + { + *mapNum = MAP_NUM(ROUTE133); + *x = *varCruiseStepCount - 60; + } + else + { + *mapNum = MAP_NUM(ROUTE132); + *x = *varCruiseStepCount - 140; + } + break; + case 7: + if (*varCruiseStepCount < 66) + { + *mapNum = MAP_NUM(ROUTE132); + *x = 65 - *varCruiseStepCount; + } + else if (*varCruiseStepCount < 146) { + *mapNum = MAP_NUM(ROUTE133); + *x = 145 - *varCruiseStepCount; + } + else + { + *mapNum = MAP_NUM(ROUTE134); + *x = 224 - *varCruiseStepCount; + } + break; + } + *mapGroup = MAP_GROUP(ROUTE132); + *y = 20; + return 0; +} + +bool32 is_tile_that_overrides_player_control(void) +{ + if (FlagGet(FLAG_0x088)) + { + switch (gMapHeader.mapType) + { + case 1: + case 2: + case 3: + case 6: + if (++(*GetVarPointer(VAR_0x40F2)) < 0xFA) + { + return FALSE; + } + break; + default: + return FALSE; + } + } + else + { + return FALSE; + } + + return TRUE; +} + +bool32 sub_8138120(void) +{ + if (FlagGet(FLAG_0x08A)) + { + switch (gMapHeader.mapType) + { + case 1: + case 2: + case 3: + case 6: + if (++(*GetVarPointer(VAR_0x40F3)) < 0xA) + { + return FALSE; + } + break; + default: + return FALSE; + } + } + else + { + return FALSE; + } + + return TRUE; +} + +bool32 sub_8138168(void) +{ + if (FlagGet(FLAG_0x072)) + { + switch (gMapHeader.mapType) + { + case 1: + case 2: + case 3: + case 6: + if (++(*GetVarPointer(VAR_0x40F5)) < 0xA) + { + return FALSE; + } + break; + default: + return FALSE; + } + } + else + { + return FALSE; + } + + return TRUE; +} + +bool32 sub_81381B0(void) +{ + if (FlagGet(FLAG_0x080)) + { + switch (gMapHeader.mapType) + { + case 1: + case 2: + case 3: + case 6: + if (++(*GetVarPointer(VAR_0x40F4)) < 0xFA) + { + return FALSE; + } + break; + default: + return FALSE; + } + } + else + { + return FALSE; + } + + return TRUE; +} + +bool32 sub_81381F8(void) +{ + if (FlagGet(FLAG_0x075)) + { + switch (gMapHeader.mapType) + { + case 1: + case 2: + case 3: + case 6: + if (++(*GetVarPointer(VAR_0x40F6)) < 0xFA) + { + return FALSE; + } + break; + default: + return FALSE; + } + } + else + { + return FALSE; + } + + return TRUE; +} + +u8 GetLinkPartnerNames(void) +{ + u8 i; + u8 j = 0; + u8 myLinkPlayerNumber = GetMultiplayerId(); + u8 nLinkPlayers = GetLinkPlayerCount(); + for (i = 0; i < nLinkPlayers; i++) + { + if (myLinkPlayerNumber != i) + { + StringCopy(gTVStringVarPtrs[j], gLinkPlayers[i].name); + j++; + } + } + return nLinkPlayers; +} + +void SpawnLinkPartnerEventObject(void) +{ + u8 j = 0; + s16 x = 0; + s16 y = 0; + u8 gUnknown_085B2B5C[] = {7, 9, 8, 10}; + s8 gUnknown_085B2B60[][2] = { + { 0, 1}, + { 1, 0}, + { 0, -1}, + {-1, 0} + }; + u8 myLinkPlayerNumber; + u8 playerFacingDirection; + u8 linkSpriteId; + u8 i; + + myLinkPlayerNumber = GetMultiplayerId(); + playerFacingDirection = GetPlayerFacingDirection(); + switch (playerFacingDirection) + { + case DIR_WEST: + j = 2; + x = gSaveBlock1Ptr->pos.x - 1; + y = gSaveBlock1Ptr->pos.y; + break; + case DIR_NORTH: + j = 1; + x = gSaveBlock1Ptr->pos.x; + y = gSaveBlock1Ptr->pos.y - 1; + break; + case DIR_EAST: + x = gSaveBlock1Ptr->pos.x + 1; + y = gSaveBlock1Ptr->pos.y; + break; + case DIR_SOUTH: + j = 3; + x = gSaveBlock1Ptr->pos.x; + y = gSaveBlock1Ptr->pos.y + 1; + } + for (i = 0; i < gSpecialVar_0x8004; i++) + { + if (myLinkPlayerNumber != i) + { + switch ((u8)gLinkPlayers[i].version) + { + case VERSION_RUBY: + case VERSION_SAPPHIRE: + if (gLinkPlayers[i].gender == 0) + linkSpriteId = EVENT_OBJ_GFX_LINK_RS_BRENDAN; + else + linkSpriteId = EVENT_OBJ_GFX_LINK_RS_MAY; + break; + case VERSION_EMERALD: + if (gLinkPlayers[i].gender == 0) + linkSpriteId = EVENT_OBJ_GFX_RIVAL_BRENDAN_NORMAL; + else + linkSpriteId = EVENT_OBJ_GFX_RIVAL_MAY_NORMAL; + break; + default: + if (gLinkPlayers[i].gender == 0) + linkSpriteId = EVENT_OBJ_GFX_RIVAL_BRENDAN_NORMAL; + else + linkSpriteId = EVENT_OBJ_GFX_RIVAL_MAY_NORMAL; + break; + } + SpawnSpecialEventObjectParameterized(linkSpriteId, gUnknown_085B2B5C[j], 0xf0 - i, gUnknown_085B2B60[j][0] + x + 7, gUnknown_085B2B60[j][1] + y + 7, 0); + LoadLinkPartnerEventObjectSpritePalette(linkSpriteId, 0xf0 - i, i); + j++; + if (j == 4) + { + j = 0; + } + } + } +} + +static void LoadLinkPartnerEventObjectSpritePalette(u8 graphicsId, u8 localEventId, u8 paletteNum) +{ + paletteNum += 6; + if (graphicsId == EVENT_OBJ_GFX_LINK_RS_BRENDAN || + graphicsId == EVENT_OBJ_GFX_LINK_RS_MAY || + graphicsId == EVENT_OBJ_GFX_RIVAL_BRENDAN_NORMAL || + graphicsId == EVENT_OBJ_GFX_RIVAL_MAY_NORMAL) + { + u8 obj = GetEventObjectIdByLocalIdAndMap(localEventId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + if (obj != NUM_EVENT_OBJECTS) + { + u8 spriteId = gEventObjects[obj].spriteId; + struct Sprite *sprite = &gSprites[spriteId]; + sprite->oam.paletteNum = paletteNum; + + switch (graphicsId) + { + case EVENT_OBJ_GFX_LINK_RS_BRENDAN: + LoadPalette(gEventObjectPalette33, 0x100 + paletteNum * 16, 0x20); + break; + case EVENT_OBJ_GFX_LINK_RS_MAY: + LoadPalette(gEventObjectPalette34, 0x100 + paletteNum * 16, 0x20); + break; + case EVENT_OBJ_GFX_RIVAL_BRENDAN_NORMAL: + LoadPalette(gEventObjectPalette8, 0x100 + paletteNum * 16, 0x20); + break; + case EVENT_OBJ_GFX_RIVAL_MAY_NORMAL: + LoadPalette(gEventObjectPalette17, 0x100 + paletteNum * 16, 0x20); + break; + } + } + } +} + +static const struct UCoords8 gUnknown_085B2B68[] = { + { 7, 22}, + {11, 19}, + {10, 16}, + {15, 16} +}; + +void MauvilleGymSpecial1(void) +{ + u8 i; + for (i = 0; i < ARRAY_COUNT(gUnknown_085B2B68); i++) + { + if (i == gSpecialVar_0x8004) + { + MapGridSetMetatileIdAt(gUnknown_085B2B68[i].x, gUnknown_085B2B68[i].y, 0x206); + } + else + { + MapGridSetMetatileIdAt(gUnknown_085B2B68[i].x, gUnknown_085B2B68[i].y, 0x205); + } + } +} + +void MauvilleGymSpecial2(void) +{ + int x, y; + for (y = 12; y < 24; y++) + { + for (x = 7; x < 16; x++) + { + switch (MapGridGetMetatileIdAt(x, y)) + { + case 0x220: + MapGridSetMetatileIdAt(x, y, 0x230); + break; + case 0x221: + MapGridSetMetatileIdAt(x, y, 0x231); + break; + case 0x228: + MapGridSetMetatileIdAt(x, y, 0x238); + break; + case 0x229: + MapGridSetMetatileIdAt(x, y, 0x239); + break; + case 0x230: + MapGridSetMetatileIdAt(x, y, 0x220); + break; + case 0x231: + MapGridSetMetatileIdAt(x, y, 0x221); + break; + case 0x238: + MapGridSetMetatileIdAt(x, y, 0xe28); + break; + case 0x239: + MapGridSetMetatileIdAt(x, y, 0xe29); + break; + case 0x222: + MapGridSetMetatileIdAt(x, y, 0x232); + break; + case 0x223: + MapGridSetMetatileIdAt(x, y, 0x233); + break; + case 0x22a: + MapGridSetMetatileIdAt(x, y, 0x23a); + break; + case 0x22b: + MapGridSetMetatileIdAt(x, y, 0x23b); + break; + case 0x232: + MapGridSetMetatileIdAt(x, y, 0x222); + break; + case 0x233: + MapGridSetMetatileIdAt(x, y, 0x223); + break; + case 0x23a: + MapGridSetMetatileIdAt(x, y, 0xe2a); + break; + case 0x23b: + MapGridSetMetatileIdAt(x, y, 0xe2b); + break; + case 0x240: + MapGridSetMetatileIdAt(x, y, 0xe42); + break; + case 0x248: + MapGridSetMetatileIdAt(x, y, 0x21a); + break; + case 0x241: + MapGridSetMetatileIdAt(x, y, 0xe43); + break; + case 0x249: + MapGridSetMetatileIdAt(x, y, 0x21a); + break; + case 0x242: + MapGridSetMetatileIdAt(x, y, 0xe40); + break; + case 0x21a: + if (MapGridGetMetatileIdAt(x, y - 1) == 0x240) + { + MapGridSetMetatileIdAt(x, y, 0xe48); + } + else + { + MapGridSetMetatileIdAt(x, y, 0xe49); + } + break; + case 0x243: + MapGridSetMetatileIdAt(x, y, 0xe41); + break; + case 0x251: + MapGridSetMetatileIdAt(x, y, 0xe50); + break; + case 0x250: + MapGridSetMetatileIdAt(x, y, 0x251); + break; + } + } + } +} + +void MauvilleGymSpecial3(void) +{ + int i, x, y; + const struct UCoords8 *switchCoords = gUnknown_085B2B68; + for (i = ARRAY_COUNT(gUnknown_085B2B68) - 1; i >= 0; i--) + { + MapGridSetMetatileIdAt(switchCoords->x, switchCoords->y, 0x206); + switchCoords++; + } + for (y = 12; y < 24; y++) + { + for (x = 7; x < 16; x++) + { + switch (MapGridGetMetatileIdAt(x, y)) + { + case 0x220: + MapGridSetMetatileIdAt(x, y, 0x230); + break; + case 0x221: + MapGridSetMetatileIdAt(x, y, 0x231); + break; + case 0x228: + MapGridSetMetatileIdAt(x, y, 0x238); + break; + case 0x229: + MapGridSetMetatileIdAt(x, y, 0x239); + break; + case 0x222: + MapGridSetMetatileIdAt(x, y, 0x232); + break; + case 0x223: + MapGridSetMetatileIdAt(x, y, 0x233); + break; + case 0x22a: + MapGridSetMetatileIdAt(x, y, 0x23a); + break; + case 0x22b: + MapGridSetMetatileIdAt(x, y, 0x23b); + break; + case 0x240: + MapGridSetMetatileIdAt(x, y, 0xe42); + break; + case 0x241: + MapGridSetMetatileIdAt(x, y, 0xe43); + break; + case 0x248: + case 0x249: + MapGridSetMetatileIdAt(x, y, 0x21a); + break; + case 0x250: + MapGridSetMetatileIdAt(x, y, 0x251); + break; + } + } + } +} + +static const u8 gUnknown_085B2B78[] = {0, 1, 1, 1, 1}; +static const u16 gUnknown_085B2B7E[] = {0x218, 0x219, 0x21a, 0x21b, 0x21c}; + +void PetalburgGymSpecial1(void) +{ + gUnknown_0203AB5C = 0; + gUnknown_0203AB5D = 0; + PlaySE(SE_KI_GASYAN); + CreateTask(Task_PetalburgGym, 8); +} + +static void Task_PetalburgGym(u8 taskId) +{ + if (gUnknown_085B2B78[gUnknown_0203AB5D] == gUnknown_0203AB5C) + { + PetalburgGymFunc(gSpecialVar_0x8004, gUnknown_085B2B7E[gUnknown_0203AB5D]); + gUnknown_0203AB5C = 0; + if ((++gUnknown_0203AB5D) == 5) + { + DestroyTask(taskId); + EnableBothScriptContexts(); + } + } + else + { + gUnknown_0203AB5C++; + } +} + +static void PetalburgGymFunc(u8 a0, u16 a1) +{ + u16 x[4]; + u16 y[4]; + u8 i; + u8 nDoors = 0; + switch (a0) + { + case 1: + nDoors = 2; + x[0] = 1; + x[1] = 7; + y[0] = 0x68; + y[1] = 0x68; + break; + case 2: + nDoors = 2; + x[0] = 1; + x[1] = 7; + y[0] = 0x4e; + y[1] = 0x4e; + break; + case 3: + nDoors = 2; + x[0] = 1; + x[1] = 7; + y[0] = 0x5b; + y[1] = 0x5b; + break; + case 4: + nDoors = 1; + x[0] = 7; + y[0] = 0x27; + break; + case 5: + nDoors = 2; + x[0] = 1; + x[1] = 7; + y[0] = 0x34; + y[1] = 0x34; + break; + case 6: + nDoors = 1; + x[0] = 1; + y[0] = 0x41; + break; + case 7: + nDoors = 1; + x[0] = 7; + y[0] = 0xd; + break; + case 8: + nDoors = 1; + x[0] = 1; + y[0] = 0x1a; + break; + } + for (i = 0; i < nDoors; i++) + { + MapGridSetMetatileIdAt(x[i] + 7, y[i] + 7, a1 | 0xc00); + MapGridSetMetatileIdAt(x[i] + 7, y[i] + 8, (a1 + 8) | 0xc00); + } + DrawWholeMapView(); +} + +void PetalburgGymSpecial2(void) +{ + PetalburgGymFunc(gSpecialVar_0x8004, gUnknown_085B2B7E[4]); +} + +void ShowFieldMessageStringVar4(void) +{ + ShowFieldMessage(gStringVar4); +} + +void StorePlayerCoordsInVars(void) +{ + gSpecialVar_0x8004 = gSaveBlock1Ptr->pos.x; + gSpecialVar_0x8005 = gSaveBlock1Ptr->pos.y; +} + +u8 GetPlayerTrainerIdOnesDigit(void) +{ + return (u16)((gSaveBlock2Ptr->playerTrainerId[1] << 8) | gSaveBlock2Ptr->playerTrainerId[0]) % 10; +} + +void GetPlayerBigGuyGirlString(void) +{ + if (gSaveBlock2Ptr->playerGender == MALE) + { + StringCopy(gStringVar1, gText_BigGuy); + } + else + { + StringCopy(gStringVar1, gText_BigGirl); + } +} + +void GetRivalSonDaughterString(void) +{ + if (gSaveBlock2Ptr->playerGender == MALE) + { + StringCopy(gStringVar1, gText_Daughter); + } + else + { + StringCopy(gStringVar1, gText_Son); + } +} + +u8 GetBattleOutcome(void) +{ + return gBattleOutcome; +} + +void CableCarWarp(void) +{ + if (gSpecialVar_0x8004 != 0) + { + Overworld_SetWarpDestination(MAP_GROUP(ROUTE112_CABLE_CAR_STATION), MAP_NUM(ROUTE112_CABLE_CAR_STATION), -1, 6, 4); + } + else + { + Overworld_SetWarpDestination(MAP_GROUP(MT_CHIMNEY_CABLE_CAR_STATION), MAP_NUM(MT_CHIMNEY_CABLE_CAR_STATION), -1, 6, 4); + } +} + +void SetFlagInVar(void) +{ + FlagSet(gSpecialVar_0x8004); +} + +u16 GetWeekCount(void) +{ + u16 weekCount = gLocalTime.days / 7; + if (weekCount > 9999) + { + weekCount = 9999; + } + return weekCount; +} + +u8 GetLeadMonFriendshipScore(void) +{ + struct Pokemon *pokemon = &gPlayerParty[GetLeadMonIndex()]; + if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) == 255) + { + return 6; + } + if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 200) + { + return 5; + } + if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 150) + { + return 4; + } + if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 100) + { + return 3; + } + if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 50) + { + return 2; + } + if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 1) + { + return 1; + } + return 0; +} + +static void CB2_FieldShowRegionMap(void) +{ + FieldInitRegionMap(CB2_ReturnToFieldContinueScriptPlayMapMusic); +} + +void FieldShowRegionMap(void) +{ + SetMainCallback2(CB2_FieldShowRegionMap); +} + +void DoPCTurnOnEffect(void) +{ + if (FuncIsActiveTask(Task_PCTurnOnEffect) != TRUE) + { + u8 taskId = CreateTask(Task_PCTurnOnEffect, 8); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = taskId; + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = 0; + } +} + +static void Task_PCTurnOnEffect(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + if (task->data[0] == 0) + { + PCTurnOnEffect_0(task); + } +} + +static void PCTurnOnEffect_0(struct Task *task) +{ + u8 playerDirection; + s8 dx = 0; + s8 dy = 0; + if (task->data[3] == 6) + { + task->data[3] = 0; + playerDirection = GetPlayerFacingDirection(); + switch (playerDirection) + { + case DIR_NORTH: + dx = 0; + dy = -1; + break; + case DIR_WEST: + dx = -1; + dy = -1; + break; + case DIR_EAST: + dx = 1; + dy = -1; + break; + } + PCTurnOnEffect_1(task->data[4], dx, dy); + DrawWholeMapView(); + task->data[4] ^= 1; + if ((++task->data[2]) == 5) + { + DestroyTask(task->data[1]); + } + } + task->data[3]++; +} + +static void PCTurnOnEffect_1(s16 flag, s8 dx, s8 dy) +{ + u16 tileId = 0; + if (flag != 0) + { + if (gSpecialVar_0x8004 == 0) + { + tileId = 0x4; + } + else if (gSpecialVar_0x8004 == 1) + { + tileId = 0x25a; + } + else if (gSpecialVar_0x8004 == 2) + { + tileId = 0x259; + } + } + else + { + if (gSpecialVar_0x8004 == 0) + { + tileId = 0x5; + } + else if (gSpecialVar_0x8004 == 1) + { + tileId = 0x27f; + } + else if (gSpecialVar_0x8004 == 2) + { + tileId = 0x27e; + } + } + MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + dx + 7, gSaveBlock1Ptr->pos.y + dy + 7, tileId | 0xc00); +} + +void DoPCTurnOffEffect(void) +{ + PCTurnOffEffect(); +} + +static void PCTurnOffEffect(void) +{ + s8 dx = 0; + s8 dy = 0; + u16 tileId = 0; + u8 playerDirection = GetPlayerFacingDirection(); + switch (playerDirection) + { + case DIR_NORTH: + dx = 0; + dy = -1; + break; + case DIR_WEST: + dx = -1; + dy = -1; + break; + case DIR_EAST: + dx = 1; + dy = -1; + break; + } + if (gSpecialVar_0x8004 == 0) + { + tileId = 0x4; + } + else if (gSpecialVar_0x8004 == 1) + { + tileId = 0x25a; + } + else if (gSpecialVar_0x8004 == 2) + { + tileId = 0x259; + } + MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + dx + 7, gSaveBlock1Ptr->pos.y + dy + 7, tileId | 0xc00); + DrawWholeMapView(); +} + +void DoLotteryCornerComputerEffect(void) +{ + if (FuncIsActiveTask(Task_LotteryCornerComputerEffect) != TRUE) + { + u8 taskId = CreateTask(Task_LotteryCornerComputerEffect, 8); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = taskId; + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = 0; + } +} + +static void Task_LotteryCornerComputerEffect(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + if (task->data[0] == 0) + { + LotteryCornerComputerEffect(task); + } +} + +static void LotteryCornerComputerEffect(struct Task *task) +{ + if (task->data[3] == 6) + { + task->data[3] = 0; + if (task->data[4] != 0) + { + MapGridSetMetatileIdAt(18, 8, 0xe9d); + MapGridSetMetatileIdAt(18, 9, 0xea5); + } + else + { + MapGridSetMetatileIdAt(18, 8, 0xe58); + MapGridSetMetatileIdAt(18, 9, 0xe60); + } + DrawWholeMapView(); + task->data[4] ^= 1; + if ((++task->data[2]) == 5) + { + DestroyTask(task->data[1]); + } + } + task->data[3]++; +} + +void EndLotteryCornerComputerEffect(void) +{ + MapGridSetMetatileIdAt(18, 8, 0xe9d); + MapGridSetMetatileIdAt(18, 9, 0xea5); + DrawWholeMapView(); +} + +void SetTrickHouseEndRoomFlag(void) +{ + u16 *specVar = &gSpecialVar_0x8004; + u16 flag = FLAG_0x1F5; + *specVar = flag; + FlagSet(flag); +} + +void ResetTrickHouseEndRoomFlag(void) +{ + u16 *specVar = &gSpecialVar_0x8004; + u16 flag = FLAG_0x1F5; + *specVar = flag; + FlagClear(flag); +} + +bool8 CheckLeadMonCool(void) +{ + if (GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_COOL) < 200) + { + return FALSE; + } + return TRUE; +} + +bool8 CheckLeadMonBeauty(void) +{ + if (GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_BEAUTY) < 200) + { + return FALSE; + } + return TRUE; +} + +bool8 CheckLeadMonCute(void) +{ + if (GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_CUTE) < 200) + { + return FALSE; + } + return TRUE; +} + +bool8 CheckLeadMonSmart(void) +{ + if (GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SMART) < 200) + { + return FALSE; + } + return TRUE; +} + +bool8 CheckLeadMonTough(void) +{ + if (GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_TOUGH) < 200) + { + return FALSE; + } + return TRUE; +} + +void IsGrassTypeInParty(void) +{ + u8 i; + u16 species; + struct Pokemon *pokemon; + for (i = 0; i < PARTY_SIZE; i++) + { + pokemon = &gPlayerParty[i]; + if (GetMonData(pokemon, MON_DATA_SANITY_BIT2) && !GetMonData(pokemon, MON_DATA_IS_EGG)) + { + species = GetMonData(pokemon, MON_DATA_SPECIES); + if (gBaseStats[species].type1 == TYPE_GRASS || gBaseStats[species].type2 == TYPE_GRASS) + { + gSpecialVar_Result = TRUE; + return; + } + } + } + gSpecialVar_Result = FALSE; +} + +void SpawnScriptEventObject(void) +{ + u8 obj = SpawnSpecialEventObjectParameterized(EVENT_OBJ_GFX_BOY_1, 8, 0x7F, gSaveBlock1Ptr->pos.x + 7, gSaveBlock1Ptr->pos.y + 7, 3); + gEventObjects[obj].invisible = TRUE; + CameraObjectSetFollowedObjectId(gEventObjects[obj].spriteId); +} + +void RemoveScriptEventObject(void) +{ + CameraObjectSetFollowedObjectId(GetPlayerAvatarObjectId()); + RemoveEventObjectByLocalIdAndMap(0x7F, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); +} + +u8 GetPokeblockNameByMonNature(void) +{ + return CopyMonFavoritePokeblockName(GetNature(&gPlayerParty[GetLeadMonIndex()]), gStringVar1); +} + +void GetSecretBaseNearbyMapName(void) +{ + GetMapName(gStringVar1, VarGet(VAR_SECRET_BASE_MAP), 0); +} + +u16 GetBestBattleTowerStreak(void) +{ + return GetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK); +} + +void BufferEReaderTrainerName(void) +{ + GetEreaderTrainerName(gStringVar1); +} + +u16 GetSlotMachineId(void) +{ + static const u8 gUnknown_085B2B88[] = {12, 2, 4, 5, 1, 8, 7, 11, 3, 10, 9, 6}; + static const u8 gUnknown_085B2B94[] = {0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5}; + static const u8 gUnknown_085B2BA0[] = {3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5}; + + u32 v0 = gSaveBlock1Ptr->easyChatPairs[0].unk0_0 + gSaveBlock1Ptr->easyChatPairs[0].unk2 + gUnknown_085B2B88[gSpecialVar_0x8004]; + if (GetPriceReduction(2)) + { + return gUnknown_085B2BA0[v0 % 12]; + } + return gUnknown_085B2B94[v0 % 12]; +} + +bool8 FoundAbandonedShipRoom1Key(void) +{ + u16 *specVar = &gSpecialVar_0x8004; + u16 flag = FLAG_HIDDEN_ITEM_1F; + *specVar = flag; + if (!FlagGet(flag)) + { + return FALSE; + } + return TRUE; +} + +bool8 FoundAbandonedShipRoom2Key(void) +{ + u16 *specVar = &gSpecialVar_0x8004; + u16 flag = FLAG_HIDDEN_ITEM_20; + *specVar = flag; + if (!FlagGet(flag)) + { + return FALSE; + } + return TRUE; +} + +bool8 FoundAbandonedShipRoom4Key(void) +{ + u16 *specVar = &gSpecialVar_0x8004; + u16 flag = FLAG_HIDDEN_ITEM_21; + *specVar = flag; + if (!FlagGet(flag)) + { + return FALSE; + } + return TRUE; +} + +bool8 FoundAbandonedShipRoom6Key(void) +{ + u16 *specVar = &gSpecialVar_0x8004; + u16 flag = FLAG_HIDDEN_ITEM_22; + *specVar = flag; + if (!FlagGet(flag)) + { + return FALSE; + } + return TRUE; +} + +bool8 LeadMonHasEffortRibbon(void) +{ + return GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_EFFORT_RIBBON, NULL); +} + +void GiveLeadMonEffortRibbon(void) +{ + bool8 ribbonSet; + struct Pokemon *leadMon; + IncrementGameStat(GAME_STAT_RECEIVED_RIBBONS); + FlagSet(FLAG_SYS_RIBBON_GET); + ribbonSet = TRUE; + leadMon = &gPlayerParty[GetLeadMonIndex()]; + SetMonData(leadMon, MON_DATA_EFFORT_RIBBON, &ribbonSet); + if (GetRibbonCount(leadMon) > 4) + { + sub_80EE4DC(leadMon, 0x47); + } +} + +bool8 Special_AreLeadMonEVsMaxedOut(void) +{ + if (GetMonEVCount(&gPlayerParty[GetLeadMonIndex()]) >= 510) + { + return TRUE; + } + return FALSE; +} + +u8 TryUpdateRusturfTunnelState(void) +{ + if (!FlagGet(FLAG_RUSTURF_TUNNEL_OPENED) && gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(RUSTURF_TUNNEL) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(RUSTURF_TUNNEL)) + { + if (FlagGet(FLAG_HIDE_RUSTURF_TUNNEL_ROCK_1)) + { + VarSet(VAR_RUSTURF_TUNNEL_STATE, 4); + return TRUE; + } + else if (FlagGet(FLAG_HIDE_RUSTURF_TUNNEL_ROCK_2)) + { + VarSet(VAR_RUSTURF_TUNNEL_STATE, 5); + return TRUE; + } + } + return FALSE; +} + +void SetShoalItemFlag(u16 v0) +{ + FlagSet(FLAG_SYS_SHOAL_ITEM); +} + +void PutZigzagoonInPlayerParty(void) +{ + u16 monData; + CreateMon(&gPlayerParty[0], SPECIES_ZIGZAGOON, 7, 0x20, FALSE, 0, FALSE, 0); + monData = TRUE; + SetMonData(&gPlayerParty[0], MON_DATA_ALT_ABILITY, &monData); + monData = MOVE_TACKLE; + SetMonData(&gPlayerParty[0], MON_DATA_MOVE1, &monData); + monData = MOVE_NONE; + SetMonData(&gPlayerParty[0], MON_DATA_MOVE2, &monData); + SetMonData(&gPlayerParty[0], MON_DATA_MOVE3, &monData); + SetMonData(&gPlayerParty[0], MON_DATA_MOVE4, &monData); +} + +bool8 IsStarterInParty(void) +{ + u8 i; + u16 starter = GetStarterPokemon(VarGet(VAR_STARTER_MON)); + u8 partyCount = CalculatePlayerPartyCount(); + for (i = 0; i < partyCount; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) == starter) + { + return TRUE; + } + } + return FALSE; +} + +bool8 ScriptCheckFreePokemonStorageSpace(void) +{ + return CheckFreePokemonStorageSpace(); +} + +bool8 IsPokerusInParty(void) +{ + if (!CheckPartyPokerus(gPlayerParty, 0x3f)) + { + return FALSE; + } + return TRUE; +} + +void sub_8139560(void) +{ + u8 taskId = CreateTask(sub_81395BC, 9); + gTasks[taskId].data[0] = gSpecialVar_0x8005; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = gSpecialVar_0x8006; + gTasks[taskId].data[3] = gSpecialVar_0x8007; + gTasks[taskId].data[4] = gSpecialVar_0x8004; + SetCameraPanningCallback(NULL); + PlaySE(SE_W070); +} + +static void sub_81395BC(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + data[1]++; + if (data[1] % data[3] == 0) + { + data[1] = 0; + data[2]--; + data[0] = -data[0]; + data[4] = -data[4]; + SetCameraPanning(data[0], data[4]); + if (data[2] == 0) + { + sub_8139620(taskId); + InstallCameraPanAheadCallback(); + } + } +} + +static void sub_8139620(u8 taskId) +{ + DestroyTask(taskId); + EnableBothScriptContexts(); +} + +bool8 FoundBlackGlasses(void) +{ + return FlagGet(FLAG_HIDDEN_ITEM_BLACK_GLASSES); +} + +void SetRoute119Weather(void) +{ + if (is_map_type_1_2_3_5_or_6(get_map_light_from_warp0()) != TRUE) + { + SetSav1Weather(20); + } +} + +void SetRoute123Weather(void) +{ + if (is_map_type_1_2_3_5_or_6(get_map_light_from_warp0()) != TRUE) + { + SetSav1Weather(21); + } +} + +u8 GetLeadMonIndex(void) +{ + u8 i; + u8 partyCount = CalculatePlayerPartyCount(); + for (i = 0; i < partyCount; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) != SPECIES_EGG && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) != 0) + { + return i; + } + } + return 0; +} + +u16 ScriptGetPartyMonSpecies(void) +{ + return GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES2, NULL); +} + +void nullsub_54(void) +{ + +} + +u16 GetDaysUntilPacifidlogTMAvailable(void) +{ + u16 tmReceivedDay = VarGet(VAR_PACIFIDLOG_TM_RECEIVED_DAY); + if (gLocalTime.days - tmReceivedDay >= 7) + { + return 0; + } + else if (gLocalTime.days < 0) + { + return 8; + } + return 7 - (gLocalTime.days - tmReceivedDay); +} + +u16 SetPacifidlogTMReceivedDay(void) +{ + VarSet(VAR_PACIFIDLOG_TM_RECEIVED_DAY, gLocalTime.days); + return gLocalTime.days; +} + +bool8 MonOTNameMatchesPlayer(void) +{ + if (GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_LANGUAGE) != GAME_LANGUAGE) + { + return TRUE; // huh? + } + + GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_OT_NAME, gStringVar1); + if (!StringCompare(gSaveBlock2Ptr->playerName, gStringVar1)) + { + return FALSE; + } + return TRUE; +} + +void BufferLottoTicketNumber(void) +{ + if (gSpecialVar_Result >= 10000) + { + TV_PrintIntToStringVar(0, gSpecialVar_Result); + } + else if (gSpecialVar_Result >= 1000) + { + gStringVar1[0] = CHAR_0; + ConvertIntToDecimalStringN(gStringVar1 + 1, gSpecialVar_Result, 0, CountDigits(gSpecialVar_Result)); + } + else if (gSpecialVar_Result >= 100) + { + gStringVar1[0] = CHAR_0; + gStringVar1[1] = CHAR_0; + ConvertIntToDecimalStringN(gStringVar1 + 2, gSpecialVar_Result, 0, CountDigits(gSpecialVar_Result)); + } + else if (gSpecialVar_Result >= 10) + { + gStringVar1[0] = CHAR_0; + gStringVar1[1] = CHAR_0; + gStringVar1[2] = CHAR_0; + ConvertIntToDecimalStringN(gStringVar1 + 3, gSpecialVar_Result, 0, CountDigits(gSpecialVar_Result)); + } + else + { + gStringVar1[0] = CHAR_0; + gStringVar1[1] = CHAR_0; + gStringVar1[2] = CHAR_0; + gStringVar1[3] = CHAR_0; + ConvertIntToDecimalStringN(gStringVar1 + 4, gSpecialVar_Result, 0, CountDigits(gSpecialVar_Result)); + } +} + +u16 sub_813986C(void) +{ + switch (gSpecialVar_Result) + { + case 0: + return mevent_081445C0(3); + case 1: + return mevent_081445C0(4); + case 2: + return mevent_081445C0(0); + case 3: + return mevent_081445C0(1); + case 4: + return mevent_081445C0(2); + default: + return 0; + } +} + +bool8 sub_81398C0(void) +{ + if (gSpecialVar_0x8004 >= ITEM_TM01 && gSpecialVar_0x8004 <= ITEM_HM08) + { + StringCopy(gStringVar2, gMoveNames[ItemIdToBattleMoveId(gSpecialVar_0x8004)]); + return TRUE; + } + + return FALSE; +} + +bool8 sub_813990C(void) +{ + u8 partyCount = CalculatePlayerPartyCount(); + u8 i; + + for (i = 0; i < partyCount; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SANITY_BIT1) == 1) + return TRUE; + } + + return FALSE; +} + +bool8 InMultiBattleRoom(void) +{ + if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM) + && gSaveBlock1Ptr->location.mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM) && + VarGet(VAR_FRONTIER_BATTLE_MODE) == FRONTIER_MODE_MULTIS) + return TRUE; + return FALSE; +} + +void sub_8139980(void) +{ + SetCameraPanningCallback(NULL); + SetCameraPanning(8, 0); +} + +const struct WindowTemplate gUnknown_085B2BAC = { + .priority = 0, + .tilemapLeft = 21, + .tilemapTop = 1, + .width = 8, + .height = 4, + .paletteNum = 15, + .baseBlock = 8, +}; + +const u8 *const gElevatorFloorsTable[] = { + gText_B4F, + gText_B3F, + gText_B2F, + gText_B1F, + gText_1F, + gText_2F, + gText_3F, + gText_4F, + gText_5F, + gText_6F, + gText_7F, + gText_8F, + gText_9F, + gText_10F, + gText_11F, + gText_Rooftop +}; + +const u16 gUnknown_085B2BF4[] = { 0x0329, 0x032a, 0x032b, 0x0331, 0x0332, 0x0333, 0x0339, 0x033a, 0x033b }; +const u16 gUnknown_085B2C06[] = { 0x0329, 0x032b, 0x032a, 0x0331, 0x0333, 0x0332, 0x0339, 0x033b, 0x033a }; + +void SetDepartmentStoreFloorVar(void) +{ + u8 deptStoreFloor; + switch (gSaveBlock1Ptr->warp2.mapNum) + { + case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_1F): + deptStoreFloor = 4; + break; + case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_2F): + deptStoreFloor = 5; + break; + case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_3F): + deptStoreFloor = 6; + break; + case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_4F): + deptStoreFloor = 7; + break; + case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_5F): + deptStoreFloor = 8; + break; + case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP): + deptStoreFloor = 15; + break; + default: + deptStoreFloor = 4; + break; + } + VarSet(VAR_DEPT_STORE_FLOOR, deptStoreFloor); +} + +u16 sub_81399F4(void) +{ + gUnknown_0203AB60 = 0; + gUnknown_0203AB62 = 0; + + if (gSaveBlock1Ptr->warp2.mapGroup == 13) + { + switch (gSaveBlock1Ptr->warp2.mapNum) + { + case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_5F): + gUnknown_0203AB60 = 0; + gUnknown_0203AB62 = 0; + break; + case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_4F): + gUnknown_0203AB60 = 0; + gUnknown_0203AB62 = 1; + break; + case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_3F): + gUnknown_0203AB60 = 0; + gUnknown_0203AB62 = 2; + break; + case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_2F): + gUnknown_0203AB60 = 0; + gUnknown_0203AB62 = 3; + break; + case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_1F): + gUnknown_0203AB60 = 0; + gUnknown_0203AB62 = 4; + break; + } + } + + return gUnknown_0203AB62; +} + +void ShakeScreenInElevator(void) +{ + static const u8 gUnknown_085B2C18[] = { 0x08, 0x10, 0x18, 0x20, 0x26, 0x2e, 0x34, 0x38, 0x39 }; + + s16 *data = gTasks[CreateTask(sub_8139AF4, 9)].data; + u16 floorDelta; + + data[1] = 0; + data[2] = 0; + data[4] = 1; + + if (gSpecialVar_0x8005 > gSpecialVar_0x8006) + { + floorDelta = gSpecialVar_0x8005 - gSpecialVar_0x8006; + data[6] = 1; + } + else + { + floorDelta = gSpecialVar_0x8006 - gSpecialVar_0x8005; + data[6] = 0; + } + + if (floorDelta > 8) + floorDelta = 8; + + data[5] = gUnknown_085B2C18[floorDelta]; + + SetCameraPanningCallback(NULL); + sub_8139C2C(floorDelta, data[6]); + PlaySE(SE_ELEBETA); +} + +static void sub_8139AF4(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + data[1]++; + if (data[1] % 3 == 0) + { + data[1] = 0; + data[2]++; + data[4] = -data[4]; + SetCameraPanning(0, data[4]); + if (data[2] == data[5]) + { + PlaySE(SE_PINPON); + DestroyTask(taskId); + EnableBothScriptContexts(); + InstallCameraPanAheadCallback(); + } + } +} + +void sub_8139B60(void) +{ + int xPos; + + gUnknown_0203AB5E = AddWindow(&gUnknown_085B2BAC); + SetStandardWindowBorderStyle(gUnknown_0203AB5E, 0); + + xPos = GetStringCenterAlignXOffset(1, gText_ElevatorNowOn, 64); + PrintTextOnWindow(gUnknown_0203AB5E, 1, gText_ElevatorNowOn, xPos, 1, TEXT_SPEED_FF, NULL); + + xPos = GetStringCenterAlignXOffset(1, gElevatorFloorsTable[gSpecialVar_0x8005], 64); + PrintTextOnWindow(gUnknown_0203AB5E, 1, gElevatorFloorsTable[gSpecialVar_0x8005], xPos, 17, TEXT_SPEED_FF, NULL); + + PutWindowTilemap(gUnknown_0203AB5E); + CopyWindowToVram(gUnknown_0203AB5E, 3); +} + +void sub_8139C10(void) +{ + sub_8198070(gUnknown_0203AB5E, TRUE); + RemoveWindow(gUnknown_0203AB5E); +} + +static void sub_8139C2C(u16 a1, u8 a2) +{ + static const u8 gUnknown_085B2C21[] = { 0x03, 0x06, 0x09, 0x0c, 0x0f, 0x12, 0x15, 0x18, 0x1b }; + + if (FuncIsActiveTask(sub_8139C80) != TRUE) + { + u8 taskId = CreateTask(sub_8139C80, 8); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = a2; + gTasks[taskId].data[3] = gUnknown_085B2C21[a1]; + } +} + +// Annoyingly close but compiler wants to add all the parts of the index into the arrays +// first and then shift by one, whereas we need each individual part to shift and then be added. +#ifdef NONMATCHING +static void sub_8139C80(u8 taskId) +{ + u8 x, y; + s16 *data = gTasks[taskId].data; + + if (data[1] == 6) + { + data[0]++; + if (data[2] == 0) + { + for (y = 0; y < 3; y++) + { + for (x = 0; x < 3; x++) + { + MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2BF4[y * 3 + data[0] % 3] | 0xC00); + } + } + } + else + { + for (y = 0; y < 3; y++) + { + for (x = 0; x < 3; x++) + { + MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2C06[y * 3 + data[0] % 3] | 0xC00); + } + } + } + DrawWholeMapView(); + data[1] = 0; + if (data[0] == data[3]) + { + DestroyTask(taskId); + } + } + data[1]++; +} +#else +NAKED +static void sub_8139C80(u8 taskId) +{ + asm_unified("push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x4\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + str r0, [sp]\n\ + lsls r0, 2\n\ + ldr r1, [sp]\n\ + adds r0, r1\n\ + lsls r0, 3\n\ + ldr r1, =gTasks + 0x8\n\ + adds r6, r0, r1\n\ + movs r2, 0x2\n\ + ldrsh r0, [r6, r2]\n\ + cmp r0, 0x6\n\ + bne _08139D7C\n\ + ldrh r0, [r6]\n\ + adds r0, 0x1\n\ + strh r0, [r6]\n\ + movs r1, 0x4\n\ + ldrsh r0, [r6, r1]\n\ + cmp r0, 0\n\ + bne _08139D10\n\ + movs r1, 0\n\ + ldr r2, =gUnknown_085B2BF4\n\ + mov r10, r2\n\ +_08139CBA:\n\ + movs r5, 0\n\ + adds r7, r1, 0x7\n\ + lsls r0, r1, 1\n\ + adds r2, r1, 0x1\n\ + mov r8, r2\n\ + adds r0, r1\n\ + lsls r0, 1\n\ + mov r9, r0\n\ +_08139CCA:\n\ + adds r4, r5, 0\n\ + adds r4, 0x8\n\ + movs r1, 0\n\ + ldrsh r0, [r6, r1]\n\ + movs r1, 0x3\n\ + bl __modsi3\n\ + lsls r0, 16\n\ + asrs r0, 15\n\ + add r0, r9\n\ + add r0, r10\n\ + ldrh r0, [r0]\n\ + movs r1, 0xC0\n\ + lsls r1, 4\n\ + adds r2, r1, 0\n\ + orrs r2, r0\n\ + adds r0, r4, 0\n\ + adds r1, r7, 0\n\ + bl MapGridSetMetatileIdAt\n\ + adds r0, r5, 0x1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + cmp r5, 0x2\n\ + bls _08139CCA\n\ + mov r2, r8\n\ + lsls r0, r2, 24\n\ + lsrs r1, r0, 24\n\ + cmp r1, 0x2\n\ + bls _08139CBA\n\ + b _08139D62\n\ + .pool\n\ +_08139D10:\n\ + movs r1, 0\n\ + ldr r0, =gUnknown_085B2C06\n\ + mov r10, r0\n\ +_08139D16:\n\ + movs r5, 0\n\ + adds r7, r1, 0x7\n\ + lsls r0, r1, 1\n\ + adds r2, r1, 0x1\n\ + mov r8, r2\n\ + adds r0, r1\n\ + lsls r0, 1\n\ + mov r9, r0\n\ +_08139D26:\n\ + adds r4, r5, 0\n\ + adds r4, 0x8\n\ + movs r1, 0\n\ + ldrsh r0, [r6, r1]\n\ + movs r1, 0x3\n\ + bl __modsi3\n\ + lsls r0, 16\n\ + asrs r0, 15\n\ + add r0, r9\n\ + add r0, r10\n\ + ldrh r0, [r0]\n\ + movs r1, 0xC0\n\ + lsls r1, 4\n\ + adds r2, r1, 0\n\ + orrs r2, r0\n\ + adds r0, r4, 0\n\ + adds r1, r7, 0\n\ + bl MapGridSetMetatileIdAt\n\ + adds r0, r5, 0x1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + cmp r5, 0x2\n\ + bls _08139D26\n\ + mov r2, r8\n\ + lsls r0, r2, 24\n\ + lsrs r1, r0, 24\n\ + cmp r1, 0x2\n\ + bls _08139D16\n\ +_08139D62:\n\ + bl DrawWholeMapView\n\ + movs r0, 0\n\ + strh r0, [r6, 0x2]\n\ + movs r0, 0\n\ + ldrsh r1, [r6, r0]\n\ + movs r2, 0x6\n\ + ldrsh r0, [r6, r2]\n\ + cmp r1, r0\n\ + bne _08139D7C\n\ + ldr r0, [sp]\n\ + bl DestroyTask\n\ +_08139D7C:\n\ + ldrh r0, [r6, 0x2]\n\ + adds r0, 0x1\n\ + strh r0, [r6, 0x2]\n\ + add sp, 0x4\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .pool"); +} +#endif // NAKED + +void sub_8139D98(void) +{ + u8 i; + u32 ivStorage[6]; + + ivStorage[0] = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_HP_IV); + ivStorage[1] = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_ATK_IV); + ivStorage[2] = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_DEF_IV); + ivStorage[3] = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPEED_IV); + ivStorage[4] = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPATK_IV); + ivStorage[5] = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPDEF_IV); + + gSpecialVar_0x8005 = 0; + + for (i = 0; i < ARRAY_COUNT(ivStorage); i++) + { + gSpecialVar_0x8005 += ivStorage[i]; + } + + gSpecialVar_0x8006 = 0; + gSpecialVar_0x8007 = ivStorage[0]; // HP IV + + for (i = 1; i < 6; i++) + { + if (ivStorage[gSpecialVar_0x8006] < ivStorage[i]) + { + gSpecialVar_0x8006 = i; + gSpecialVar_0x8007 = ivStorage[i]; + } + else if (ivStorage[gSpecialVar_0x8006] == ivStorage[i]) + { + u16 randomNumber = Random(); + if ((randomNumber & 1) != 0) + { + gSpecialVar_0x8006 = i; + gSpecialVar_0x8007 = ivStorage[i]; + } + } + } +} + +bool32 warp0_in_pokecenter(void) +{ + static const u16 gUnknown_085B2C2A[] = { 0x0202, 0x0301, 0x0405, 0x0504, 0x0604, 0x0700, 0x0804, 0x090b, 0x0a05, 0x0b05, 0x0c02, 0x0d06, 0x0e03, 0x0f02, 0x100c, 0x100a, 0x1a35, 0x193c, 0xffff }; + + int i; + u16 map = (gLastUsedWarp.mapGroup << 8) + gLastUsedWarp.mapNum; + + for (i = 0; gUnknown_085B2C2A[i] != 0xFFFF; i++) + { + if (gUnknown_085B2C2A[i] == map) + return TRUE; + } + + return FALSE; +} + +bool32 sub_8139ED0(void) +{ + if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(TRAINER_HILL_ENTRANCE) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_HILL_ENTRANCE)) + { + return FALSE; + } + return TRUE; +} + +void UpdateFrontierManiac(u16 a0) +{ + u16 *var = GetVarPointer(VAR_FRONTIER_MANIAC_FACILITY); + *var += a0; + *var %= 10; +} + +void sub_8139F20(void) +{ + static const u8 *const gUnknown_085B2C50[][3] = { + { BattleFrontier_Lounge2_Text_260971, BattleFrontier_Lounge2_Text_260A1E, BattleFrontier_Lounge2_Text_260AE7 }, + { BattleFrontier_Lounge2_Text_2619AC, BattleFrontier_Lounge2_Text_261A91, BattleFrontier_Lounge2_Text_261B0C }, + { BattleFrontier_Lounge2_Text_261B95, BattleFrontier_Lounge2_Text_261B95, BattleFrontier_Lounge2_Text_261B95 }, + { BattleFrontier_Lounge2_Text_261C1A, BattleFrontier_Lounge2_Text_261C1A, BattleFrontier_Lounge2_Text_261C1A }, + { BattleFrontier_Lounge2_Text_260BC4, BattleFrontier_Lounge2_Text_260C6D, BattleFrontier_Lounge2_Text_260D3A }, + { BattleFrontier_Lounge2_Text_260E1E, BattleFrontier_Lounge2_Text_260EC7, BattleFrontier_Lounge2_Text_260F74 }, + { BattleFrontier_Lounge2_Text_2614E6, BattleFrontier_Lounge2_Text_261591, BattleFrontier_Lounge2_Text_26166F }, + { BattleFrontier_Lounge2_Text_261282, BattleFrontier_Lounge2_Text_261329, BattleFrontier_Lounge2_Text_261403 }, + { BattleFrontier_Lounge2_Text_261026, BattleFrontier_Lounge2_Text_2610CC, BattleFrontier_Lounge2_Text_261194 }, + { BattleFrontier_Lounge2_Text_26174D, BattleFrontier_Lounge2_Text_2617F9, BattleFrontier_Lounge2_Text_2618C4 }, + }; + + static const u8 gUnknown_085B2CC8[][2] = { + { 0x15, 0x38 }, + { 0x15, 0x23 }, + { 0xff, 0xff }, + { 0xff, 0xff }, + { 0x02, 0x04 }, + { 0x07, 0x15 }, + { 0x07, 0x15 }, + { 0x0e, 0x1c }, + { 0x0d, 0x70 }, + { 0x07, 0x38 } + }; + + u8 i; + u16 unk = 0; + u16 var = VarGet(VAR_FRONTIER_MANIAC_FACILITY); + switch (var) + { + case 0: + case 1: + case 2: + case 3: + if (gSaveBlock2Ptr->frontier.field_CE0[var][0] >= gSaveBlock2Ptr->frontier.field_CE0[var][1]) + { + unk = gSaveBlock2Ptr->frontier.field_CE0[var][0]; + } + else + { + unk = gSaveBlock2Ptr->frontier.field_CE0[var][1]; + } + break; + case 4: + if (gSaveBlock2Ptr->frontier.field_D0C[0][0] >= gSaveBlock2Ptr->frontier.field_D0C[0][1]) + { + unk = gSaveBlock2Ptr->frontier.field_D0C[0][0]; + } + else + { + unk = gSaveBlock2Ptr->frontier.field_D0C[0][1]; + } + break; + case 5: + if (gSaveBlock2Ptr->frontier.field_DE2[0] >= gSaveBlock2Ptr->frontier.field_DE2[1]) + { + unk = gSaveBlock2Ptr->frontier.field_DE2[0]; + } + else + { + unk = gSaveBlock2Ptr->frontier.field_DE2[1]; + } + break; + case 6: + if (gSaveBlock2Ptr->frontier.field_DC8[0][0] >= gSaveBlock2Ptr->frontier.field_DC8[0][1]) + { + unk = gSaveBlock2Ptr->frontier.field_DC8[0][0]; + } + else + { + unk = gSaveBlock2Ptr->frontier.field_DC8[0][1]; + } + break; + case 7: + if (gSaveBlock2Ptr->frontier.field_DDA[0] >= gSaveBlock2Ptr->frontier.field_DDA[1]) + { + unk = gSaveBlock2Ptr->frontier.field_DDA[0]; + } + else + { + unk = gSaveBlock2Ptr->frontier.field_DDA[1]; + } + break; + case 8: + if (gSaveBlock2Ptr->frontier.field_E04[0] >= gSaveBlock2Ptr->frontier.field_E04[1]) + { + unk = gSaveBlock2Ptr->frontier.field_E04[0]; + } + else + { + unk = gSaveBlock2Ptr->frontier.field_E04[1]; + } + break; + case 9: + if (gSaveBlock2Ptr->frontier.field_E1A[0] >= gSaveBlock2Ptr->frontier.field_E1A[1]) + { + unk = gSaveBlock2Ptr->frontier.field_E1A[0]; + } + else + { + unk = gSaveBlock2Ptr->frontier.field_E1A[1]; + } + break; + } + + for (i = 0; i < 2 && gUnknown_085B2CC8[var][i] < unk; i++); + + ShowFieldMessage(gUnknown_085B2C50[var][i]); +} + +void sub_813A080(void) +{ + static const u16 gUnknown_085B2CDC[] = { + 0x0007, 0x000e, 0x0015, 0x001c, 0x0023, 0x0031, 0x003f, 0x004d, 0x005b, 0x0000 + }; + + u8 i; + u16 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); + u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; + + if (battleMode == 2 && !FlagGet(FLAG_0x152)) + { + gSpecialVar_0x8005 = 5; + gSpecialVar_0x8006 = 4; + return; + } + + for (i = 0; i < 9; i++) + { + if (gUnknown_085B2CDC[i] > gSaveBlock2Ptr->frontier.field_CE0[battleMode][lvlMode]) + { + gSpecialVar_0x8005 = 4; + gSpecialVar_0x8006 = i + 5; + return; + } + } + + gSpecialVar_0x8005 = 4; + gSpecialVar_0x8006 = 12; +} + +void sub_813A128(void) +{ + u8 taskId = CreateTask(sub_813A2DC, 8); + struct Task *task = &gTasks[taskId]; + task->data[11] = gSpecialVar_0x8004; + + switch (gSpecialVar_0x8004) + { + case 0: + task->data[0] = 1; + task->data[1] = 1; + task->data[2] = 1; + task->data[3] = 1; + task->data[4] = 1; + task->data[5] = 1; + task->data[6] = 0; + task->data[15] = taskId; + break; + case 1: + task->data[0] = 5; + task->data[1] = 8; + task->data[2] = 1; + task->data[3] = 1; + task->data[4] = 9; + task->data[5] = 10; + task->data[6] = 0; + task->data[15] = taskId; + break; + case 2: + task->data[0] = 6; + task->data[1] = 12; + task->data[2] = 1; + task->data[3] = 1; + task->data[4] = 7; + task->data[5] = 12; + task->data[6] = 0; + task->data[15] = taskId; + break; + case 3: + task->data[0] = 6; + task->data[1] = 11; + task->data[2] = 14; + task->data[3] = 1; + task->data[4] = 15; + task->data[5] = 12; + task->data[6] = 0; + task->data[15] = taskId; + break; + case 4: + task->data[0] = 6; + task->data[1] = 6; + task->data[2] = 14; + task->data[3] = 1; + task->data[4] = 15; + task->data[5] = 12; + task->data[6] = 0; + task->data[15] = taskId; + break; + case 5: + task->data[0] = 6; + task->data[1] = 7; + task->data[2] = 14; + task->data[3] = 1; + task->data[4] = 15; + task->data[5] = 12; + task->data[6] = 0; + task->data[15] = taskId; + break; + case 6: + task->data[0] = 6; + task->data[1] = 10; + task->data[2] = 14; + task->data[3] = 1; + task->data[4] = 15; + task->data[5] = 12; + task->data[6] = 0; + task->data[15] = taskId; + break; + case 7: + task->data[0] = 6; + task->data[1] = 12; + task->data[2] = 15; + task->data[3] = 1; + task->data[4] = 14; + task->data[5] = 12; + task->data[6] = 0; + task->data[15] = taskId; + break; + case 8: + task->data[0] = 6; + task->data[1] = 10; + task->data[2] = 17; + task->data[3] = 1; + task->data[4] = 11; + task->data[5] = 12; + task->data[6] = 0; + task->data[15] = taskId; + break; + case 9: + case 10: + task->data[0] = 6; + task->data[1] = 11; + task->data[2] = 15; + task->data[3] = 1; + task->data[4] = 14; + task->data[5] = 12; + task->data[6] = 0; + task->data[15] = taskId; + break; + case 11: + task->data[0] = 6; + task->data[1] = 7; + task->data[2] = 19; + task->data[3] = 1; + task->data[4] = 10; + task->data[5] = 12; + task->data[6] = 0; + task->data[15] = taskId; + break; + case 12: + task->data[0] = 6; + task->data[1] = 7; + task->data[2] = 17; + task->data[3] = 1; + task->data[4] = 12; + task->data[5] = 12; + task->data[6] = 0; + task->data[15] = taskId; + break; + default: + gSpecialVar_Result = 0x7F; + DestroyTask(taskId); + break; + } +} + +static const u8 *const gUnknown_085B2CF0[][16] = { + { + gText_Exit, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL + }, + { + gText_BlueFlute, + gText_YellowFlute, + gText_RedFlute, + gText_WhiteFlute, + gText_BlackFlute, + gText_PrettyChair, + gText_PrettyDesk, + gText_Exit, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL + }, + { + gText_0Pts, + gText_10Pts, + gText_20Pts, + gText_30Pts, + gText_40Pts, + gText_50Pts, + gText_60Pts, + gText_70Pts, + gText_80Pts, + gText_90Pts, + gText_100Pts, + gText_QuestionMark, + NULL, + NULL, + NULL, + NULL + }, + { + gText_KissPoster16BP, + gText_KissCushion32BP, + gText_SmoochumDoll32BP, + gText_TogepiDoll48BP, + gText_MeowthDoll48BP, + gText_ClefairyDoll48BP, + gText_DittoDoll48BP, + gText_CyndaquilDoll80BP, + gText_ChikoritaDoll80BP, + gText_TotodileDoll80BP, + gText_Exit, + NULL, + NULL, + NULL, + NULL, + NULL + }, + { + gText_LaprasDoll128BP, + gText_SnorlaxDoll128BP, + gText_VenusaurDoll256BP, + gText_CharizardDoll256BP, + gText_BlastoiseDoll256BP, + gText_Exit, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL + }, + { + gText_Protein1BP, + gText_Calcium1BP, + gText_Iron1BP, + gText_Zinc1BP, + gText_Carbos1BP, + gText_HpUp1BP, + gText_Exit, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL + }, + { + gText_Leftovers48BP, + gText_WhiteHerb48BP, + gText_QuickClaw48BP, + gText_MentalHerb48BP, + gText_BrightPowder64BP, + gText_ChoiceBand64BP, + gText_KingsRock64BP, + gText_FocusBand64BP, + gText_ScopeLens64BP, + gText_Exit, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL + }, + { + gText_EnergyPowder50, + gText_EnergyRoot80, + gText_HealPowder50, + gText_RevivalHerb300, + gText_Protein1000, + gText_Iron1000, + gText_Carbos1000, + gText_Calcium1000, + gText_Zinc1000, + gText_HPUp1000, + gText_PPUp3000, + gText_Exit, + NULL, + NULL, + NULL, + NULL + }, + { + gText_BattleTower2, + gText_BattleDome, + gText_BattlePalace, + gText_BattleArena, + gText_BattleFactory, + gText_BattlePike, + gText_BattlePyramid, + gText_RankingHall, + gText_ExchangeService, + gText_Exit, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL + }, + { + gText_Softboiled16BP, + gText_SeismicToss24BP, + gText_DreamEater24BP, + gText_MegaPunch24BP, + gText_MegaKick48BP, + gText_BodySlam48BP, + gText_RockSlide48BP, + gText_Counter48BP, + gText_ThunderWave48BP, + gText_SwordsDance48BP, + gText_Exit, + NULL, + NULL, + NULL, + NULL, + NULL + }, + { + gText_DefenseCurl16BP, + gText_Snore24BP, + gText_MudSlap24BP, + gText_Swift24BP, + gText_IcyWind24BP, + gText_Endure48BP, + gText_PsychUp48BP, + gText_IcePunch48BP, + gText_ThunderPunch48BP, + gText_FirePunch48BP, + gText_Exit, + NULL, + NULL, + NULL, + NULL, + NULL + }, + { + gText_SlateportCity, + gText_BattleFrontier, + gText_SouthernIsland, + gText_NavelRock, + gText_BirthIsland, + gText_FarawayIsland, + gText_Exit, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL + }, + { + gText_BattleTrainers, + gText_BattleBasics, + gText_PokemonNature, + gText_PokemonMoves, + gText_Underpowered, + gText_WhenInDanger, + gText_Exit, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL + } +}; + +static void sub_813A2DC(u8 taskId) +{ + u32 unk1; + u8 i, windowId; + struct WindowTemplate template; + struct Task *task = &gTasks[taskId]; + + ScriptContext2_Enable(); + gUnknown_0203AB68 = 0; + gUnknown_0203AB6C = 0x40; + sub_813AA60(task->data[11], 0); + sub_813ACE8(task->data[11], 0); + gUnknown_0203AB64 = AllocZeroed(task->data[1] * 8); + gUnknown_0203AB6A = 0; + sub_813A42C(); + + for (unk1 = 0, i = 0; i < task->data[1]; i++) + { + const u8 *text = gUnknown_085B2CF0[gSpecialVar_0x8004][i]; + gUnknown_0203AB64[i].name = text; + gUnknown_0203AB64[i].id = i; + unk1 = display_text_and_get_width(text, unk1); + } + + task->data[4] = convert_pixel_width_to_tile_width(unk1); + + if (task->data[2] + task->data[4] > 0x1D) + { + int unk2 = 0x1D - task->data[4]; + if (unk2 < 0) + { + task->data[2] = 0; + } + else + { + task->data[2] = unk2; + } + } + + template = CreateWindowTemplate(0, task->data[2], task->data[3], task->data[4], task->data[5], 0xF, 0x64); + windowId = AddWindow(&template); + task->data[13] = windowId; + SetStandardWindowBorderStyle(windowId, 0); + + gUnknown_030061D0.totalItems = task->data[1]; + gUnknown_030061D0.maxShowed = task->data[0]; + gUnknown_030061D0.windowId = task->data[13]; + + sub_813A694(taskId); + task->data[14] = ListMenuInit(&gUnknown_030061D0, task->data[7], task->data[8]); + schedule_bg_copy_tilemap_to_vram(0); + gTasks[taskId].func = sub_813A4EC; +} + +static void sub_813A42C(void) +{ + gUnknown_030061D0.items = gUnknown_0203AB64; + gUnknown_030061D0.moveCursorFunc = sub_813A46C; + gUnknown_030061D0.itemPrintFunc = NULL; + gUnknown_030061D0.totalItems = 1; + gUnknown_030061D0.maxShowed = 1; + gUnknown_030061D0.windowId = 0; + gUnknown_030061D0.header_X = 0; + gUnknown_030061D0.item_X = 8; + gUnknown_030061D0.cursor_X = 0; + gUnknown_030061D0.upText_Y = 1; + gUnknown_030061D0.cursorPal = 2; + gUnknown_030061D0.fillValue = 1; + gUnknown_030061D0.cursorShadowPal = 3; + gUnknown_030061D0.lettersSpacing = 0; + gUnknown_030061D0.itemVerticalPadding = 0; + gUnknown_030061D0.scrollMultiple = 0; + gUnknown_030061D0.fontId = 1; + gUnknown_030061D0.cursorKind = 0; +} + +static void sub_813A46C(s32 itemIndex, bool8 onInit, struct ListMenu *list) +{ + u8 taskId; + PlaySE(SE_SELECT); + taskId = FindTaskIdByFunc(sub_813A4EC); + if (taskId != 0xFF) + { + u16 misc; + struct Task *task = &gTasks[taskId]; + ListMenuGetScrollAndRow(task->data[14], &misc, NULL); + gUnknown_0203AB68 = misc; + ListMenuGetCurrentItemArrayId(task->data[14], &misc); + sub_813AC44(task->data[11], gUnknown_0203AB6A); + sub_813AA60(task->data[11], misc); + sub_813AD34(task->data[11], misc); + gUnknown_0203AB6A = misc; + } +} + +// stupid r5<->r6 swap +#ifdef NONMATCHING +static void sub_813A4EC(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + s32 itemId = ListMenuHandleInputGetItemId(task->data[14]); + + switch (itemId) + { + case LIST_NOTHING_CHOSEN: + break; + case LIST_B_PRESSED: + gSpecialVar_Result = 0x7F; + PlaySE(SE_SELECT); + sub_813A570(taskId); + break; + default: + gSpecialVar_Result = itemId; + PlaySE(SE_SELECT); + if (!task->data[6] || itemId == task->data[1] - 1) + { + sub_813A570(taskId); + } + else + { + sub_813A738(taskId); + task->func = sub_813A600; + EnableBothScriptContexts(); + } + break; + } +} +#else +NAKED +static void sub_813A4EC(u8 taskId) +{ + asm_unified("push {r4-r6,lr}\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + ldr r1, =gTasks\n\ + adds r6, r0, r1\n\ + ldrh r0, [r6, 0x24]\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + bl ListMenuHandleInputGetItemId\n\ + adds r4, r0, 0\n\ + movs r0, 0x2\n\ + negs r0, r0\n\ + cmp r4, r0\n\ + beq _0813A51C\n\ + adds r0, 0x1\n\ + cmp r4, r0\n\ + bne _0813A530\n\ + b _0813A566\n\ + .pool\n\ +_0813A51C:\n\ + ldr r1, =gSpecialVar_Result\n\ + movs r0, 0x7F\n\ + strh r0, [r1]\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + b _0813A54C\n\ + .pool\n\ +_0813A530:\n\ + ldr r0, =gSpecialVar_Result\n\ + strh r4, [r0]\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + movs r1, 0x14\n\ + ldrsh r0, [r6, r1]\n\ + cmp r0, 0\n\ + beq _0813A54C\n\ + movs r1, 0xA\n\ + ldrsh r0, [r6, r1]\n\ + subs r0, 0x1\n\ + cmp r4, r0\n\ + bne _0813A558\n\ +_0813A54C:\n\ + adds r0, r5, 0\n\ + bl sub_813A570\n\ + b _0813A566\n\ + .pool\n\ +_0813A558:\n\ + adds r0, r5, 0\n\ + bl sub_813A738\n\ + ldr r0, =sub_813A600\n\ + str r0, [r6]\n\ + bl EnableBothScriptContexts\n\ +_0813A566:\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .pool"); +} +#endif // NONMATCHING + +static void sub_813A570(u8 taskId) +{ + u16 array; + struct Task *task = &gTasks[taskId]; + ListMenuGetCurrentItemArrayId(task->data[14], &array); + sub_813AC44(task->data[11], array); + sub_813A738(taskId); + DestroyListMenuTask(task->data[14], NULL, NULL); + Free(gUnknown_0203AB64); + sub_8198070(task->data[13], 1); + FillWindowPixelBuffer(task->data[13], 0); + CopyWindowToVram(task->data[13], 2); + RemoveWindow(task->data[13]); + DestroyTask(taskId); + EnableBothScriptContexts(); +} + +static void sub_813A600(u8 taskId) +{ + switch (gTasks[taskId].data[6]) + { + case 1: + default: + break; + case 2: + gTasks[taskId].data[6] = 1; + gTasks[taskId].func = sub_813A664; + break; + } +} + +void sub_813A630(void) +{ + u8 taskId = FindTaskIdByFunc(sub_813A600); + if (taskId == 0xFF) + { + EnableBothScriptContexts(); + } + else + { + gTasks[taskId].data[6]++; + } +} + +static void sub_813A664(u8 taskId) +{ + ScriptContext2_Enable(); + sub_813A694(taskId); + gTasks[taskId].func = sub_813A4EC; +} + +static void sub_813A694(u8 taskId) +{ + static const struct ScrollArrowsTemplate gUnknown_085B3030 = { + .firstArrowType = 2, + .firstX = 0, + .firstY = 0, + .secondArrowType = 3, + .secondX = 0, + .secondY = 0, + .fullyUpThreshold = 0, + .fullyDownThreshold = 0, + .tileTag = 2000, + .palTag = 100, + .palNum = 0 + }; + + struct Task *task = &gTasks[taskId]; + struct ScrollArrowsTemplate template = gUnknown_085B3030; + if (task->data[0] != task->data[1]) + { + template.firstX = (task->data[4] / 2) * 8 + 12 + (task->data[2] - 1) * 8; + template.firstY = 8; + template.secondX = (task->data[4] / 2) * 8 + 12 + (task->data[2] - 1) * 8; + template.secondY = task->data[5] * 8 + 10; + template.fullyUpThreshold = 0; + template.fullyDownThreshold = task->data[1] - task->data[0]; + task->data[12] = AddScrollIndicatorArrowPair(&template, &gUnknown_0203AB68); + } +} + +static void sub_813A738(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + if (task->data[0] != task->data[1]) + { + RemoveScrollIndicatorArrowPair(task->data[12]); + } +} + +void nullsub_55(void) +{ + +} + +void sub_813A76C(void) +{ + u8 i; + for (i = 0; i < 2; i++) + { + if (gLinkPlayers[i].gender == MALE) + { + VarSet(VAR_OBJ_GFX_ID_F - i, EVENT_OBJ_GFX_BRENDAN_NORMAL); + } + else + { + VarSet(VAR_OBJ_GFX_ID_F - i, EVENT_OBJ_GFX_RIVAL_MAY_NORMAL); + } + } +} + +void sub_813A7B8(void) +{ + static const u8 *const gUnknown_085B3040[] = { + BattleFrontier_Lounge5_Text_26468D, + BattleFrontier_Lounge5_Text_2646E5, + BattleFrontier_Lounge5_Text_264741, + BattleFrontier_Lounge5_Text_2647A4, + BattleFrontier_Lounge5_Text_2647FC, + BattleFrontier_Lounge5_Text_264858, + BattleFrontier_Lounge5_Text_2648BE, + BattleFrontier_Lounge5_Text_264916, + BattleFrontier_Lounge5_Text_264972, + BattleFrontier_Lounge5_Text_2649D5, + BattleFrontier_Lounge5_Text_264A3F, + BattleFrontier_Lounge5_Text_264A9B, + BattleFrontier_Lounge5_Text_264AF3, + BattleFrontier_Lounge5_Text_264B5D, + BattleFrontier_Lounge5_Text_2648BE, + BattleFrontier_Lounge5_Text_264BC3, + BattleFrontier_Lounge5_Text_264C36, + BattleFrontier_Lounge5_Text_2648BE, + BattleFrontier_Lounge5_Text_264C95, + BattleFrontier_Lounge5_Text_264D01, + BattleFrontier_Lounge5_Text_264D6B, + BattleFrontier_Lounge5_Text_264DD7, + BattleFrontier_Lounge5_Text_264E33, + BattleFrontier_Lounge5_Text_264E8F, + BattleFrontier_Lounge5_Text_2648BE, + }; + + u8 nature; + + if (gSpecialVar_0x8004 >= PARTY_SIZE) + { + gSpecialVar_0x8004 = 0; + } + + nature = GetNature(&gPlayerParty[gSpecialVar_0x8004]); + ShowFieldMessage(gUnknown_085B3040[nature]); +} + +void UpdateFrontierGambler(u16 a0) +{ + u16 *var = GetVarPointer(VAR_FRONTIER_GAMBLER_FACILITY); + *var += a0; + *var %= 12; +} + +void sub_813A820(void) +{ + static const u8 *const gUnknown_085B30A4[] = { + BattleFrontier_Lounge3_Text_262261, + BattleFrontier_Lounge3_Text_26230D, + BattleFrontier_Lounge3_Text_2623B9, + BattleFrontier_Lounge3_Text_262464, + BattleFrontier_Lounge3_Text_26250E, + BattleFrontier_Lounge3_Text_2625B8, + BattleFrontier_Lounge3_Text_26266A, + BattleFrontier_Lounge3_Text_26271C, + BattleFrontier_Lounge3_Text_2627C9, + BattleFrontier_Lounge3_Text_262876, + BattleFrontier_Lounge3_Text_26291A, + BattleFrontier_Lounge3_Text_2629BC, + }; + + u16 var = VarGet(VAR_FRONTIER_GAMBLER_FACILITY); + ShowFieldMessage(gUnknown_085B30A4[var]); + VarSet(VAR_FRONTIER_GAMBLER_SET_FACILITY_F, var); +} + +void sub_813A854(void) +{ + static const u8 *const gUnknown_085B30D4[] = { + BattleFrontier_Lounge3_Text_262C04, + BattleFrontier_Lounge3_Text_262C90, + BattleFrontier_Lounge3_Text_262D1C, + BattleFrontier_Lounge3_Text_262DA7, + BattleFrontier_Lounge3_Text_262E34, + BattleFrontier_Lounge3_Text_262EC1, + BattleFrontier_Lounge3_Text_262F56, + BattleFrontier_Lounge3_Text_262FEB, + BattleFrontier_Lounge3_Text_263078, + BattleFrontier_Lounge3_Text_263105, + BattleFrontier_Lounge3_Text_26318C, + BattleFrontier_Lounge3_Text_263211, + }; + + ShowFieldMessage(gUnknown_085B30D4[VarGet(VAR_FRONTIER_GAMBLER_SET_FACILITY_F)]); +} + +void sub_813A878(u8 a0) +{ + static const u16 gUnknown_085B3104[] = {0x0000, 0x0001, 0x0002, 0x0100, 0x0101, 0x0400, 0x0401, 0x0200, 0x0201, 0x0300, 0x0500, 0x0600}; + + u16 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); + u16 var2 = VarGet(VAR_FRONTIER_GAMBLER_SET_FACILITY_F); + u16 frontierFacilityId = VarGet(VAR_FRONTIER_FACILITY); + + if (VarGet(VAR_FRONTIER_GAMBLER_PLACED_BET_F) == 1) + { + if (gUnknown_085B3104[var2] == (frontierFacilityId << 8) + battleMode) + { + if (a0 != 0) + { + VarSet(VAR_FRONTIER_GAMBLER_PLACED_BET_F, 2); + } + else + { + VarSet(VAR_FRONTIER_GAMBLER_PLACED_BET_F, 3); + } + } + } +} + +void sub_813A8FC(void) +{ + u8 string[32]; + u32 x; + StringCopy(ConvertIntToDecimalStringN(string, gSaveBlock2Ptr->frontier.frontierBattlePoints, STR_CONV_MODE_RIGHT_ALIGN, 4), gText_BP); + x = GetStringRightAlignXOffset(1, string, 48); + PrintTextOnWindow(gUnknown_0203AB6D, 1, string, x, 1, 0, NULL); +} + +void sub_813A958(void) +{ + static const struct WindowTemplate gUnknown_085B311C = { + .priority = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 6, + .height = 2, + .paletteNum = 15, + .baseBlock = 8, + }; + + gUnknown_0203AB6D = AddWindow(&gUnknown_085B311C); + SetStandardWindowBorderStyle(gUnknown_0203AB6D, 0); + sub_813A8FC(); + CopyWindowToVram(gUnknown_0203AB6D, 2); +} + +void sub_813A988(void) +{ + sub_8198070(gUnknown_0203AB6D, TRUE); + RemoveWindow(gUnknown_0203AB6D); +} + +void sub_813A9A4(void) +{ + if (gSaveBlock2Ptr->frontier.frontierBattlePoints < gSpecialVar_0x8004) + { + gSaveBlock2Ptr->frontier.frontierBattlePoints = 0; + } + else + { + gSaveBlock2Ptr->frontier.frontierBattlePoints -= gSpecialVar_0x8004; + } +} + +void sub_813A9D0(void) +{ + if (gSaveBlock2Ptr->frontier.frontierBattlePoints + gSpecialVar_0x8004 > 0x270F) + { + gSaveBlock2Ptr->frontier.frontierBattlePoints = 0x270f; + } + else + { + gSaveBlock2Ptr->frontier.frontierBattlePoints = gSaveBlock2Ptr->frontier.frontierBattlePoints + gSpecialVar_0x8004; + } +} + +u16 sub_813AA04(void) +{ + return gSaveBlock2Ptr->frontier.frontierBattlePoints; +} + +void sub_813AA18(void) +{ + static const struct WindowTemplate gUnknown_085B3124 = { + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 9, + .width = 4, + .height = 4, + .paletteNum = 15, + .baseBlock = 20, + }; + + gUnknown_0203AB6E = AddWindow(&gUnknown_085B3124); + SetStandardWindowBorderStyle(gUnknown_0203AB6E, 0); + CopyWindowToVram(gUnknown_0203AB6E, 2); +} + +void sub_813AA44(void) +{ + sub_8198070(gUnknown_0203AB6E, TRUE); + RemoveWindow(gUnknown_0203AB6E); +} + +static void sub_813AA60(u16 a0, u16 a1) +{ + static const u16 gUnknown_085B312C[] = { 0x004b, 0x0067, 0x0057, 0x004f, 0x0054, 0x0055, 0x0056, 0x0050, 0x0051, 0x0052, 0xffff }; + static const u16 gUnknown_085B3142[] = { 0x0071, 0x006f, 0x0072, 0x0073, 0x0074, 0xffff }; + static const u16 gUnknown_085B314E[] = { 0x0040, 0x0043, 0x0041, 0x0046, 0x0042, 0x003f, 0xffff }; + static const u16 gUnknown_085B315C[] = { 0x00c8, 0x00b4, 0x00b7, 0x00b9, 0x00b3, 0x00ba, 0x00bb, 0x00c4, 0x00c6, 0xffff }; + + static const u8 *const gUnknown_085B3170[] = { + BattleFrontier_BattlePointExchangeServiceCorner_Text_2601AA, + BattleFrontier_BattlePointExchangeServiceCorner_Text_2601D0, + BattleFrontier_BattlePointExchangeServiceCorner_Text_260201, + BattleFrontier_BattlePointExchangeServiceCorner_Text_26022F, + BattleFrontier_BattlePointExchangeServiceCorner_Text_26025B, + BattleFrontier_BattlePointExchangeServiceCorner_Text_260287, + BattleFrontier_BattlePointExchangeServiceCorner_Text_2602B5, + BattleFrontier_BattlePointExchangeServiceCorner_Text_2602E0, + BattleFrontier_BattlePointExchangeServiceCorner_Text_26030F, + BattleFrontier_BattlePointExchangeServiceCorner_Text_26033E, + gText_Exit, + }; + + static const u8 *const gUnknown_085B319C[] = { + BattleFrontier_BattlePointExchangeServiceCorner_Text_26036C, + BattleFrontier_BattlePointExchangeServiceCorner_Text_26036C, + BattleFrontier_BattlePointExchangeServiceCorner_Text_26036C, + BattleFrontier_BattlePointExchangeServiceCorner_Text_26036C, + BattleFrontier_BattlePointExchangeServiceCorner_Text_26036C, + gText_Exit + }; + + static const u8 *const gUnknown_085B31B4[] = { + BattleFrontier_BattlePointExchangeServiceCorner_Text_260397, + BattleFrontier_BattlePointExchangeServiceCorner_Text_2603BE, + BattleFrontier_BattlePointExchangeServiceCorner_Text_2603E6, + BattleFrontier_BattlePointExchangeServiceCorner_Text_26040E, + BattleFrontier_BattlePointExchangeServiceCorner_Text_260436, + BattleFrontier_BattlePointExchangeServiceCorner_Text_26045C, + gText_Exit + }; + + static const u8 *const gUnknown_085B31D0[] = { + BattleFrontier_BattlePointExchangeServiceCorner_Text_26047A, + BattleFrontier_BattlePointExchangeServiceCorner_Text_2604AC, + BattleFrontier_BattlePointExchangeServiceCorner_Text_2604D8, + BattleFrontier_BattlePointExchangeServiceCorner_Text_26050F, + BattleFrontier_BattlePointExchangeServiceCorner_Text_260542, + BattleFrontier_BattlePointExchangeServiceCorner_Text_260575, + BattleFrontier_BattlePointExchangeServiceCorner_Text_2605A8, + BattleFrontier_BattlePointExchangeServiceCorner_Text_2605E2, + BattleFrontier_BattlePointExchangeServiceCorner_Text_260613, + gText_Exit + }; + + if (a0 > 2 && a0 < 7) + { + FillWindowPixelRect(0, 0x11, 0, 0, 216, 32); + switch (a0) + { + case 3: + AddTextPrinterParameterized(0, 1, gUnknown_085B3170[a1], 0, NULL, 2, 1, 3); + if (gUnknown_085B312C[a1] == 0xFFFF) + { + sub_813ABD4(gUnknown_085B312C[a1]); + } + else + { + FreeSpriteTilesByTag(5500); + FreeSpritePaletteByTag(5500); + gUnknown_0203AB6C = AddDecorationIconObject(gUnknown_085B312C[a1], 33, 88, 0, 5500, 5500); + } + break; + case 4: + AddTextPrinterParameterized(0, 1, gUnknown_085B319C[a1], 0, NULL, 2, 1, 3); + if (gUnknown_085B3142[a1] == 0xFFFF) + { + sub_813ABD4(gUnknown_085B3142[a1]); + } + else + { + FreeSpriteTilesByTag(5500); + FreeSpritePaletteByTag(5500); + gUnknown_0203AB6C = AddDecorationIconObject(gUnknown_085B3142[a1], 33, 88, 0, 5500, 5500); + } + break; + case 5: + AddTextPrinterParameterized(0, 1, gUnknown_085B31B4[a1], 0, NULL, 2, 1, 3); + sub_813ABD4(gUnknown_085B314E[a1]); + break; + case 6: + AddTextPrinterParameterized(0, 1, gUnknown_085B31D0[a1], 0, NULL, 2, 1, 3); + sub_813ABD4(gUnknown_085B315C[a1]); + break; + } + } +} + +static void sub_813ABD4(u16 a0) +{ + FreeSpriteTilesByTag(5500); + FreeSpritePaletteByTag(5500); + gUnknown_0203AB6C = AddItemIconSprite(5500, 5500, a0); + + if (gUnknown_0203AB6C != MAX_SPRITES) + { + gSprites[gUnknown_0203AB6C].oam.priority = 0; + gSprites[gUnknown_0203AB6C].pos1.x = 36; + gSprites[gUnknown_0203AB6C].pos1.y = 92; + } +} + +static void sub_813AC44(u16 a0, u16 unused) +{ + if (gUnknown_0203AB6C != MAX_SPRITES) + { + switch (a0) + { + case 3 ... 6: + DestroySpriteAndFreeResources(&gSprites[gUnknown_0203AB6C]); + break; + } + gUnknown_0203AB6C = MAX_SPRITES; + } +} + +static const u16 gUnknown_085B31F8[] = { 0x0087, 0x0045, 0x008a, 0x0005, 0x0019, 0x0022, 0x009d, 0x0044, 0x0056, 0x000e }; +static const u16 gUnknown_085B320C[] = { 0x006f, 0x00ad, 0x00bd, 0x0081, 0x00c4, 0x00cb, 0x00f4, 0x0008, 0x0009, 0x0007 }; + +void sub_813AC7C(void) +{ + if (gSpecialVar_0x8005 != 0) + { + StringCopy(gStringVar1, gMoveNames[gUnknown_085B320C[gSpecialVar_0x8004]]); + } + else + { + StringCopy(gStringVar1, gMoveNames[gUnknown_085B31F8[gSpecialVar_0x8004]]); + } +} + +static void sub_813ACE8(u8 a0, u16 a1) +{ + static const struct WindowTemplate gUnknown_085B3220 = { + .priority = 0, + .tilemapLeft = 1, + .tilemapTop = 7, + .width = 12, + .height = 6, + .paletteNum = 15, + .baseBlock = 28, + }; + + if (a0 == 9 || a0 == 10) + { + if (gSpecialVar_0x8006 == 0) + { + gUnknown_0203AB5E = AddWindow(&gUnknown_085B3220); + SetStandardWindowBorderStyle(gUnknown_0203AB5E, 0); + } + sub_813AD34(a0, a1); + } +} + +static void sub_813AD34(u8 a0, u16 a1) +{ + static const u8 *const gUnknown_085B3228[] = { + BattleFrontier_Lounge7_Text_265E30, + BattleFrontier_Lounge7_Text_265E5B, + BattleFrontier_Lounge7_Text_265E8A, + BattleFrontier_Lounge7_Text_265EC0, + BattleFrontier_Lounge7_Text_265EED, + BattleFrontier_Lounge7_Text_265F1C, + BattleFrontier_Lounge7_Text_265F47, + BattleFrontier_Lounge7_Text_265F77, + BattleFrontier_Lounge7_Text_265FAA, + BattleFrontier_Lounge7_Text_265FDD, + gText_Exit, + }; + + static const u8 *const gUnknown_085B3254[] = { + BattleFrontier_Lounge7_Text_26600A, + BattleFrontier_Lounge7_Text_26603E, + BattleFrontier_Lounge7_Text_266070, + BattleFrontier_Lounge7_Text_2660A6, + BattleFrontier_Lounge7_Text_2660D0, + BattleFrontier_Lounge7_Text_2660FF, + BattleFrontier_Lounge7_Text_26612D, + BattleFrontier_Lounge7_Text_26615F, + BattleFrontier_Lounge7_Text_266185, + BattleFrontier_Lounge7_Text_2661B5, + gText_Exit, + }; + + if (a0 == 9 || a0 == 10) + { + FillWindowPixelRect(gUnknown_0203AB5E, 0x11, 0, 0, 96, 48); + if (a0 == 10) + { + PrintTextOnWindow(gUnknown_0203AB5E, 1, gUnknown_085B3254[a1], 0, 1, 0, NULL); + } + else + { + PrintTextOnWindow(gUnknown_0203AB5E, 1, gUnknown_085B3228[a1], 0, 1, 0, NULL); + } + } +} + +void sub_813ADB8(void) +{ + sub_8198070(gUnknown_0203AB5E, TRUE); + RemoveWindow(gUnknown_0203AB5E); +} + +void sub_813ADD4(void) +{ + u16 scrollOffset, selectedRow; + u8 i; + u8 taskId = FindTaskIdByFunc(sub_813A600); + if (taskId != 0xFF) + { + struct Task *task = &gTasks[taskId]; + ListMenuGetScrollAndRow(task->data[14], &scrollOffset, &selectedRow); + SetStandardWindowBorderStyle(task->data[13], 0); + + for (i = 0; i < 6; i++) + { + sub_8199F74(task->data[13], 1, gUnknown_085B2CF0[gSpecialVar_0x8004][scrollOffset + i], 10, i * 16, TEXT_SPEED_FF, NULL, 0, 0); + } + + PrintTextOnWindow(task->data[13], 1, gText_SelectorArrow, 0, selectedRow * 16, TEXT_SPEED_FF, NULL); + PutWindowTilemap(task->data[13]); + CopyWindowToVram(task->data[13], 3); + } +} + +void sub_813AEB4(void) +{ + u8 i; + u16 temp1 = 0; + u16 temp2 = 0; + gSpecialVar_0x8005 = 0; + + temp1 = VarGet(VAR_TEMP_E); + temp2 = VarGet(VAR_TEMP_D); + + if (temp1 != 0) + { + i = 0; + do + { + if (gUnknown_0861500C[i] == gUnknown_085B320C[temp2]) + { + gSpecialVar_0x8005 = i; + break; + } + i++; + } while (i < 30); + } + else + { + i = 0; + do + { + if (gUnknown_0861500C[i] == gUnknown_085B31F8[temp2]) + { + gSpecialVar_0x8005 = i; + break; + } + i++; + } while (i < 30); + } +} + +void sub_813AF48(void) +{ + u8 taskId = FindTaskIdByFunc(sub_813A600); + if (taskId != 0xFF) + { + struct Task *task = &gTasks[taskId]; + DestroyListMenuTask(task->data[14], NULL, NULL); + Free(gUnknown_0203AB64); + sub_8198070(task->data[13], TRUE); + FillWindowPixelBuffer(task->data[13], 0); + ClearWindowTilemap(task->data[13]); + CopyWindowToVram(task->data[13], 2); + RemoveWindow(task->data[13]); + DestroyTask(taskId); + } +} + +void sub_813AFC8(void) +{ + CreateTask(task_deoxys_sound, 8); +} + +static const u16 gUnknown_085B3280[][16] = { + INCBIN_U16("graphics/misc/deoxys1.gbapal"), + INCBIN_U16("graphics/misc/deoxys2.gbapal"), + INCBIN_U16("graphics/misc/deoxys3.gbapal"), + INCBIN_U16("graphics/misc/deoxys4.gbapal"), + INCBIN_U16("graphics/misc/deoxys5.gbapal"), + INCBIN_U16("graphics/misc/deoxys6.gbapal"), + INCBIN_U16("graphics/misc/deoxys7.gbapal"), + INCBIN_U16("graphics/misc/deoxys8.gbapal"), + INCBIN_U16("graphics/misc/deoxys9.gbapal"), + INCBIN_U16("graphics/misc/deoxys10.gbapal"), + INCBIN_U16("graphics/misc/deoxys11.gbapal"), +}; + +static const u8 gUnknown_085B33E0[][2] = { + { 0x0f, 0x0c }, + { 0x0b, 0x0e }, + { 0x0f, 0x08 }, + { 0x13, 0x0e }, + { 0x0c, 0x0b }, + { 0x12, 0x0b }, + { 0x0f, 0x0e }, + { 0x0b, 0x0e }, + { 0x13, 0x0e }, + { 0x0f, 0x0f }, + { 0x0f, 0x0a }, +}; + +static void task_deoxys_sound(u8 taskId) +{ + static const u8 gUnknown_085B33F6[] = { 0x04, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x06, 0x03, 0x03 }; + + if (FlagGet(FLAG_0x8D4) == TRUE) + { + gSpecialVar_Result = 3; + EnableBothScriptContexts(); + DestroyTask(taskId); + } + else + { + u16 temp1 = VarGet(VAR_0x4035); + u16 temp2 = VarGet(VAR_0x4034); + + VarSet(VAR_0x4034, 0); + if (temp1 != 0 && gUnknown_085B33F6[temp1 - 1] < temp2) + { + sub_813B0B4(0); + VarSet(VAR_0x4035, 0); + gSpecialVar_Result = 0; + DestroyTask(taskId); + } + else if (temp1 == 10) + { + FlagSet(FLAG_0x8D4); + gSpecialVar_Result = 2; + EnableBothScriptContexts(); + DestroyTask(taskId); + } + else + { + temp1++; + sub_813B0B4(temp1); + VarSet(VAR_0x4035, temp1); + gSpecialVar_Result = 1; + DestroyTask(taskId); + } + } +} + +static void sub_813B0B4(u8 a0) +{ + u8 eventObjectId; + LoadPalette(&gUnknown_085B3280[a0], 0x1A0, 8); + TryGetEventObjectIdByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &eventObjectId); + + if (a0 == 0) + { + PlaySE(SE_W109); + } + else + { + PlaySE(SE_RG_DEOMOV); + } + + CreateTask(sub_813B160, 8); + + gFieldEffectArguments[0] = 1; + gFieldEffectArguments[1] = 58; + gFieldEffectArguments[2] = 26; + gFieldEffectArguments[3] = gUnknown_085B33E0[a0][0]; + gFieldEffectArguments[4] = gUnknown_085B33E0[a0][1]; + + if (a0 == 0) + { + gFieldEffectArguments[5] = 60; + } + else + { + gFieldEffectArguments[5] = 5; + } + + FieldEffectStart(FLDEFF_66); + Overworld_SetEventObjTemplateCoords(1, gUnknown_085B33E0[a0][0], gUnknown_085B33E0[a0][1]); +} + +static void sub_813B160(u8 taskId) +{ + if (FieldEffectActiveListContains(FLDEFF_66) == FALSE) + { + EnableBothScriptContexts(); + DestroyTask(taskId); + } +} + +void increment_var_x4026_on_birth_island_modulo_100(void) +{ + u16 var = VarGet(VAR_0x4034); + if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(BIRTH_ISLAND_EXTERIOR) && gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BIRTH_ISLAND_EXTERIOR)) + { + var++; + if (var > 99) + { + VarSet(VAR_0x4034, 0); + } + else + { + VarSet(VAR_0x4034, var); + } + } +} + +void sub_813B1D0(void) +{ + LoadPalette(&gUnknown_085B3280[(u8)VarGet(VAR_0x4035)], 0x1A0, 8); + BlendPalettes(0x04000000, 16, 0); +} + +void set_unknown_box_id(u8 id) +{ + gUnknown_0203AB6F = id; +} + +u16 get_unknown_box_id(void) +{ + return gUnknown_0203AB6F; +} + +bool32 sub_813B21C(void) +{ + if (FlagGet(FLAG_SYS_STORAGE_UNKNOWN_FLAG) == FALSE) + { + if (StorageGetCurrentBox() != VarGet(VAR_STORAGE_UNKNOWN)) + { + FlagSet(FLAG_SYS_STORAGE_UNKNOWN_FLAG); + return TRUE; + } + } + return FALSE; +} + +bool8 sub_813B260(void) +{ + int box; + int i; + set_unknown_box_id(VarGet(VAR_STORAGE_UNKNOWN)); + box = StorageGetCurrentBox(); + do + { + for (i = 0; i < IN_BOX_COUNT; i++) + { + if (GetBoxMonData(GetBoxedMonPtr(box, i), MON_DATA_SPECIES, 0) == 0) + { + if (get_unknown_box_id() != box) + { + FlagClear(FLAG_SYS_STORAGE_UNKNOWN_FLAG); + } + VarSet(VAR_STORAGE_UNKNOWN, box); + return sub_813B21C(); + } + } + + if (++box == TOTAL_BOXES_COUNT) + { + box = 0; + } + } while (box != StorageGetCurrentBox()); + return FALSE; +} + +void sub_813B2E4(void) +{ + u16 randomValue = Random(); + VarSet(VAR_0x4038, 0); + + if (FlagGet(FLAG_0x1BE) == TRUE) + { + VarSet(VAR_0x4037, (randomValue & 7) + 1); + } + else if (FlagGet(FLAG_0x1BF) == TRUE) + { + VarSet(VAR_0x4037, (randomValue & 7) + 9); + } + else if ((randomValue & 1) == 0) + { + randomValue = Random(); + VarSet(VAR_0x4037, (randomValue & 7) + 1); + } + else + { + randomValue = Random(); + VarSet(VAR_0x4037, (randomValue & 7) + 9); + } +} + +bool32 sub_813B374(void) +{ + static const u8 gUnknown_085B3400[] = { 0x1d, 0x1d, 0x1e, 0x1e, 0x1f, 0x1f, 0x21, 0x21, 0x14, 0x14, 0x28, 0x28, 0x2a, 0x2a, 0x2c, 0x2c }; + + u16 var = VarGet(VAR_0x4037); + + GetMapName(gStringVar1, gUnknown_085B3400[var - 1], 0); + + if (var < 9) + { + return FALSE; + } + else + { + return TRUE; + } +} + +bool32 sub_813B3B0(void) +{ + static const u8 gUnknown_085B3410[] = { 0x1d, 0x1d, 0x1e, 0x1e, 0x1f, 0x1f, 0x21, 0x21, 0x14, 0x14, 0x28, 0x28, 0x2a, 0x2a, 0x2c, 0x2c }; + + u16 var1 = VarGet(VAR_0x4038); + u16 var2 = VarGet(VAR_0x4037); + + if (!var2) + { + return FALSE; + } + + if (++var1 > 999) + { + VarSet(VAR_0x4038, 0); + if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(UNDERWATER_MARINE_CAVE)) + { + switch (gSaveBlock1Ptr->location.mapNum) + { + case MAP_NUM(UNDERWATER_MARINE_CAVE): + case MAP_NUM(MARINE_CAVE_ENTRANCE): + case MAP_NUM(MARINE_CAVE_END): + case MAP_NUM(TERRA_CAVE_ENTRANCE): + case MAP_NUM(TERRA_CAVE_END): + VarSet(VAR_0x4039, 1); + return FALSE; + default: + break; + } + } + + if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(UNDERWATER3)) + { + switch (gSaveBlock1Ptr->location.mapNum) + { + case MAP_NUM(UNDERWATER3): + case MAP_NUM(UNDERWATER5): + case MAP_NUM(UNDERWATER6): + case MAP_NUM(UNDERWATER7): + VarSet(VAR_0x4039, 1); + return FALSE; + default: + break; + } + } + + if (gSaveBlock1Ptr->location.mapNum == gUnknown_085B3410[var2 - 1] && + gSaveBlock1Ptr->location.mapGroup == 0) + { + return TRUE; + } + else + { + VarSet(VAR_0x4037, 0); + return FALSE; + } + } + else + { + VarSet(VAR_0x4038, var1); + return FALSE; + } +} + +void sub_813B484(void) +{ + sub_80AB104(2); +} + +bool32 sub_813B490(void) +{ + static const u8 gUnknown_085B3420[][3] = { + { 0x02, 0x04, 0x01 }, + { 0x04, 0x04, 0x01 }, + { 0x05, 0x00, 0x01 }, + { 0x06, 0x03, 0x01 }, + { 0x08, 0x06, 0x01 }, + { 0x09, 0x0d, 0x01 }, + { 0x0a, 0x07, 0x01 }, + { 0x0b, 0x07, 0x01 }, + { 0x0c, 0x04, 0x01 }, + { 0x0e, 0x05, 0x01 }, + { 0x0f, 0x04, 0x01 }, + { 0x1a, 0x37, 0x01 } + }; + + u8 i; + for (i = 0; i < 12; i++) + { + if (gSaveBlock1Ptr->location.mapGroup == gUnknown_085B3420[i][0]) + { + if (gSaveBlock1Ptr->location.mapNum == gUnknown_085B3420[i][1]) + { + return gUnknown_085B3420[i][2]; + } + } + } + return TRUE; +} + +bool32 sub_813B4E0(void) +{ + int index = GetRematchIdxByTrainerIdx(gSpecialVar_0x8004); + if (index >= 0) + { + if (FlagGet(FLAG_MATCH_CALL_REGISTERED + index) == TRUE) + return TRUE; + } + return FALSE; +} + +bool32 sub_813B514(void) +{ + if (!VarGet(VAR_0x403F)) + { + return FALSE; + } + return TRUE; +} + +void sub_813B534(void) +{ + gUnknown_0203AB70 = gBattleTypeFlags; + gBattleTypeFlags = 0; + if (!gReceivedRemoteLinkPlayers) + { + CreateTask(sub_80B3AF8, 5); + } +} + +void sub_813B568(void) +{ + CreateTask(sub_813B57C, 5); +} + +static void sub_813B57C(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + if (!FuncIsActiveTask(sub_80B3AF8)) + { + gTasks[taskId].data[0]++; + } + break; + case 1: + if (sub_800A520() == TRUE) + { + if (GetMultiplayerId() == 0) + { + gTasks[taskId].data[0]++; + } + else + { + SendBlock(bitmask_all_link_players_but_self(), &gSpecialVar_0x8004, 2); + gTasks[taskId].data[0]++; + } + } + break; + case 2: + if ((GetBlockReceivedStatus() & 2) != 0) + { + if (GetMultiplayerId() == 0) + { + gSpecialVar_0x8005 = gBlockRecvBuffer[1][0]; + ResetBlockReceivedFlag(1); + if (gSpecialVar_0x8004 == 1 && gSpecialVar_0x8005 == 1) + { + gSpecialVar_Result = 1; + } + else if (gSpecialVar_0x8004 == 0 && gSpecialVar_0x8005 == 1) + { + gSpecialVar_Result = 2; + } + else if (gSpecialVar_0x8004 == 1 && gSpecialVar_0x8005 == 0) + { + gSpecialVar_Result = 3; + } + else + { + gSpecialVar_Result = 0; + } + } + gTasks[taskId].data[0]++; + } + break; + case 3: + if (sub_800A520() == TRUE) + { + if (GetMultiplayerId() != 0) + { + gTasks[taskId].data[0]++; + } + else + { + SendBlock(bitmask_all_link_players_but_self(), &gSpecialVar_Result, 2); + gTasks[taskId].data[0]++; + } + } + break; + case 4: + if ((GetBlockReceivedStatus() & 1) != 0) + { + if (GetMultiplayerId() != 0) + { + gSpecialVar_Result = gBlockRecvBuffer[0][0]; + ResetBlockReceivedFlag(0); + gTasks[taskId].data[0]++; + } + else + { + gTasks[taskId].data[0]++; + } + } + break; + case 5: + if (GetMultiplayerId() == 0) + { + if (gSpecialVar_Result == 2) + { + ShowFieldAutoScrollMessage(gText_YourPartnerHasRetired); + } + } + else + { + if (gSpecialVar_Result == 3) + { + ShowFieldAutoScrollMessage(gText_YourPartnerHasRetired); + } + } + gTasks[taskId].data[0]++; + break; + case 6: + if (!IsTextPrinterActive(0)) + { + gTasks[taskId].data[0]++; + } + break; + case 7: + if (sub_800A520() == 1) + { + sub_800ADF8(); + gTasks[taskId].data[0]++; + } + break; + case 8: + if (sub_800A520() == 1) + { + gTasks[taskId].data[0]++; + } + break; + case 9: + if (gWirelessCommType == 0) + { + sub_800AC34(); + } + gBattleTypeFlags = gUnknown_0203AB70; + EnableBothScriptContexts(); + DestroyTask(taskId); + break; + } +} + +void sub_813B7D8(void) +{ + if (gSpecialVar_0x8004 == 0) + { + DoRayquazaScene(0, TRUE, CB2_ReturnToFieldContinueScriptPlayMapMusic); + } + else + { + DoRayquazaScene(1, FALSE, CB2_ReturnToFieldContinueScriptPlayMapMusic); + } +} + +void sub_813B80C(void) +{ + CreateTask(sub_813B824, 8); + PlaySE(SE_W017); +} + +static void sub_813B824(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + data[1]++; + if (data[1] == gSpecialVar_0x8005) + { + data[0]++; + data[1] = 0; + PlaySE(SE_W017); + } + + if (data[0] == gSpecialVar_0x8004 - 1) + { + DestroyTask(taskId); + } +} + +void sub_813B880(void) +{ + u8 taskId = CreateTask(_fwalk, 8); + gTasks[taskId].data[0] = 4; + gTasks[taskId].data[1] = 4; + gTasks[taskId].data[2] = 4; + gTasks[taskId].data[3] = 0; +} + +static void _fwalk(u8 taskId) +{ + u8 x, y; + s16 *data = gTasks[taskId].data; + + data[data[3]]--; + if (data[data[3]] == 0) + { + for (y = 0; y < 4; y++) + { + for (x = 0; x < 3; x++) + { + MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + x + 6, gSaveBlock1Ptr->pos.y + y + 4, x + 0x201 + y * 8 + data[3] * 32); + } + } + DrawWholeMapView(); + data[3]++; + if (data[3] == 3) + { + DestroyTask(taskId); + EnableBothScriptContexts(); + } + } +} + +void sub_813B968(void) +{ + gSpecialVar_Result = gSpecialVar_0x8004 / 7; + gSpecialVar_Result -= (gSpecialVar_Result / 20) * 20; +} + +void sub_813B9A0(void) +{ + if (gSaveBlock1Ptr->lastHealLocation.mapGroup == MAP_GROUP(DEWFORD_TOWN) && gSaveBlock1Ptr->lastHealLocation.mapNum == MAP_NUM(DEWFORD_TOWN)) + { + Overworld_SetHealLocationWarp(3); + } +} + +bool32 sub_813B9C0(void) +{ + static const u16 gUnknown_085B3444[] = { + MAP_OLDALE_TOWN_POKEMON_CENTER_1F, + MAP_DEWFORD_TOWN_POKEMON_CENTER_1F, + MAP_LAVARIDGE_TOWN_POKEMON_CENTER_1F, + MAP_FALLARBOR_TOWN_POKEMON_CENTER_1F, + MAP_VERDANTURF_TOWN_POKEMON_CENTER_1F, + MAP_PACIFIDLOG_TOWN_POKEMON_CENTER_1F, + MAP_PETALBURG_CITY_POKEMON_CENTER_1F, + MAP_SLATEPORT_CITY_POKEMON_CENTER_1F, + MAP_MAUVILLE_CITY_POKEMON_CENTER_1F, + MAP_RUSTBORO_CITY_POKEMON_CENTER_1F, + MAP_FORTREE_CITY_POKEMON_CENTER_1F, + MAP_LILYCOVE_CITY_POKEMON_CENTER_1F, + MAP_MOSSDEEP_CITY_POKEMON_CENTER_1F, + MAP_SOOTOPOLIS_CITY_POKEMON_CENTER_1F, + MAP_EVER_GRANDE_CITY_POKEMON_CENTER_1F, + MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F, + MAP_BATTLE_FRONTIER_POKEMON_CENTER_1F, + MAP_SINGLE_BATTLE_COLOSSEUM, + MAP_TRADE_CENTER, + MAP_RECORD_CORNER, + MAP_DOUBLE_BATTLE_COLOSSEUM, + 0xffff + }; + + int i; + u16 map = (gSaveBlock1Ptr->location.mapGroup << 8) + gSaveBlock1Ptr->location.mapNum; + + for (i = 0; gUnknown_085B3444[i] != 0xFFFF; i++) + { + if (gUnknown_085B3444[i] == map) + { + return TRUE; + } + } + return FALSE; +} + +void ResetFanClub(void) +{ + gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] = 0; + gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_2 - VARS_START] = 0; +} + +void sub_813BA30(void) +{ + if (sub_813BF44() != 0) + { + UpdateMovedLilycoveFanClubMembers(); + gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_2 - VARS_START] = gSaveBlock2Ptr->playTimeHours; + } +} + +void sub_813BA60(void) +{ + if (!((gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] >> 7) & 1)) + { + sub_813BF60(); + sub_813BD84(); + gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_2 - VARS_START] = gSaveBlock2Ptr->playTimeHours; + FlagClear(FLAG_HIDE_FANCLUB_OLD_LADY); + FlagClear(FLAG_HIDE_FANCLUB_BOY); + FlagClear(FLAG_HIDE_FANCLUB_LITTLE_BOY); + FlagClear(FLAG_HIDE_FANCLUB_LADY); + FlagClear(FLAG_0x2DA); + VarSet(VAR_LILYCOVE_FAN_CLUB_STATE, 1); + } +} + +u8 sub_813BADC(u8 a0) +{ + static const u8 gUnknown_085B3470[] = { 0x02, 0x01, 0x02, 0x01 }; + + if (VarGet(VAR_LILYCOVE_FAN_CLUB_STATE) == 2) + { + if ((gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] & 0x7F) + gUnknown_085B3470[a0] > 19) + { + if (GetNumMovedLilycoveFanClubMembers() < 3) + { + sub_813BB74(); + gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] &= 0xFF80; + } + else + { + gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] = (gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] & 0xFF80) | 0x14; + } + } + else + { + gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] += gUnknown_085B3470[a0]; + } + } + + return gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] & 0x7F; +} + +static u16 sub_813BB74(void) +{ + static const u8 gUnknown_085B3474[] = { 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }; + + u8 i; + u8 retVal = 0; + + for (i = 0; i < 8; i++) + { + if (!((gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] >> gUnknown_085B3474[i]) & 1)) + { + retVal = i; + if ((Random() & 1) != 0) + { + gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] |= 1 << gUnknown_085B3474[retVal]; + return retVal; + } + } + } + gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] |= 1 << gUnknown_085B3474[retVal]; + return retVal; +} + +static u16 sub_813BC00(void) +{ + static const u8 gUnknown_085B347C[] = { 0x08, 0x0d, 0x0e, 0x0b, 0x0a, 0x0c, 0x0f, 0x09 }; + + u8 i; + u8 retVal = 0; + + if (GetNumMovedLilycoveFanClubMembers() == 1) + { + return 0; + } + + for (i = 0; i < 8; i++) + { + if (((gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] >> gUnknown_085B347C[i]) & 1) != 0) + { + retVal = i; + if ((Random() & 1) != 0) + { + gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] ^= 1 << gUnknown_085B347C[retVal]; + return retVal; + } + } + } + + if (((gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] >> gUnknown_085B347C[retVal]) & 1)) + { + gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] ^= 1 << gUnknown_085B347C[retVal]; + } + + return retVal; +} + +u16 GetNumMovedLilycoveFanClubMembers(void) +{ + u8 i; + u8 retVal = 0; + + for (i = 0; i < 8; i++) + { + if (((gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] >> (i + 8)) & 1) != 0) + { + retVal++; + } + } + + return retVal; +} + +void UpdateMovedLilycoveFanClubMembers(void) +{ + u8 i = 0; + if (gSaveBlock2Ptr->playTimeHours < 999) + { + while (TRUE) + { + if (GetNumMovedLilycoveFanClubMembers() < 5) + { + gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_2 - VARS_START] = gSaveBlock2Ptr->playTimeHours; + break; + } + else if (i == 8) + { + break; + } + else if (gSaveBlock2Ptr->playTimeHours - gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_2 - VARS_START] < 12) + { + return; + } + sub_813BC00(); + gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_2 - VARS_START] += 12; + i++; + } + } +} + +bool8 ShouldMoveLilycoveFanClubMember(void) +{ + return (gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] >> gSpecialVar_0x8004) & 1; +} + +static void sub_813BD84(void) +{ + gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] |= 0x2000; + gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] |= 0x100; + gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] |= 0x400; +} + +void BufferStreakTrainerText(void) +{ + u8 a = 0; + u8 b = 0; + switch (gSpecialVar_0x8004) + { + case 8: + break; + case 9: + break; + case 10: + a = 0; + b = 3; + break; + case 11: + a = 0; + b = 1; + break; + case 12: + a = 1; + b = 0; + break; + case 13: + a = 0; + b = 4; + break; + case 14: + a = 1; + b = 5; + break; + case 15: + break; + } + sub_813BE30(&gSaveBlock1Ptr->linkBattleRecords, a, b); +} + +static void sub_813BE30(struct LinkBattleRecords *linkRecords, u8 a, u8 b) +{ + struct LinkBattleRecord *record = &linkRecords->entries[a]; + if (record->name[0] == EOS) + { + switch (b) + { + case 0: + StringCopy(gStringVar1, gText_Wallace); + break; + case 1: + StringCopy(gStringVar1, gText_Steven); + break; + case 2: + StringCopy(gStringVar1, gText_Brawly); + break; + case 3: + StringCopy(gStringVar1, gText_Winona); + break; + case 4: + StringCopy(gStringVar1, gText_Phoebe); + break; + case 5: + StringCopy(gStringVar1, gText_Glacia); + break; + default: + StringCopy(gStringVar1, gText_Wallace); + break; + } + } + else + { + StringCopyN(gStringVar1, record->name, 7); + gStringVar1[7] = EOS; + ConvertInternationalString(gStringVar1, linkRecords->languages[a]); + } +} + +void sub_813BF10(void) +{ + if (VarGet(VAR_LILYCOVE_FAN_CLUB_STATE) == 2) + { + sub_813BA30(); + if (gBattleOutcome == 1) + { + sub_813BB74(); + } + else + { + sub_813BC00(); + } + } +} + +static bool8 sub_813BF44(void) +{ + return (gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] >> 7) & 1; +} + +void sub_813BF60(void) +{ + gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] |= 0x80; +} + +u8 sub_813BF7C(void) +{ + return sub_813BADC(gSpecialVar_0x8004); +} diff --git a/src/fieldmap.c b/src/fieldmap.c index f57c4b48f..019db9d0d 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -712,8 +712,8 @@ int GetPostCameraMoveMapBorderId(int x, int y) int CanCameraMoveInDirection(int direction) { int x, y; - x = gSaveBlock1Ptr->pos.x + 7 + gUnknown_08339D64[direction].x; - y = gSaveBlock1Ptr->pos.y + 7 + gUnknown_08339D64[direction].y; + x = gSaveBlock1Ptr->pos.x + 7 + gDirectionToVectors[direction].x; + y = gSaveBlock1Ptr->pos.y + 7 + gDirectionToVectors[direction].y; if (GetMapBorderIdAt(x, y) == -1) { return 0; @@ -951,7 +951,7 @@ void copy_tileset_patterns_to_vram2(struct Tileset const *tileset, u16 numTiles, if (!tileset->isCompressed) LoadBgTiles(2, tileset->tiles, numTiles * 32, offset); else - copy_decompressed_tile_data_to_vram_autofree(2, tileset->tiles, numTiles * 32, offset, 0); + DecompressAndLoadBgGfxUsingHeap(2, tileset->tiles, numTiles * 32, offset, 0); } } diff --git a/src/graphics.c b/src/graphics.c new file mode 100644 index 000000000..38a79ce3c --- /dev/null +++ b/src/graphics.c @@ -0,0 +1,1613 @@ +#include "global.h" + +const u8 gBattleTextboxTiles[] = INCBIN_U8("graphics/interface/menu.4bpp.lz"); +const u8 gBattleTextboxPalette[] = INCBIN_U8("graphics/interface/menu.gbapal.lz"); +const u16 gBattleTextboxTilemap[] = INCBIN_U16("graphics/interface/menu_map.bin.lz"); + +const u8 gMonStillFrontPic_CircledQuestionMark[] = INCBIN_U8("graphics/pokemon/front_pics/circled_question_mark_still_front_pic.4bpp.lz"); +const u8 gMonBackPic_CircledQuestionMark[] = INCBIN_U8("graphics/pokemon/back_pics/circled_question_mark_back_pic.4bpp.lz"); +const u8 gMonPalette_CircledQuestionMark[] = INCBIN_U8("graphics/pokemon/palettes/circled_question_mark_palette.gbapal.lz"); +const u8 gMonShinyPalette_CircledQuestionMark[] = INCBIN_U8("graphics/pokemon/palettes/circled_question_mark_shiny_palette.gbapal.lz"); + +const u8 gUnusedGfx_OldCharmap[] = INCBIN_U8("graphics/unused/old_charmap.4bpp.lz"); // japanese table and bunch of stuff +const u16 gUnusedTimemap_OldCharmap[] = INCBIN_U16("graphics/unused/old_charmap.bin.lz"); +const u8 gUnusedPal_OldCharmap[] = INCBIN_U8("graphics/unused/old_charmap.gbapal.lz"); + +const u8 gSmokescreenImpactTiles[] = INCBIN_U8("graphics/battle_anims/sprites/smokescreen_impact.4bpp.lz"); +const u8 gSmokescreenImpactPalette[] = INCBIN_U8("graphics/battle_anims/sprites/smokescreen_impact.gbapal.lz"); + +#include "data/graphics/interface_pokeballs.h" + +const u8 gBlankGfxCompressed[] = INCBIN_U8("graphics/interface/blank.4bpp.lz"); + +// Battle anims +const u8 gBattleAnimSpriteSheet_146[] = INCBIN_U8("graphics/battle_anims/sprites/146.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_000[] = INCBIN_U8("graphics/battle_anims/sprites/000.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_003[] = INCBIN_U8("graphics/battle_anims/sprites/003.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_004[] = INCBIN_U8("graphics/battle_anims/sprites/004.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_005[] = INCBIN_U8("graphics/battle_anims/sprites/005.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_006[] = INCBIN_U8("graphics/battle_anims/sprites/006.4bpp.lz"); + +const u8 gBattleAnimSpritePalette_115[] = INCBIN_U8("graphics/battle_anims/sprites/115.gbapal.lz"); +const u8 gBattleAnimSpritePalette_000[] = INCBIN_U8("graphics/battle_anims/sprites/000.gbapal.lz"); +const u8 gBattleAnimSpritePalette_003[] = INCBIN_U8("graphics/battle_anims/sprites/003.gbapal.lz"); +const u8 gBattleAnimSpritePalette_004[] = INCBIN_U8("graphics/battle_anims/sprites/004.gbapal.lz"); +const u8 gBattleAnimSpritePalette_005[] = INCBIN_U8("graphics/battle_anims/sprites/005.gbapal.lz"); +const u8 gBattleAnimSpritePalette_006[] = INCBIN_U8("graphics/battle_anims/sprites/006.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_161[] = INCBIN_U8("graphics/battle_anims/sprites/161.4bpp.lz"); +const u8 gBattleAnimSpritePalette_161[] = INCBIN_U8("graphics/battle_anims/sprites/161.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_007[] = INCBIN_U8("graphics/battle_anims/sprites/007.4bpp.lz"); +const u8 gBattleAnimSpritePalette_007[] = INCBIN_U8("graphics/battle_anims/sprites/007.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_008[] = INCBIN_U8("graphics/battle_anims/sprites/008.4bpp.lz"); +const u8 gBattleAnimSpritePalette_008[] = INCBIN_U8("graphics/battle_anims/sprites/008.gbapal.lz"); + +const u8 gBattleAnimSpritePalette_010[] = INCBIN_U8("graphics/battle_anims/sprites/010.gbapal.lz"); +const u8 gBattleAnimSpriteSheet_010[] = INCBIN_U8("graphics/battle_anims/sprites/010.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_009[] = INCBIN_U8("graphics/battle_anims/sprites/009.4bpp.lz"); +const u8 gBattleAnimSpritePalette_009[] = INCBIN_U8("graphics/battle_anims/sprites/009.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_011[] = INCBIN_U8("graphics/battle_anims/sprites/011.4bpp.lz"); +const u8 gBattleAnimSpritePalette_011[] = INCBIN_U8("graphics/battle_anims/sprites/011.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_012[] = INCBIN_U8("graphics/battle_anims/sprites/012.4bpp.lz"); +const u8 gBattleAnimSpritePalette_012[] = INCBIN_U8("graphics/battle_anims/sprites/012.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_152[] = INCBIN_U8("graphics/battle_anims/sprites/152.4bpp.lz"); +const u8 gBattleAnimSpritePalette_152[] = INCBIN_U8("graphics/battle_anims/sprites/152.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_013[] = INCBIN_U8("graphics/battle_anims/sprites/013.4bpp.lz"); +const u8 gBattleAnimSpritePalette_013[] = INCBIN_U8("graphics/battle_anims/sprites/013.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_015[] = INCBIN_U8("graphics/battle_anims/sprites/015.4bpp.lz"); +const u8 gBattleAnimSpritePalette_015[] = INCBIN_U8("graphics/battle_anims/sprites/015.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_016[] = INCBIN_U8("graphics/battle_anims/sprites/016.4bpp.lz"); +const u8 gBattleAnimSpritePalette_016[] = INCBIN_U8("graphics/battle_anims/sprites/016.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_017[] = INCBIN_U8("graphics/battle_anims/sprites/017.4bpp.lz"); + +const u8 gUnknownGfx_C035B8[] = INCBIN_U8("graphics/unknown/unknown_C035B8.4bpp.lz"); + +const u8 gBattleAnimSpritePalette_019[] = INCBIN_U8("graphics/battle_anims/sprites/019.gbapal.lz"); +const u8 gBattleAnimSpriteSheet_019[] = INCBIN_U8("graphics/battle_anims/sprites/019.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_020[] = INCBIN_U8("graphics/battle_anims/sprites/020.4bpp.lz"); +const u8 gBattleAnimSpritePalette_020[] = INCBIN_U8("graphics/battle_anims/sprites/020.gbapal.lz"); + +const u8 gBattleAnimSpritePalette_023[] = INCBIN_U8("graphics/battle_anims/sprites/023.gbapal.lz"); +const u8 gBattleAnimSpriteSheet_023[] = INCBIN_U8("graphics/battle_anims/sprites/023.4bpp.lz"); + +const u8 gUnused_BattleSpritePalette_023[] = INCBIN_U8("graphics/unused/battle_anim_023.gbapal.lz"); + +const u8 gUnusedGfx_MusicNotes[] = INCBIN_U8("graphics/unused/music_notes.4bpp.lz"); + +const u8 gBattleAnimSpritePalette_021[] = INCBIN_U8("graphics/battle_anims/sprites/021.gbapal.lz"); +const u8 gBattleAnimSpriteSheet_021[] = INCBIN_U8("graphics/battle_anims/sprites/021.4bpp.lz"); + +const u8 gBattleAnimSpritePalette_022[] = INCBIN_U8("graphics/battle_anims/sprites/022.gbapal.lz"); + +const u8 gBattleAnimSpritePalette_025[] = INCBIN_U8("graphics/battle_anims/sprites/025.gbapal.lz"); +const u8 gBattleAnimSpriteSheet_025[] = INCBIN_U8("graphics/battle_anims/sprites/025.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_024[] = INCBIN_U8("graphics/battle_anims/sprites/024.4bpp.lz"); +const u8 gBattleAnimSpritePalette_024[] = INCBIN_U8("graphics/battle_anims/sprites/024.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_031[] = INCBIN_U8("graphics/battle_anims/sprites/031.4bpp.lz"); +const u8 gBattleAnimSpritePalette_031[] = INCBIN_U8("graphics/battle_anims/sprites/031.gbapal.lz"); + +const u8 gBattleAnimSpritePalette_032[] = INCBIN_U8("graphics/battle_anims/sprites/032.gbapal.lz"); +const u8 gBattleAnimSpriteSheet_032[] = INCBIN_U8("graphics/battle_anims/sprites/032.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_026[] = INCBIN_U8("graphics/battle_anims/sprites/026.4bpp.lz"); +const u8 gBattleAnimSpritePalette_026[] = INCBIN_U8("graphics/battle_anims/sprites/026.gbapal.lz"); + +const u8 gBattleAnimSpritePalette_027[] = INCBIN_U8("graphics/battle_anims/sprites/027.gbapal.lz"); +const u8 gBattleAnimSpriteSheet_027[] = INCBIN_U8("graphics/battle_anims/sprites/027.4bpp.lz"); + +const u8 gBattleAnimSpritePalette_028[] = INCBIN_U8("graphics/battle_anims/sprites/028.gbapal.lz"); +const u8 gBattleAnimSpriteSheet_028[] = INCBIN_U8("graphics/battle_anims/sprites/028.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_029[] = INCBIN_U8("graphics/battle_anims/sprites/029.4bpp.lz"); +const u8 gBattleAnimSpritePalette_029[] = INCBIN_U8("graphics/battle_anims/sprites/029.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_030[] = INCBIN_U8("graphics/battle_anims/sprites/030.4bpp.lz"); +const u8 gBattleAnimSpritePalette_030[] = INCBIN_U8("graphics/battle_anims/sprites/030.gbapal.lz"); + +const u8 gBattleAnimSpritePalette_033[] = INCBIN_U8("graphics/battle_anims/sprites/033.gbapal.lz"); +const u8 gBattleAnimSpriteSheet_033[] = INCBIN_U8("graphics/battle_anims/sprites/033.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_034[] = INCBIN_U8("graphics/battle_anims/sprites/034.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_035[] = INCBIN_U8("graphics/battle_anims/sprites/035.4bpp.lz"); + +const u8 gBattleAnimSpritePalette_036[] = INCBIN_U8("graphics/battle_anims/sprites/036.gbapal.lz"); +const u8 gBattleAnimSpriteSheet_036[] = INCBIN_U8("graphics/battle_anims/sprites/036.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_037[] = INCBIN_U8("graphics/battle_anims/sprites/037.4bpp.lz"); + +const u8 gUnknownGfx_C06D98[] = INCBIN_U8("graphics/unknown/unknown_C06D98.4bpp.lz"); +const u8 gUnknownPal_C06D98[] = INCBIN_U8("graphics/unknown/unknown_C06D98.gbapal.lz"); +const u8 gUnknownPal_C06D98_2[] = INCBIN_U8("graphics/unknown/unknown_C06D98_2.gbapal.lz"); + +// old battle interface data, unused + +const u8 gOldBattleInterfaceGfx[] = INCBIN_U8("graphics/unused/obi1.4bpp.lz"); +const u8 gOldBattleInterfacePal_1_2_3[] = INCBIN_U8("graphics/unused/obi_palpak1.gbapal.lz"); // palettes 1-3 +const u8 gOldBattleInterfacePal4[] = INCBIN_U8("graphics/unused/old_pal4.gbapal.lz"); // 4 is by itself +const u8 gOldBattleInterfacePal_5_6_7[] = INCBIN_U8("graphics/unused/obi_palpak3.gbapal.lz"); // palettes 5-7 +const u8 gOldBattleInterfaceGfx2[] = INCBIN_U8("graphics/unused/obi2.4bpp.lz"); +const u16 gOldBattleInterfaceTilemap[] = INCBIN_U16("graphics/unused/old_battle_interface_tilemap.bin.lz"); + +const u8 gBattleAnimSpritePalette_038[] = INCBIN_U8("graphics/battle_anims/sprites/038.gbapal.lz"); +const u8 gBattleAnimSpritePalette_039[] = INCBIN_U8("graphics/battle_anims/sprites/039.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_038[] = INCBIN_U8("graphics/battle_anims/sprites/038.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_039[] = INCBIN_U8("graphics/battle_anims/sprites/039.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_040[] = INCBIN_U8("graphics/battle_anims/sprites/040.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_041[] = INCBIN_U8("graphics/battle_anims/sprites/041.4bpp.lz"); + +const u8 gPartyMenuHpBar_Gfx[] = INCBIN_U8("graphics/interface/party_menu_hpbar.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_042[] = INCBIN_U8("graphics/battle_anims/sprites/042.4bpp.lz"); + +const u8 gBattleAnimSpritePalette_042[] = INCBIN_U8("graphics/battle_anims/sprites/042.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_043[] = INCBIN_U8("graphics/battle_anims/sprites/043.4bpp.lz"); +const u8 gBattleAnimSpritePalette_043[] = INCBIN_U8("graphics/battle_anims/sprites/043.gbapal.lz"); + +const u8 gBattleAnimSpritePalette_044[] = INCBIN_U8("graphics/battle_anims/sprites/044.gbapal.lz"); +const u8 gBattleAnimSpriteSheet_044[] = INCBIN_U8("graphics/battle_anims/sprites/044.4bpp.lz"); + +const u8 gBattleAnimSpritePalette_045[] = INCBIN_U8("graphics/battle_anims/sprites/045.gbapal.lz"); +const u8 gBattleAnimSpriteSheet_045[] = INCBIN_U8("graphics/battle_anims/sprites/045.4bpp.lz"); + +const u8 gUnknown_08C08F0C[] = INCBIN_U8("graphics/battle_interface/unused_window.4bpp.lz"); +const u8 gUnknown_08C093C8[] = INCBIN_U8("graphics/battle_interface/unused_window.gbapal.lz"); + +const u8 gUnknown_08C093F0[] = INCBIN_U8("graphics/interface/hp_numbers.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_046[] = INCBIN_U8("graphics/battle_anims/sprites/046.4bpp.lz"); +const u8 gBattleAnimSpritePalette_046[] = INCBIN_U8("graphics/battle_anims/sprites/046.gbapal.lz"); + +const u8 gBattleAnimSpritePalette_047[] = INCBIN_U8("graphics/battle_anims/sprites/047.gbapal.lz"); + +const u8 gUnusedGfx_Window2[] = INCBIN_U8("graphics/battle_interface/unused_window2.4bpp.lz"); +const u8 gUnusedGfx_Window2Bar[] = INCBIN_U8("graphics/battle_interface/unused_window2bar.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_048[] = INCBIN_U8("graphics/battle_anims/sprites/048.4bpp.lz"); +const u8 gBattleAnimSpritePalette_048[] = INCBIN_U8("graphics/battle_anims/sprites/048.gbapal.lz"); + +const u8 gBattleAnimSpritePalette_049[] = INCBIN_U8("graphics/battle_anims/sprites/049.gbapal.lz"); +const u8 gBattleAnimSpritePalette_050[] = INCBIN_U8("graphics/battle_anims/sprites/050.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_050[] = INCBIN_U8("graphics/battle_anims/sprites/050.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_051[] = INCBIN_U8("graphics/battle_anims/sprites/051.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_052[] = INCBIN_U8("graphics/battle_anims/sprites/052.4bpp.lz"); + +const u8 gUnusedGfx_LineSketch[] = INCBIN_U8("graphics/unused/line_sketch.4bpp.lz"); +const u8 gUnusedPal_LineSketch[] = INCBIN_U8("graphics/unused/line_sketch.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_054[] = INCBIN_U8("graphics/battle_anims/sprites/054.4bpp.lz"); +const u8 gBattleAnimSpritePalette_054[] = INCBIN_U8("graphics/battle_anims/sprites/054.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_056[] = INCBIN_U8("graphics/battle_anims/sprites/056.4bpp.lz"); +const u8 gBattleAnimSpritePalette_056[] = INCBIN_U8("graphics/battle_anims/sprites/056.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_055[] = INCBIN_U8("graphics/battle_anims/sprites/055.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_057[] = INCBIN_U8("graphics/battle_anims/sprites/057.4bpp.lz"); +const u8 gBattleAnimSpritePalette_057[] = INCBIN_U8("graphics/battle_anims/sprites/057.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_058[] = INCBIN_U8("graphics/battle_anims/sprites/058.4bpp.lz"); +const u8 gBattleAnimSpritePalette_058[] = INCBIN_U8("graphics/battle_anims/sprites/058.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_059[] = INCBIN_U8("graphics/battle_anims/sprites/059.4bpp.lz"); +const u8 gBattleAnimSpritePalette_059[] = INCBIN_U8("graphics/battle_anims/sprites/059.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_060[] = INCBIN_U8("graphics/battle_anims/sprites/060.4bpp.lz"); +const u8 gBattleAnimSpritePalette_060[] = INCBIN_U8("graphics/battle_anims/sprites/060.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_061[] = INCBIN_U8("graphics/battle_anims/sprites/061.4bpp.lz"); +const u8 gBattleAnimSpritePalette_061[] = INCBIN_U8("graphics/battle_anims/sprites/061.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_062[] = INCBIN_U8("graphics/battle_anims/sprites/062.4bpp.lz"); +const u8 gBattleAnimSpritePalette_062[] = INCBIN_U8("graphics/battle_anims/sprites/062.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_063[] = INCBIN_U8("graphics/battle_anims/sprites/063.4bpp.lz"); +const u8 gBattleAnimSpritePalette_063[] = INCBIN_U8("graphics/battle_anims/sprites/063.gbapal.lz"); + +const u8 gUnusedGfx_Metronome[] = INCBIN_U8("graphics/unused/metronome_hand_small.4bpp.lz"); // unused, was for metronome at one point + +const u8 gBattleAnimSpritePalette_091[] = INCBIN_U8("graphics/battle_anims/sprites/091.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_065[] = INCBIN_U8("graphics/battle_anims/sprites/065.4bpp.lz"); +const u8 gBattleAnimSpritePalette_065[] = INCBIN_U8("graphics/battle_anims/sprites/065.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_066[] = INCBIN_U8("graphics/battle_anims/sprites/066.4bpp.lz"); +const u8 gBattleAnimSpritePalette_066[] = INCBIN_U8("graphics/battle_anims/sprites/066.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_070[] = INCBIN_U8("graphics/battle_anims/sprites/070.4bpp.lz"); +const u8 gBattleAnimSpritePalette_070[] = INCBIN_U8("graphics/battle_anims/sprites/070.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_071[] = INCBIN_U8("graphics/battle_anims/sprites/071.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_072[] = INCBIN_U8("graphics/battle_anims/sprites/072.4bpp.lz"); +const u8 gBattleAnimSpritePalette_072[] = INCBIN_U8("graphics/battle_anims/sprites/072.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_073[] = INCBIN_U8("graphics/battle_anims/sprites/073.4bpp.lz"); +const u8 gBattleAnimSpritePalette_073[] = INCBIN_U8("graphics/battle_anims/sprites/073.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_075[] = INCBIN_U8("graphics/battle_anims/sprites/075.4bpp.lz"); +const u8 gBattleAnimSpritePalette_075[] = INCBIN_U8("graphics/battle_anims/sprites/075.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_078[] = INCBIN_U8("graphics/battle_anims/sprites/078.4bpp.lz"); +const u8 gBattleAnimSpritePalette_078[] = INCBIN_U8("graphics/battle_anims/sprites/078.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_079[] = INCBIN_U8("graphics/battle_anims/sprites/079.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_080[] = INCBIN_U8("graphics/battle_anims/sprites/080.4bpp.lz"); +const u8 gBattleAnimSpritePalette_080[] = INCBIN_U8("graphics/battle_anims/sprites/080.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_081[] = INCBIN_U8("graphics/battle_anims/sprites/081.4bpp.lz"); +const u8 gBattleAnimSpritePalette_081[] = INCBIN_U8("graphics/battle_anims/sprites/081.gbapal.lz"); + +const u16 gUnknown_C0CA1C[] = INCBIN_U16("graphics/unknown/unknown_C0CA1C.bin"); +const u16 gUnknown_C0CA40[] = INCBIN_U16("graphics/unknown/unknown_C0CA40.bin"); +const u16 gUnknown_C0CA64[] = INCBIN_U16("graphics/unknown/unknown_C0CA64.bin"); +const u16 gUnusedGfx8bpp_LineSketch2[] = INCBIN_U16("graphics/unused/line_sketch_2.8bpp.lz"); +const u16 gUnknown_C0CAE0[] = INCBIN_U16("graphics/unknown/unknown_C0CAE0.bin"); +const u16 gUnusedTilemap_LineSketch2[] = INCBIN_U16("graphics/unused/line_sketch_2.bin.lz"); + +const u8 gBattleAnimSpriteSheet_082[] = INCBIN_U8("graphics/battle_anims/sprites/082.4bpp.lz"); +const u8 gBattleAnimSpritePalette_082[] = INCBIN_U8("graphics/battle_anims/sprites/082.gbapal.lz"); + +const u8 gBattleAnimSpritePalette_083[] = INCBIN_U8("graphics/battle_anims/sprites/083.gbapal.lz"); +const u8 gBattleAnimSpritePalette_084[] = INCBIN_U8("graphics/battle_anims/sprites/084.gbapal.lz"); +const u8 gBattleAnimSpritePalette_085[] = INCBIN_U8("graphics/battle_anims/sprites/085.gbapal.lz"); +const u8 gBattleAnimSpritePalette_086[] = INCBIN_U8("graphics/battle_anims/sprites/086.gbapal.lz"); +const u8 gBattleAnimSpritePalette_088[] = INCBIN_U8("graphics/battle_anims/sprites/088.gbapal.lz"); +const u8 gBattleAnimSpritePalette_089[] = INCBIN_U8("graphics/battle_anims/sprites/089.gbapal.lz"); +const u8 gBattleAnimSpritePalette_090[] = INCBIN_U8("graphics/battle_anims/sprites/090.gbapal.lz"); +const u8 gBattleAnimSpritePalette_092[] = INCBIN_U8("graphics/battle_anims/sprites/092.gbapal.lz"); +const u8 gBattleAnimSpritePalette_093[] = INCBIN_U8("graphics/battle_anims/sprites/093.gbapal.lz"); +const u8 gBattleAnimSpritePalette_094[] = INCBIN_U8("graphics/battle_anims/sprites/094.gbapal.lz"); + +const u16 gUnknown_D0D2B4[] = INCBIN_U16("graphics/unknown/unknown_D0D2B4.bin.lz"); + +const u8 gBattleAnimSpritePalette_095[] = INCBIN_U8("graphics/battle_anims/sprites/095.gbapal.lz"); +const u8 gBattleAnimSpritePalette_096[] = INCBIN_U8("graphics/battle_anims/sprites/096.gbapal.lz"); +const u8 gBattleAnimSpritePalette_097[] = INCBIN_U8("graphics/battle_anims/sprites/097.gbapal.lz"); +const u8 gBattleAnimSpritePalette_100[] = INCBIN_U8("graphics/battle_anims/sprites/100.gbapal.lz"); +const u8 gBattleAnimSpritePalette_101[] = INCBIN_U8("graphics/battle_anims/sprites/101.gbapal.lz"); +const u8 gBattleAnimSpritePalette_103[] = INCBIN_U8("graphics/battle_anims/sprites/103.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_083[] = INCBIN_U8("graphics/battle_anims/sprites/083.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_084[] = INCBIN_U8("graphics/battle_anims/sprites/084.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_085[] = INCBIN_U8("graphics/battle_anims/sprites/085.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_086[] = INCBIN_U8("graphics/battle_anims/sprites/086.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_088[] = INCBIN_U8("graphics/battle_anims/sprites/088.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_089[] = INCBIN_U8("graphics/battle_anims/sprites/089.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_090[] = INCBIN_U8("graphics/battle_anims/sprites/090.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_091[] = INCBIN_U8("graphics/battle_anims/sprites/091.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_092[] = INCBIN_U8("graphics/battle_anims/sprites/092.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_093[] = INCBIN_U8("graphics/battle_anims/sprites/093.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_094[] = INCBIN_U8("graphics/battle_anims/sprites/094.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_095[] = INCBIN_U8("graphics/battle_anims/sprites/095.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_096[] = INCBIN_U8("graphics/battle_anims/sprites/096.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_097[] = INCBIN_U8("graphics/battle_anims/sprites/097.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_098[] = INCBIN_U8("graphics/battle_anims/sprites/098.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_100[] = INCBIN_U8("graphics/battle_anims/sprites/100.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_101[] = INCBIN_U8("graphics/battle_anims/sprites/101.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_102[] = INCBIN_U8("graphics/battle_anims/sprites/102.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_103[] = INCBIN_U8("graphics/battle_anims/sprites/103.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_104[] = INCBIN_U8("graphics/battle_anims/sprites/104.4bpp.lz"); +const u8 gBattleAnimSpritePalette_104[] = INCBIN_U8("graphics/battle_anims/sprites/104.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_105[] = INCBIN_U8("graphics/battle_anims/sprites/105.4bpp.lz"); +const u8 gBattleAnimSpritePalette_105[] = INCBIN_U8("graphics/battle_anims/sprites/105.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_106[] = INCBIN_U8("graphics/battle_anims/sprites/106.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_107[] = INCBIN_U8("graphics/battle_anims/sprites/107.4bpp.lz"); +const u8 gBattleAnimSpritePalette_107[] = INCBIN_U8("graphics/battle_anims/sprites/107.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_108[] = INCBIN_U8("graphics/battle_anims/sprites/108.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_109[] = INCBIN_U8("graphics/battle_anims/sprites/109.4bpp.lz"); +const u8 gBattleAnimSpritePalette_109[] = INCBIN_U8("graphics/battle_anims/sprites/109.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_110[] = INCBIN_U8("graphics/battle_anims/sprites/110.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_111[] = INCBIN_U8("graphics/battle_anims/sprites/111.4bpp.lz"); +const u8 gBattleAnimSpritePalette_111[] = INCBIN_U8("graphics/battle_anims/sprites/111.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_112[] = INCBIN_U8("graphics/battle_anims/sprites/112.4bpp.lz"); +const u8 gBattleAnimSpritePalette_112[] = INCBIN_U8("graphics/battle_anims/sprites/112.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_113[] = INCBIN_U8("graphics/battle_anims/sprites/113.4bpp.lz"); +const u8 gBattleAnimSpritePalette_113[] = INCBIN_U8("graphics/battle_anims/sprites/113.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_114[] = INCBIN_U8("graphics/battle_anims/sprites/114.4bpp.lz"); +const u8 gBattleAnimSpritePalette_114[] = INCBIN_U8("graphics/battle_anims/sprites/114.gbapal.lz"); + +const u16 gUnusedTilemap_BlueFrame[] = INCBIN_U16("graphics/unused/blue_frame.bin.lz"); // P1, P2, P3 and P4 tilemaps? +const u16 gUnusedTilemap_RedYellowGreenFrame[] = INCBIN_U16("graphics/unused/redyellowgreen_frame.bin.lz"); +const u8 gUnusedGfx_ColorFrames[] = INCBIN_U8("graphics/unused/color_frames.4bpp.lz"); +const u16 gUnusedPal_ColorFrames[] = INCBIN_U16("graphics/unused/color_frames.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_115[] = INCBIN_U8("graphics/battle_anims/sprites/115.4bpp.lz"); + +const u16 gUnusedGfx8bpp_WaterSplash [] = INCBIN_U16("graphics/unused/water_splash.8bpp.lz"); +const u16 gUnusedTilemap_WaterSplash[] = INCBIN_U16("graphics/unused/water_splash.bin.lz"); +const u8 gUnusedPalette_WaterSplash[] = INCBIN_U8("graphics/unused/water_splash.gbapal.lz"); + +const u8 gUnusedGfx_BasicFrame[] = INCBIN_U8("graphics/unused/basic_frame.4bpp.lz"); +const u8 gUnusedPal_BasicFrame[] = INCBIN_U8("graphics/unused/basic_frame.gbapal.lz"); +const u16 gUnusedTilemap_BasicFrame[] = INCBIN_U16("graphics/unused/basic_frame.bin.lz"); + +// Battle Interface + +const u16 gBattleInterface_BallStatusBarPal[] = INCBIN_U16("graphics/battle_interface/ball_status_bar.gbapal"); + +const u16 gBattleInterface_BallDisplayPal[] = INCBIN_U16("graphics/battle_interface/ball_display.gbapal"); + +//Originally an array? +const u8 gHealthboxElementsGfxTable[] = INCBIN_U8("graphics/battle_interface/hpbar.4bpp"); +const u8 gHealthboxElementsGfxTable_ExpBar[] = INCBIN_U8("graphics/battle_interface/expbar.4bpp"); +const u8 gHealthboxElementsGfxTable_StatusPsn[] = INCBIN_U8("graphics/battle_interface/status_psn.4bpp"); +const u8 gHealthboxElementsGfxTable_StatusPar[] = INCBIN_U8("graphics/battle_interface/status_par.4bpp"); +const u8 gHealthboxElementsGfxTable_StatusSlp[] = INCBIN_U8("graphics/battle_interface/status_slp.4bpp"); +const u8 gHealthboxElementsGfxTable_StatusFrz[] = INCBIN_U8("graphics/battle_interface/status_frz.4bpp"); +const u8 gHealthboxElementsGfxTable_StatusBrn[] = INCBIN_U8("graphics/battle_interface/status_brn.4bpp"); +const u8 gHealthboxElementsGfxTable_Misc[] = INCBIN_U8("graphics/battle_interface/misc.4bpp"); +const u8 gHealthboxElementsGfxTable_HpBarAnim[] = INCBIN_U8("graphics/battle_interface/hpbar_anim.4bpp"); +const u8 gHealthboxElementsGfxTable_MiscFrameEnd[] = INCBIN_U8("graphics/battle_interface/misc_frameend.4bpp"); + +const u8 gBattleInterface_BallDisplayGfx[] = INCBIN_U8("graphics/battle_interface/ball_display.4bpp"); + +//Originally an array? +const u8 gUnknown_08C1249C[] = INCBIN_U8("graphics/battle_interface/ball_display_unused_extra.4bpp"); +const u8 gBattleInterfaceGfx_Status2[] = INCBIN_U8("graphics/battle_interface/status2.4bpp"); // these three duplicate sets of graphics are for the opponent pokemon +const u8 gBattleInterfaceGfx_Status3[] = INCBIN_U8("graphics/battle_interface/status3.4bpp"); // and are also for use in double battles. they use dynamic palettes so +const u8 gBattleInterfaceGfx_Status4[] = INCBIN_U8("graphics/battle_interface/status4.4bpp"); // coloring them is an extreme headache and wont be done for now +const u8 gUnknown_D12FEC[] = INCBIN_U8("graphics/unknown/unknown_D12FEC.4bpp"); +const u8 gUnknown_D1300C[] = INCBIN_U8("graphics/unknown/unknown_D1300C.4bpp"); +const u8 gBattleInterfaceGfx_UnusedWindow3[] = INCBIN_U8("graphics/battle_interface/unused_window3.4bpp.lz"); +const u8 gBattleInterfaceGfx_UnusedWindow4[] = INCBIN_U8("graphics/battle_interface/unused_window4.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_116[] = INCBIN_U8("graphics/battle_anims/sprites/116.4bpp.lz"); +const u8 gBattleAnimSpritePalette_116[] = INCBIN_U8("graphics/battle_anims/sprites/116.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_117[] = INCBIN_U8("graphics/battle_anims/sprites/117.4bpp.lz"); +const u8 gBattleAnimSpritePalette_117[] = INCBIN_U8("graphics/battle_anims/sprites/117.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_118[] = INCBIN_U8("graphics/battle_anims/sprites/118.4bpp.lz"); +const u8 gBattleAnimSpritePalette_118[] = INCBIN_U8("graphics/battle_anims/sprites/118.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_119[] = INCBIN_U8("graphics/battle_anims/sprites/119.4bpp.lz"); +const u8 gBattleAnimSpritePalette_119[] = INCBIN_U8("graphics/battle_anims/sprites/119.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_120[] = INCBIN_U8("graphics/battle_anims/sprites/120.4bpp.lz"); +const u8 gBattleAnimSpritePalette_120[] = INCBIN_U8("graphics/battle_anims/sprites/120.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_121[] = INCBIN_U8("graphics/battle_anims/sprites/121.4bpp.lz"); +const u8 gBattleAnimSpritePalette_121[] = INCBIN_U8("graphics/battle_anims/sprites/121.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_122[] = INCBIN_U8("graphics/battle_anims/sprites/122.4bpp.lz"); +const u8 gBattleAnimSpritePalette_122[] = INCBIN_U8("graphics/battle_anims/sprites/122.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_123[] = INCBIN_U8("graphics/battle_anims/sprites/123.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_124[] = INCBIN_U8("graphics/battle_anims/sprites/124.4bpp.lz"); +const u8 gBattleAnimSpritePalette_124[] = INCBIN_U8("graphics/battle_anims/sprites/124.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_125[] = INCBIN_U8("graphics/battle_anims/sprites/125.4bpp.lz"); +const u8 gBattleAnimSpritePalette_125[] = INCBIN_U8("graphics/battle_anims/sprites/125.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_126[] = INCBIN_U8("graphics/battle_anims/sprites/126.4bpp.lz"); +const u8 gBattleAnimSpritePalette_126[] = INCBIN_U8("graphics/battle_anims/sprites/126.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_127[] = INCBIN_U8("graphics/battle_anims/sprites/127.4bpp.lz"); +const u8 gBattleAnimSpritePalette_127[] = INCBIN_U8("graphics/battle_anims/sprites/127.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_128[] = INCBIN_U8("graphics/battle_anims/sprites/128.4bpp.lz"); +const u8 gBattleAnimSpritePalette_128[] = INCBIN_U8("graphics/battle_anims/sprites/128.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_129[] = INCBIN_U8("graphics/battle_anims/sprites/129.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_130[] = INCBIN_U8("graphics/battle_anims/sprites/130.4bpp.lz"); +const u8 gBattleAnimSpritePalette_130[] = INCBIN_U8("graphics/battle_anims/sprites/130.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_131[] = INCBIN_U8("graphics/battle_anims/sprites/131.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_132[] = INCBIN_U8("graphics/battle_anims/sprites/132.4bpp.lz"); +const u8 gBattleAnimSpritePalette_132[] = INCBIN_U8("graphics/battle_anims/sprites/132.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_133[] = INCBIN_U8("graphics/battle_anims/sprites/133.4bpp.lz"); +const u8 gBattleAnimSpritePalette_133[] = INCBIN_U8("graphics/battle_anims/sprites/133.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_134[] = INCBIN_U8("graphics/battle_anims/sprites/134.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_076[] = INCBIN_U8("graphics/battle_anims/sprites/076.4bpp.lz"); +const u8 gBattleAnimSpritePalette_076[] = INCBIN_U8("graphics/battle_anims/sprites/076.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_077[] = INCBIN_U8("graphics/battle_anims/sprites/077.4bpp.lz"); + +// Contest + +const u8 gUnusedGfx_OldContest[] = INCBIN_U8("graphics/unused/old_contest.4bpp.lz"); +const u8 gUnusedPal_OldContest[] = INCBIN_U8("graphics/unused/old_contest.gbapal.lz"); +const u16 gUnusedTilemap_OldContest[] = INCBIN_U16("graphics/unused/old_contest.bin.lz"); + +const u16 gUnknownTilemap_C15BC0[] = INCBIN_U16("graphics/unknown/unknown_C15BC0.bin.lz"); + +const u8 gUnusedGfx_OldContest2[] = INCBIN_U8("graphics/unused/old_contest_2.4bpp.lz"); +const u8 gUnknown_08C16E90[] = INCBIN_U8("graphics/unused/old_contest_2.gbapal.lz"); +const u16 gUnknown_08C16FA8[] = INCBIN_U16("graphics/unused/old_contest_2.bin.lz"); + +const u16 gUnknown_08C17170[] = INCBIN_U16("graphics/unknown/unknown_C17170.bin.lz"); + +const u16 gUnknown_08C17410[] = INCBIN_U16("graphics/unknown/unknown_C17410.bin.lz"); + +const u16 gUnknown_08C1751C[] = INCBIN_U16("graphics/unknown/unknown_C1751C.bin.lz"); + +const u16 gUnknown_08C17980[] = INCBIN_U16("graphics/unknown/unknown_C17980.bin.lz"); + +const u8 gContestMiscGfx[] = INCBIN_U8("graphics/contest/misc.4bpp.lz"); + +const u8 gContestAudienceGfx[] = INCBIN_U8("graphics/contest/audience.4bpp.lz"); + +const u8 gUnknown_08C19168[] = INCBIN_U8("graphics/contest/faces.4bpp.lz"); + +const u8 gContestJudgeSymbolsGfx[] = INCBIN_U8("graphics/contest/judge_symbols.4bpp.lz"); +const u8 gContest3Pal[] = INCBIN_U8("graphics/contest/judge_symbols.gbapal.lz"); + +const u8 gTiles_8C19450[] = INCBIN_U8("graphics/contest/heart.4bpp"); + +const u8 gUnknownGfx_C19470[] = INCBIN_U8("graphics/unknown/unknown_C19470.4bpp.lz"); +const u8 gUnknownPal_C19470[] = INCBIN_U8("graphics/unknown/unknown_C19470.gbapal.lz"); + +const u8 gUnknown_08C19588[] = INCBIN_U8("graphics/contest/misc_2.4bpp.lz"); + +const u16 gUnknown_08C19EEC[] = INCBIN_U16("graphics/contest/misc_2_tilemap_1.bin.lz"); +const u16 gUnknown_08C1A000[] = INCBIN_U16("graphics/contest/misc_2_tilemap_2.bin.lz"); +const u16 gUnknown_08C1A12C[] = INCBIN_U16("graphics/contest/misc_2_tilemap_3.bin.lz"); + +const u8 gUnknown_08C1A2B4[] = INCBIN_U8("graphics/contest/misc_2.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_135[] = INCBIN_U8("graphics/battle_anims/sprites/135.4bpp.lz"); +const u8 gBattleAnimSpritePalette_135[] = INCBIN_U8("graphics/battle_anims/sprites/135.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_Particles[] = INCBIN_U8("graphics/battle_anims/sprites/particles.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_136[] = INCBIN_U8("graphics/battle_anims/sprites/136.4bpp.lz"); +const u8 gBattleAnimSpritePalette_136[] = INCBIN_U8("graphics/battle_anims/sprites/136.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_137[] = INCBIN_U8("graphics/battle_anims/sprites/137.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_139[] = INCBIN_U8("graphics/battle_anims/sprites/139.4bpp.lz"); +const u8 gBattleAnimSpritePalette_139[] = INCBIN_U8("graphics/battle_anims/sprites/139.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_145[] = INCBIN_U8("graphics/battle_anims/sprites/145.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_138[] = INCBIN_U8("graphics/battle_anims/sprites/138.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_140[] = INCBIN_U8("graphics/battle_anims/sprites/140.4bpp.lz"); +const u8 gBattleAnimSpritePalette_140[] = INCBIN_U8("graphics/battle_anims/sprites/140.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_141[] = INCBIN_U8("graphics/battle_anims/sprites/141.4bpp.lz"); +const u8 gBattleAnimSpritePalette_141[] = INCBIN_U8("graphics/battle_anims/sprites/141.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_142[] = INCBIN_U8("graphics/battle_anims/sprites/142.4bpp.lz"); + +const u8 gUnusedGfx_OldBeatUp[] = INCBIN_U8("graphics/unused/old_beatup.4bpp.lz"); +const u8 gUnusedPal_OldBeatUp[] = INCBIN_U8("graphics/unused/old_beatup.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_147[] = INCBIN_U8("graphics/battle_anims/sprites/147.4bpp.lz"); +const u8 gBattleAnimSpritePalette_147[] = INCBIN_U8("graphics/battle_anims/sprites/147.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_149[] = INCBIN_U8("graphics/battle_anims/sprites/149.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_148[] = INCBIN_U8("graphics/battle_anims/sprites/148.4bpp.lz"); +const u8 gBattleAnimSpritePalette_148[] = INCBIN_U8("graphics/battle_anims/sprites/148.gbapal.lz"); + +const u8 gBattleAnimSpritePalette_259[] = INCBIN_U8("graphics/battle_anims/sprites/259.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_074[] = INCBIN_U8("graphics/battle_anims/sprites/074.4bpp.lz"); +const u8 gBattleAnimSpritePalette_074[] = INCBIN_U8("graphics/battle_anims/sprites/074.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_150[] = INCBIN_U8("graphics/battle_anims/sprites/150.4bpp.lz"); +const u8 gBattleAnimSpritePalette_150[] = INCBIN_U8("graphics/battle_anims/sprites/150.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_151[] = INCBIN_U8("graphics/battle_anims/sprites/151.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_153[] = INCBIN_U8("graphics/battle_anims/sprites/153.4bpp.lz"); +const u8 gBattleAnimSpritePalette_153[] = INCBIN_U8("graphics/battle_anims/sprites/153.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_154[] = INCBIN_U8("graphics/battle_anims/sprites/154.4bpp.lz"); +const u8 gBattleAnimSpritePalette_154[] = INCBIN_U8("graphics/battle_anims/sprites/154.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_155[] = INCBIN_U8("graphics/battle_anims/sprites/155.4bpp.lz"); +const u8 gBattleAnimSpritePalette_155[] = INCBIN_U8("graphics/battle_anims/sprites/155.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_156[] = INCBIN_U8("graphics/battle_anims/sprites/156.4bpp.lz"); +const u8 gBattleAnimSpritePalette_156[] = INCBIN_U8("graphics/battle_anims/sprites/156.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_157[] = INCBIN_U8("graphics/battle_anims/sprites/157.4bpp.lz"); +const u8 gBattleAnimSpritePalette_157[] = INCBIN_U8("graphics/battle_anims/sprites/157.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_158[] = INCBIN_U8("graphics/battle_anims/sprites/158.4bpp.lz"); + +const u8 gBattleAnimSpritePalette_158[] = INCBIN_U8("graphics/battle_anims/sprites/158.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_159[] = INCBIN_U8("graphics/battle_anims/sprites/159.4bpp.lz"); +const u8 gBattleAnimSpritePalette_159[] = INCBIN_U8("graphics/battle_anims/sprites/159.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_160[] = INCBIN_U8("graphics/battle_anims/sprites/160.4bpp.lz"); +const u8 gBattleAnimSpritePalette_160[] = INCBIN_U8("graphics/battle_anims/sprites/160.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_144[] = INCBIN_U8("graphics/battle_anims/sprites/144.4bpp.lz"); +const u8 gBattleAnimSpritePalette_144[] = INCBIN_U8("graphics/battle_anims/sprites/144.gbapal.lz"); + +const u8 gUnknownGfx_D1C060[] = INCBIN_U8("graphics/unknown/unknown_D1C060.4bpp.lz"); +const u8 gUnknownPal_D1C060[] = INCBIN_U8("graphics/unknown/unknown_D1C060.gbapal.lz"); +const u16 gUnknownTilemap_D1C060[] = INCBIN_U16("graphics/unknown/unknown_D1C060.bin.lz"); + +const u8 gBattleAnimSpriteSheet_162[] = INCBIN_U8("graphics/battle_anims/sprites/162.4bpp.lz"); +const u8 gBattleAnimSpritePalette_162[] = INCBIN_U8("graphics/battle_anims/sprites/162.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_163[] = INCBIN_U8("graphics/battle_anims/sprites/163.4bpp.lz"); +const u8 gBattleAnimSpritePalette_163[] = INCBIN_U8("graphics/battle_anims/sprites/163.gbapal.lz"); + +const u8 gBattleAnimSpritePalette_288[] = INCBIN_U8("graphics/battle_anims/sprites/288.gbapal.lz"); +const u8 gBattleAnimSpritePalette_164[] = INCBIN_U8("graphics/battle_anims/sprites/164.gbapal.lz"); +const u8 gBattleAnimSpritePalette_165[] = INCBIN_U8("graphics/battle_anims/sprites/165.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_166[] = INCBIN_U8("graphics/battle_anims/sprites/166.4bpp.lz"); +const u8 gBattleAnimSpritePalette_166[] = INCBIN_U8("graphics/battle_anims/sprites/166.gbapal.lz"); + +const u8 gBattleAnimSpritePalette_167[] = INCBIN_U8("graphics/battle_anims/sprites/167.gbapal.lz"); +const u8 gBattleAnimSpritePalette_168[] = INCBIN_U8("graphics/battle_anims/sprites/168.gbapal.lz"); +const u8 gBattleAnimSpritePalette_169[] = INCBIN_U8("graphics/battle_anims/sprites/169.gbapal.lz"); +const u8 gBattleAnimSpritePalette_170[] = INCBIN_U8("graphics/battle_anims/sprites/170.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_171[] = INCBIN_U8("graphics/battle_anims/sprites/171.4bpp.lz"); +const u8 gBattleAnimSpritePalette_171[] = INCBIN_U8("graphics/battle_anims/sprites/171.gbapal.lz"); + +const u8 gBattleAnimSpritePalette_172[] = INCBIN_U8("graphics/battle_anims/sprites/172.gbapal.lz"); + +const u8 gContestJudgeGfx[] = INCBIN_U8("graphics/contest/judge.4bpp.lz"); +const u8 gContest2Pal[] = INCBIN_U8("graphics/contest/judge.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_001[] = INCBIN_U8("graphics/battle_anims/sprites/001.4bpp.lz"); +const u8 gBattleAnimSpritePalette_001[] = INCBIN_U8("graphics/battle_anims/sprites/001.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_173[] = INCBIN_U8("graphics/battle_anims/sprites/173.4bpp.lz"); + +const u8 gBattleAnimBackgroundImage_00[] = INCBIN_U8("graphics/battle_anims/backgrounds/00.4bpp.lz"); +const u8 gBattleAnimBackgroundPalette_00[] = INCBIN_U8("graphics/battle_anims/backgrounds/00.gbapal.lz"); +const u16 gBattleAnimBackgroundTilemap_00[] = INCBIN_U16("graphics/battle_anims/backgrounds/00.bin.lz"); + +const u8 gUnknown_08C1D0AC[] = INCBIN_U8("graphics/battle_anims/masks/metal_shine.4bpp.lz"); +const u8 gUnknown_08C1D1E8[] = INCBIN_U8("graphics/battle_anims/masks/metal_shine.gbapal.lz"); +const u16 gUnknown_08C1D210[] = INCBIN_U16("graphics/battle_anims/masks/metal_shine.bin.lz"); + +const u8 gUnusedGfx_Goosuto[] = INCBIN_U8("graphics/unused/goosuto.4bpp.lz"); // ghost +const u8 gUnusedPal_Goosuto[] = INCBIN_U8("graphics/unused/goosuto.gbapal.lz"); +const u16 gUnusedTilemap_Goosuto[] = INCBIN_U16("graphics/unused/goosuto.bin.lz"); + +const u8 gBattleAnimSpriteSheet_174[] = INCBIN_U8("graphics/battle_anims/sprites/174.4bpp.lz"); +const u8 gBattleAnimSpritePalette_174[] = INCBIN_U8("graphics/battle_anims/sprites/174.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_175[] = INCBIN_U8("graphics/battle_anims/sprites/175.4bpp.lz"); +const u8 gBattleAnimSpritePalette_175[] = INCBIN_U8("graphics/battle_anims/sprites/175.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_176[] = INCBIN_U8("graphics/battle_anims/sprites/176.4bpp.lz"); +const u8 gBattleAnimSpritePalette_176[] = INCBIN_U8("graphics/battle_anims/sprites/176.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_177[] = INCBIN_U8("graphics/battle_anims/sprites/177.4bpp.lz"); +const u8 gBattleAnimSpritePalette_177[] = INCBIN_U8("graphics/battle_anims/sprites/177.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_178[] = INCBIN_U8("graphics/battle_anims/sprites/178.4bpp.lz"); +const u8 gBattleAnimSpritePalette_178[] = INCBIN_U8("graphics/battle_anims/sprites/178.gbapal.lz"); + +const u8 gBattleAnimSpritePalette_179[] = INCBIN_U8("graphics/battle_anims/sprites/179.gbapal.lz"); +const u8 gBattleAnimSpriteSheet_179[] = INCBIN_U8("graphics/battle_anims/sprites/179.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_180[] = INCBIN_U8("graphics/battle_anims/sprites/180.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_181[] = INCBIN_U8("graphics/battle_anims/sprites/181.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_182[] = INCBIN_U8("graphics/battle_anims/sprites/182.4bpp.lz"); +const u8 gBattleAnimSpritePalette_182[] = INCBIN_U8("graphics/battle_anims/sprites/182.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_183[] = INCBIN_U8("graphics/battle_anims/sprites/183.4bpp.lz"); +const u8 gBattleAnimSpritePalette_183[] = INCBIN_U8("graphics/battle_anims/sprites/183.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_184[] = INCBIN_U8("graphics/battle_anims/sprites/184.4bpp.lz"); +const u8 gBattleAnimSpritePalette_184[] = INCBIN_U8("graphics/battle_anims/sprites/184.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_185[] = INCBIN_U8("graphics/battle_anims/sprites/185.4bpp.lz"); +const u8 gBattleAnimSpritePalette_185[] = INCBIN_U8("graphics/battle_anims/sprites/185.gbapal.lz"); + +const u8 gBattleAnimBackgroundImage_03[] = INCBIN_U8("graphics/battle_anims/backgrounds/03.4bpp.lz"); +const u8 gBattleAnimBackgroundPalette_03[] = INCBIN_U8("graphics/battle_anims/backgrounds/03.gbapal.lz"); +const u16 gBattleAnimBackgroundTilemap_03[] = INCBIN_U16("graphics/battle_anims/backgrounds/03.bin.lz"); + +const u8 gBattleAnimSpriteSheet_187[] = INCBIN_U8("graphics/battle_anims/sprites/187.4bpp.lz"); +const u8 gBattleAnimSpritePalette_187[] = INCBIN_U8("graphics/battle_anims/sprites/187.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_186[] = INCBIN_U8("graphics/battle_anims/sprites/186.4bpp.lz"); +const u8 gBattleAnimSpritePalette_186[] = INCBIN_U8("graphics/battle_anims/sprites/186.gbapal.lz"); + +const u8 gUnknown_08C1F1C8[] = INCBIN_U8("graphics/battle_interface/window.4bpp.lz"); +const u8 gUnknown_08C1F46C[] = INCBIN_U8("graphics/battle_interface/window2.4bpp.lz"); +const u8 gUnknown_08C1F5E8[] = INCBIN_U8( "graphics/battle_interface/window3.4bpp.lz"); +const u8 gUnknown_08C1F76C[] = INCBIN_U8("graphics/battle_interface/window4.4bpp.lz"); +const u8 gUnknown_08C1F8E8[] = INCBIN_U8("graphics/battle_interface/window5.4bpp.lz"); + +const u8 gUnusedGfx_Shadow[] = INCBIN_U8("graphics/unused/shadow.4bpp.lz"); +const u8 gUnusedPal_Shadow[] = INCBIN_U8("graphics/unused/shadow.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_014[] = INCBIN_U8("graphics/battle_anims/sprites/014.4bpp.lz"); +const u8 gBattleAnimSpritePalette_014[] = INCBIN_U8("graphics/battle_anims/sprites/014.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_190[] = INCBIN_U8("graphics/battle_anims/sprites/190.4bpp.lz"); +const u8 gBattleAnimSpritePalette_190[] = INCBIN_U8("graphics/battle_anims/sprites/190.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_191[] = INCBIN_U8("graphics/battle_anims/sprites/191.4bpp.lz"); +const u8 gBattleAnimSpritePalette_191[] = INCBIN_U8("graphics/battle_anims/sprites/191.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_189[] = INCBIN_U8("graphics/battle_anims/sprites/189.4bpp.lz"); +const u8 gBattleAnimSpritePalette_189[] = INCBIN_U8("graphics/battle_anims/sprites/189.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_192[] = INCBIN_U8("graphics/battle_anims/sprites/192.4bpp.lz"); +const u8 gBattleAnimSpritePalette_192[] = INCBIN_U8("graphics/battle_anims/sprites/192.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_193[] = INCBIN_U8("graphics/battle_anims/sprites/193.4bpp.lz"); +const u8 gBattleAnimSpritePalette_193[] = INCBIN_U8("graphics/battle_anims/sprites/193.gbapal.lz"); + +const u8 gUnknown_08C20668[] = INCBIN_U8("graphics/battle_anims/masks/curse.4bpp.lz"); +const u16 gUnknown_08C20684[] = INCBIN_U16("graphics/battle_anims/masks/curse.bin.lz"); + +const u8 gBattleAnimSpriteSheet_002[] = INCBIN_U8("graphics/battle_anims/sprites/002.4bpp.lz"); +const u8 gBattleAnimSpritePalette_002[] = INCBIN_U8("graphics/battle_anims/sprites/002.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_196[] = INCBIN_U8("graphics/battle_anims/sprites/196.4bpp.lz"); +const u8 gBattleAnimSpritePalette_196[] = INCBIN_U8("graphics/battle_anims/sprites/196.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_194[] = INCBIN_U8("graphics/battle_anims/sprites/194.4bpp.lz"); +const u8 gBattleAnimSpritePalette_194[] = INCBIN_U8("graphics/battle_anims/sprites/194.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_195[] = INCBIN_U8("graphics/battle_anims/sprites/195.4bpp.lz"); +const u8 gBattleAnimSpritePalette_195[] = INCBIN_U8("graphics/battle_anims/sprites/195.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_197[] = INCBIN_U8("graphics/battle_anims/sprites/197.4bpp.lz"); +const u8 gBattleAnimSpritePalette_197[] = INCBIN_U8("graphics/battle_anims/sprites/197.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_198[] = INCBIN_U8("graphics/battle_anims/sprites/198.4bpp.lz"); +const u8 gBattleAnimSpritePalette_198[] = INCBIN_U8("graphics/battle_anims/sprites/198.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_199[] = INCBIN_U8("graphics/battle_anims/sprites/199.4bpp.lz"); +const u8 gBattleAnimSpritePalette_199[] = INCBIN_U8("graphics/battle_anims/sprites/199.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_200[] = INCBIN_U8("graphics/battle_anims/sprites/200.4bpp.lz"); +const u8 gBattleAnimSpritePalette_200[] = INCBIN_U8("graphics/battle_anims/sprites/200.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_201[] = INCBIN_U8("graphics/battle_anims/sprites/201.4bpp.lz"); +const u8 gBattleAnimSpritePalette_201[] = INCBIN_U8("graphics/battle_anims/sprites/201.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_204[] = INCBIN_U8("graphics/battle_anims/sprites/204.4bpp.lz"); +const u8 gBattleAnimSpritePalette_204[] = INCBIN_U8("graphics/battle_anims/sprites/204.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_202[] = INCBIN_U8("graphics/battle_anims/sprites/202.4bpp.lz"); +const u8 gBattleAnimSpritePalette_202[] = INCBIN_U8("graphics/battle_anims/sprites/202.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_203[] = INCBIN_U8("graphics/battle_anims/sprites/203.4bpp.lz"); +const u8 gBattleAnimSpritePalette_203[] = INCBIN_U8("graphics/battle_anims/sprites/203.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_206[] = INCBIN_U8("graphics/battle_anims/sprites/206.4bpp.lz"); +const u8 gBattleAnimSpritePalette_206[] = INCBIN_U8("graphics/battle_anims/sprites/206.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_205[] = INCBIN_U8("graphics/battle_anims/sprites/205.4bpp.lz"); +const u8 gBattleAnimSpritePalette_205[] = INCBIN_U8("graphics/battle_anims/sprites/205.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_207[] = INCBIN_U8("graphics/battle_anims/sprites/207.4bpp.lz"); +const u8 gBattleAnimSpritePalette_207[] = INCBIN_U8("graphics/battle_anims/sprites/207.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_208[] = INCBIN_U8("graphics/battle_anims/sprites/208.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_209[] = INCBIN_U8("graphics/battle_anims/sprites/209.4bpp.lz"); +const u8 gBattleAnimSpritePalette_209[] = INCBIN_U8("graphics/battle_anims/sprites/209.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_064[] = INCBIN_U8("graphics/battle_anims/sprites/064.4bpp.lz"); +const u8 gBattleAnimSpritePalette_064[] = INCBIN_U8("graphics/battle_anims/sprites/064.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_210[] = INCBIN_U8("graphics/battle_anims/sprites/210.4bpp.lz"); + +const u8 gBattleAnimSpritePalette_219[] = INCBIN_U8("graphics/battle_anims/sprites/219.gbapal.lz"); +const u8 gBattleAnimSpritePalette_210[] = INCBIN_U8("graphics/battle_anims/sprites/210.gbapal.lz"); +const u8 gBattleAnimSpritePalette_216[] = INCBIN_U8("graphics/battle_anims/sprites/216.gbapal.lz"); + +const u8 gUnknown_08C232E0[] = INCBIN_U8("graphics/battle_anims/backgrounds/attract.4bpp.lz"); +const u8 gUnknown_08C23D50[] = INCBIN_U8("graphics/battle_anims/backgrounds/attract.gbapal.lz"); +const u16 gUnknown_08C23D78[] = INCBIN_U16("graphics/battle_anims/backgrounds/attract.bin.lz"); + +const u8 gBattleAnimSpriteSheet_217[] = INCBIN_U8("graphics/battle_anims/sprites/217.4bpp.lz"); +const u8 gBattleAnimSpritePalette_217[] = INCBIN_U8("graphics/battle_anims/sprites/217.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_212[] = INCBIN_U8("graphics/battle_anims/sprites/212.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_211[] = INCBIN_U8("graphics/battle_anims/sprites/211.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_213[] = INCBIN_U8("graphics/battle_anims/sprites/213.4bpp.lz"); + +const u8 gBattleAnimSpritePalette_211[] = INCBIN_U8("graphics/battle_anims/sprites/211.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_214[] = INCBIN_U8("graphics/battle_anims/sprites/214.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_215[] = INCBIN_U8("graphics/battle_anims/sprites/215.4bpp.lz"); +const u8 gBattleAnimSpritePalette_215[] = INCBIN_U8("graphics/battle_anims/sprites/215.gbapal.lz"); + +const u8 gUnknown_08C249D0[] = INCBIN_U8("graphics/battle_anims/backgrounds/scary_face.gbapal.lz"); +const u8 gUnknown_08C249F8[] = INCBIN_U8("graphics/battle_anims/backgrounds/scary_face.4bpp.lz"); + +const u8 gBattleAnimSpritePalette_218[] = INCBIN_U8("graphics/battle_anims/sprites/218.gbapal.lz"); +const u8 gBattleAnimSpriteSheet_218[] = INCBIN_U8("graphics/battle_anims/sprites/218.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_087[] = INCBIN_U8("graphics/battle_anims/sprites/087.4bpp.lz"); +const u8 gBattleAnimSpritePalette_087[] = INCBIN_U8("graphics/battle_anims/sprites/087.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_018[] = INCBIN_U8("graphics/battle_anims/sprites/018.4bpp.lz"); +const u8 gBattleAnimSpritePalette_018[] = INCBIN_U8("graphics/battle_anims/sprites/018.gbapal.lz"); + +const u8 gBattleAnimSpritePalette_220[] = INCBIN_U8("graphics/battle_anims/sprites/220.gbapal.lz"); +const u8 gBattleAnimSpriteSheet_220[] = INCBIN_U8("graphics/battle_anims/sprites/220.4bpp.lz"); + +const u8 gBattleAnimSpritePalette_221[] = INCBIN_U8("graphics/battle_anims/sprites/221.gbapal.lz"); +const u8 gBattleAnimSpriteSheet_221[] = INCBIN_U8("graphics/battle_anims/sprites/221.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_222[] = INCBIN_U8("graphics/battle_anims/sprites/222.4bpp.lz"); +const u8 gBattleAnimSpritePalette_222[] = INCBIN_U8("graphics/battle_anims/sprites/222.gbapal.lz"); + +const u8 gBattleAnimSpritePalette_223[] = INCBIN_U8("graphics/battle_anims/sprites/223.gbapal.lz"); +const u8 gBattleAnimSpriteSheet_223[] = INCBIN_U8("graphics/battle_anims/sprites/223.4bpp.lz"); + +const u8 gBattleAnimSpritePalette_224[] = INCBIN_U8("graphics/battle_anims/sprites/224.gbapal.lz"); +const u8 gBattleAnimSpriteSheet_224[] = INCBIN_U8("graphics/battle_anims/sprites/224.4bpp.lz"); + +const u8 gBattleAnimSpritePalette_230[] = INCBIN_U8("graphics/battle_anims/sprites/230.gbapal.lz"); +const u8 gBattleAnimSpriteSheet_230[] = INCBIN_U8("graphics/battle_anims/sprites/230.4bpp.lz"); + +const u8 gBattleAnimSpritePalette_228[] = INCBIN_U8("graphics/battle_anims/sprites/228.gbapal.lz"); +const u8 gBattleAnimSpriteSheet_228[] = INCBIN_U8("graphics/battle_anims/sprites/228.4bpp.lz"); + +const u8 gBattleAnimBackgroundPalette_04[] = INCBIN_U8("graphics/battle_anims/backgrounds/04.gbapal.lz"); +const u8 gBattleAnimBackgroundImage_04[] = INCBIN_U8("graphics/battle_anims/backgrounds/04.4bpp.lz"); +const u16 gBattleAnimBackgroundTilemap_04[] = INCBIN_U16("graphics/battle_anims/backgrounds/04.bin.lz"); + +const u16 gBattleAnimBackgroundTilemap_05[] = INCBIN_U16("graphics/battle_anims/backgrounds/05.bin.lz"); +const u16 gBattleAnimBackgroundTilemap_06[] = INCBIN_U16("graphics/battle_anims/backgrounds/06.bin.lz"); + +const u8 gBattleAnimSpriteSheet_225[] = INCBIN_U8("graphics/battle_anims/sprites/225.4bpp.lz"); +const u8 gBattleAnimSpritePalette_225[] = INCBIN_U8("graphics/battle_anims/sprites/225.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_227[] = INCBIN_U8("graphics/battle_anims/sprites/227.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_226[] = INCBIN_U8("graphics/battle_anims/sprites/226.4bpp.lz"); +const u8 gBattleAnimSpritePalette_226[] = INCBIN_U8("graphics/battle_anims/sprites/226.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_229[] = INCBIN_U8("graphics/battle_anims/sprites/229.4bpp.lz"); +const u8 gBattleAnimSpritePalette_229[] = INCBIN_U8("graphics/battle_anims/sprites/229.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_099[] = INCBIN_U8("graphics/battle_anims/sprites/099.4bpp.lz"); +const u8 gBattleAnimSpritePalette_099[] = INCBIN_U8("graphics/battle_anims/sprites/099.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_232[] = INCBIN_U8("graphics/battle_anims/sprites/232.4bpp.lz"); + +const u8 gBattleAnimSpritePalette_231[] = INCBIN_U8("graphics/battle_anims/sprites/231.gbapal.lz"); +const u8 gBattleAnimSpriteSheet_231[] = INCBIN_U8("graphics/battle_anims/sprites/231.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_233[] = INCBIN_U8("graphics/battle_anims/sprites/233.4bpp.lz"); +const u8 gBattleAnimSpritePalette_233[] = INCBIN_U8("graphics/battle_anims/sprites/233.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_234[] = INCBIN_U8("graphics/battle_anims/sprites/234.4bpp.lz"); +const u8 gBattleAnimSpritePalette_234[] = INCBIN_U8("graphics/battle_anims/sprites/234.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_238[] = INCBIN_U8("graphics/battle_anims/sprites/238.4bpp.lz"); +const u8 gBattleAnimSpritePalette_238[] = INCBIN_U8("graphics/battle_anims/sprites/238.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_235[] = INCBIN_U8("graphics/battle_anims/sprites/235.4bpp.lz"); +const u8 gBattleAnimSpritePalette_235[] = INCBIN_U8("graphics/battle_anims/sprites/235.gbapal.lz"); + +const u8 gBattleAnimSpritePalette_236[] = INCBIN_U8("graphics/battle_anims/sprites/236.gbapal.lz"); +const u8 gBattleAnimSpritePalette_237[] = INCBIN_U8("graphics/battle_anims/sprites/237.gbapal.lz"); + +const u8 gBattleAnimBackgroundImage_07[] = INCBIN_U8("graphics/battle_anims/backgrounds/07.4bpp.lz"); +const u8 gBattleAnimBackgroundPalette_07[] = INCBIN_U8("graphics/battle_anims/backgrounds/07.gbapal.lz"); + +const u8 gBattleAnimBackgroundPalette_18[] = INCBIN_U8("graphics/battle_anims/backgrounds/18.gbapal.lz"); + +const u16 gBattleAnimBackgroundTilemap_07[] = INCBIN_U16("graphics/battle_anims/backgrounds/07.bin.lz"); +const u16 gBattleAnimBackgroundTilemap_08[] = INCBIN_U16("graphics/battle_anims/backgrounds/08.bin.lz"); + +const u8 gBattleAnimBackgroundImage_20[] = INCBIN_U8("graphics/battle_anims/backgrounds/20.4bpp.lz"); +const u8 gBattleAnimBackgroundPalette_20[] = INCBIN_U8("graphics/battle_anims/backgrounds/20.gbapal.lz"); +const u16 gBattleAnimBackgroundTilemap_20[] = INCBIN_U16("graphics/battle_anims/backgrounds/20.bin.lz"); + +const u16 gBattleAnimBackgroundTilemap_09[] = INCBIN_U16("graphics/battle_anims/backgrounds/09.bin.lz"); +const u8 gBattleAnimBackgroundPalette_09[] = INCBIN_U8("graphics/battle_anims/backgrounds/09.gbapal.lz"); + +const u8 gBattleAnimBackgroundPalette_22[] = INCBIN_U8("graphics/battle_anims/backgrounds/22.gbapal.lz"); + +const u8 gBattleAnimBackgroundImage_09[] = INCBIN_U8("graphics/battle_anims/backgrounds/09.4bpp.lz"); +const u16 gBattleAnimBackgroundTilemap_10[] = INCBIN_U16("graphics/battle_anims/backgrounds/10.bin.lz"); + +const u8 gUnknown_08C2A634[] = INCBIN_U8("graphics/battle_anims/masks/morning_sun.4bpp.lz"); +const u8 gUnknown_08C2A6D4[] = INCBIN_U8("graphics/battle_anims/masks/morning_sun.gbapal.lz"); +const u16 gUnknown_08C2A6EC[] = INCBIN_U16("graphics/battle_anims/masks/morning_sun.bin.lz"); + +const u16 gBattleAnimBackgroundTilemap_12[] = INCBIN_U16("graphics/battle_anims/backgrounds/12.bin.lz"); +const u16 gBattleAnimBackgroundTilemap_13[] = INCBIN_U16("graphics/battle_anims/backgrounds/13.bin.lz"); +const u16 gBattleAnimBackgroundTilemap_14[] = INCBIN_U16("graphics/battle_anims/backgrounds/14.bin.lz"); + +const u8 gBattleAnimBackgroundImage_12[] = INCBIN_U8("graphics/battle_anims/backgrounds/12.4bpp.lz"); +const u8 gBattleAnimBackgroundPalette_12[] = INCBIN_U8("graphics/battle_anims/backgrounds/12.gbapal.lz"); + +const u8 gBattleAnimBackgroundImage_11[] = INCBIN_U8("graphics/battle_anims/backgrounds/11.4bpp.lz"); +const u8 gBattleAnimBackgroundPalette_11[] = INCBIN_U8("graphics/battle_anims/backgrounds/11.gbapal.lz"); +const u16 gBattleAnimBackgroundTilemap_11[] = INCBIN_U16("graphics/battle_anims/backgrounds/11.bin.lz"); + +const u8 gBattleAnimSpriteSheet_239[] = INCBIN_U8("graphics/battle_anims/sprites/239.4bpp.lz"); +const u8 gBattleAnimSpritePalette_239[] = INCBIN_U8("graphics/battle_anims/sprites/239.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_143[] = INCBIN_U8("graphics/battle_anims/sprites/143.4bpp.lz"); +const u8 gBattleAnimSpritePalette_143[] = INCBIN_U8("graphics/battle_anims/sprites/143.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_240[] = INCBIN_U8("graphics/battle_anims/sprites/240.4bpp.lz"); +const u8 gBattleAnimSpritePalette_240[] = INCBIN_U8("graphics/battle_anims/sprites/240.gbapal.lz"); + +const u8 gSubstituteDollPal[] = INCBIN_U8("graphics/battle_anims/sprites/substitute.gbapal.lz"); +const u8 gSubstituteDollGfx[] = INCBIN_U8("graphics/battle_anims/sprites/substitute.4bpp.lz"); +const u16 gSubstituteDollTilemap[] = INCBIN_U16("graphics/battle_anims/sprites/substitute.bin.lz"); + +const u8 gBattleAnimSpriteSheet_241[] = INCBIN_U8("graphics/battle_anims/sprites/241.4bpp.lz"); +const u8 gBattleAnimSpritePalette_241[] = INCBIN_U8("graphics/battle_anims/sprites/241.gbapal.lz"); + +const u8 gContestConfetti_Gfx[] = INCBIN_U8("graphics/misc/confetti.4bpp.lz"); +const u8 gContestConfetti_Pal[] = INCBIN_U8("graphics/misc/confetti.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_242[] = INCBIN_U8("graphics/battle_anims/sprites/242.4bpp.lz"); +const u8 gBattleAnimSpritePalette_242[] = INCBIN_U8("graphics/battle_anims/sprites/242.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_243[] = INCBIN_U8("graphics/battle_anims/sprites/243.4bpp.lz"); +const u8 gBattleAnimSpritePalette_243[] = INCBIN_U8("graphics/battle_anims/sprites/243.gbapal.lz"); + +const u8 gUnknown_08C2D720[] = INCBIN_U8("graphics/battle_anims/masks/stat.4bpp.lz"); +const u16 gUnknown_08C2D930[] = INCBIN_U16("graphics/battle_anims/masks/stat_tilemap_1.bin.lz"); +const u16 gUnknown_08C2DA4C[] = INCBIN_U16("graphics/battle_anims/masks/stat_tilemap_2.bin.lz"); + +const u8 gUnknown_08C2DB68[] = INCBIN_U8("graphics/battle_anims/masks/stat1.gbapal.lz"); +const u8 gUnknown_08C2DB88[] = INCBIN_U8("graphics/battle_anims/masks/stat2.gbapal.lz"); +const u8 gUnknown_08C2DBA8[] = INCBIN_U8("graphics/battle_anims/masks/stat3.gbapal.lz"); +const u8 gUnknown_08C2DBC8[] = INCBIN_U8("graphics/battle_anims/masks/stat4.gbapal.lz"); +const u8 gUnknown_08C2DBE8[] = INCBIN_U8("graphics/battle_anims/masks/stat5.gbapal.lz"); +const u8 gUnknown_08C2DC08[] = INCBIN_U8("graphics/battle_anims/masks/stat6.gbapal.lz"); +const u8 gUnknown_08C2DC28[] = INCBIN_U8("graphics/battle_anims/masks/stat7.gbapal.lz"); +const u8 gUnknown_08C2DC48[] = INCBIN_U8("graphics/battle_anims/masks/stat8.gbapal.lz"); + +const u8 gUnknown_08C2DC68[] = INCBIN_U8("graphics/battle_anims/masks/cure_bubbles.4bpp.lz"); +const u8 gUnknown_08C2DDA4[] = INCBIN_U8("graphics/battle_anims/masks/cure_bubbles.gbapal.lz"); +const u16 gUnknown_08C2DDC4[] = INCBIN_U16("graphics/battle_anims/masks/cure_bubbles.bin.lz"); + +const u8 gBattleAnimSpritePalette_245[] = INCBIN_U8("graphics/battle_anims/sprites/245.gbapal.lz"); +const u8 gBattleAnimSpriteSheet_245[] = INCBIN_U8("graphics/battle_anims/sprites/245.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_246[] = INCBIN_U8("graphics/battle_anims/sprites/246.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_244[] = INCBIN_U8("graphics/battle_anims/sprites/244.4bpp.lz"); +const u8 gBattleAnimSpritePalette_244[] = INCBIN_U8("graphics/battle_anims/sprites/244.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_247[] = INCBIN_U8("graphics/battle_anims/sprites/247.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_053[] = INCBIN_U8("graphics/battle_anims/sprites/053.4bpp.lz"); + +const u8 gUnknown_08C2EA50[] = INCBIN_U8("graphics/battle_anims/masks/unknown_C2EA50.4bpp.lz"); +const u16 gUnknown_08C2EA9C[] = INCBIN_U16("graphics/battle_anims/masks/unknown_C2EA50.bin.lz"); + +const u8 gBattleAnimSpriteSheet_248[] = INCBIN_U8("graphics/battle_anims/sprites/248.4bpp.lz"); +const u8 gBattleAnimSpritePalette_248[] = INCBIN_U8("graphics/battle_anims/sprites/248.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_249[] = INCBIN_U8("graphics/battle_anims/sprites/249.4bpp.lz"); +const u8 gBattleAnimSpritePalette_249[] = INCBIN_U8("graphics/battle_anims/sprites/249.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_250[] = INCBIN_U8("graphics/battle_anims/sprites/250.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_251[] = INCBIN_U8("graphics/battle_anims/sprites/251.4bpp.lz"); +const u8 gBattleAnimSpritePalette_251[] = INCBIN_U8("graphics/battle_anims/sprites/251.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_252[] = INCBIN_U8("graphics/battle_anims/sprites/252.4bpp.lz"); +const u8 gBattleAnimSpritePalette_252[] = INCBIN_U8("graphics/battle_anims/sprites/252.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_253[] = INCBIN_U8("graphics/battle_anims/sprites/253.4bpp.lz"); +const u8 gBattleAnimSpritePalette_253[] = INCBIN_U8("graphics/battle_anims/sprites/253.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_254[] = INCBIN_U8("graphics/battle_anims/sprites/254.4bpp.lz"); +const u8 gBattleAnimSpritePalette_254[] = INCBIN_U8("graphics/battle_anims/sprites/254.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_255[] = INCBIN_U8("graphics/battle_anims/sprites/255.4bpp.lz"); +const u8 gBattleAnimSpritePalette_255[] = INCBIN_U8("graphics/battle_anims/sprites/255.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_258[] = INCBIN_U8("graphics/battle_anims/sprites/258.4bpp.lz"); +const u8 gBattleAnimSpritePalette_258[] = INCBIN_U8("graphics/battle_anims/sprites/258.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_256[] = INCBIN_U8("graphics/battle_anims/sprites/256.4bpp.lz"); +const u8 gBattleAnimSpritePalette_256[] = INCBIN_U8("graphics/battle_anims/sprites/256.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_257[] = INCBIN_U8("graphics/battle_anims/sprites/257.4bpp.lz"); +const u8 gBattleAnimSpritePalette_257[] = INCBIN_U8("graphics/battle_anims/sprites/257.gbapal.lz"); + +const u8 gUnknownPal_C2F9E0[] = INCBIN_U8("graphics/unknown/unknown_C2F9E0.gbapal.lz"); + +#include "data/graphics/pokemon.h" +#include "data/graphics/trainers.h" + +const u8 gMonIcon_QuestionMark[] = INCBIN_U8("graphics/pokemon/icons/question_mark_icon.4bpp"); +const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/footprints/question_mark_footprint.1bpp"); + +const u8 gUnknown_08D778F0[] = INCBIN_U8("graphics/battle_transitions/vs_frame.4bpp.lz"); +const u16 gUnknown_08D779D8[] = INCBIN_U16("graphics/battle_transitions/vs_frame.bin.lz"); +const u8 gUnknown_08D77AE4[] = INCBIN_U8("graphics/battle_transitions/vs_frame.gbapal.lz"); + +const u8 gUnknown_08D77B0C[] = INCBIN_U8("graphics/battle_transitions/vs.4bpp.lz"); + +#include "data/graphics/battle_terrain.h" + +const u8 gUnknown_08D82F10[] = INCBIN_U8("graphics/battle_frontier/tourney_bg.4bpp.lz"); +const u8 gUnknown_08D834FC[] = INCBIN_U8("graphics/battle_frontier/tourney_line.4bpp.lz"); // the red glow mask for the tourney advancement lines + +const u16 gUnknown_08D83900[] = INCBIN_U16("graphics/unknown/unknown_D83900.bin.lz"); // tilemaps likely + +const u16 gUnknown_08D83B2C[] = INCBIN_U16("graphics/unknown/unknown_D83B2C.bin.lz"); + +const u16 gUnknown_08D83C3C[] = INCBIN_U16("graphics/unknown/unknown_D83C3C.bin.lz"); + +const u8 gUnknown_08D83D50[] = INCBIN_U8("graphics/battle_frontier/misc1.4bpp.lz"); + +const u16 gUnknown_08D84970[] = INCBIN_U16("graphics/unknown/unknown_D84970.bin.lz"); + +const u16 gUnknown_08D84F00[] = INCBIN_U16("graphics/unknown/unknown_D84F00.bin.lz"); + +const u8 gBattleFrontierGfx_DomeOptions[] = INCBIN_U8("graphics/battle_frontier/options.4bpp.lz"); +const u8 gUnknown_08D85358[] = INCBIN_U8("graphics/battle_frontier/options_pal1.gbapal.lz"); +const u8 gUnknown_08D85444[] = INCBIN_U8("graphics/battle_frontier/options_pal2.gbapal.lz"); // pokeball pal +const u8 gUnknown_08D854C8[] = INCBIN_U8("graphics/battle_frontier/options_pal3.gbapal.lz"); // arrow pal + +const u8 gUnknown_08D854E8[] = INCBIN_U8("graphics/battle_frontier/symbols.4bpp.lz"); +const u8 gUnknown_08D855E8[] = INCBIN_U8("graphics/battle_frontier/symbols.gbapal.lz"); + +const u8 gUnknown_08D85600[] = INCBIN_U8("graphics/battle_frontier/text.gbapal.lz"); +const u16 gUnknown_08D85620[] = INCBIN_U16("graphics/battle_frontier/text_pp.gbapal"); + +const u16 gTilesetAnims_BattleDomePals0_0[] = INCBIN_U16("graphics/battle_frontier/dome_anim1.gbapal"); +const u16 gTilesetAnims_BattleDomePals0_1[] = INCBIN_U16("graphics/battle_frontier/dome_anim2.gbapal"); +const u16 gTilesetAnims_BattleDomePals0_2[] = INCBIN_U16("graphics/battle_frontier/dome_anim3.gbapal"); +const u16 gTilesetAnims_BattleDomePals0_3[] = INCBIN_U16("graphics/battle_frontier/dome_anim4.gbapal"); + +// 8D856C0 +asm(".2byte 0x013F, 0x0119, 0x0113, 0x010E"); // unused? + +const u16 gUnknown_08D856C8[] = INCBIN_U16("graphics/battle_frontier/pyramid_light.gbapal"); // unfaded pal for the player light in battle pyramid + +const u16 gUnknown_08D857A8[] = INCBIN_U16("graphics/battle_frontier/battle_tilemap1.bin.lz"); +const u16 gUnknown_08D85A1C[] = INCBIN_U16("graphics/battle_frontier/battle_tilemap2.bin.lz"); + +#include "data/graphics/intro_scene.h" + +const u8 gBattleAnimSpriteSheet_261[] = INCBIN_U8("graphics/battle_anims/sprites/261.4bpp.lz"); + +const u16 gUnknown_08D8D410[] = INCBIN_U16("graphics/battle_anims/backgrounds/sandstorm_brew.bin.lz"); +const u8 gUnknown_08D8D58C[] = INCBIN_U8("graphics/battle_anims/backgrounds/sandstorm_brew.4bpp.lz"); + +const u8 gBattleAnimSpritePalette_261[] = INCBIN_U8("graphics/battle_anims/sprites/261.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_260[] = INCBIN_U8("graphics/battle_anims/sprites/260.4bpp.lz"); +const u8 gBattleAnimSpritePalette_260[] = INCBIN_U8("graphics/battle_anims/sprites/260.gbapal.lz"); + +const u8 gBattleAnimBackgroundImage_15[] = INCBIN_U8("graphics/battle_anims/backgrounds/15.4bpp.lz"); +const u8 gBattleAnimBackgroundPalette_15[] = INCBIN_U8("graphics/battle_anims/backgrounds/15.gbapal.lz"); +const u16 gBattleAnimBackgroundTilemap_15[] = INCBIN_U16("graphics/battle_anims/backgrounds/15.bin.lz"); + +const u8 gBattleAnimSpriteSheet_262[] = INCBIN_U8("graphics/battle_anims/sprites/262.4bpp.lz"); +const u8 gBattleAnimSpritePalette_262[] = INCBIN_U8("graphics/battle_anims/sprites/262.gbapal.lz"); + +const u8 gContestNextTurnGfx[] = INCBIN_U8("graphics/contest/nextturn.4bpp.lz"); +const u8 gUnknown_08D8E9B4[] = INCBIN_U8("graphics/contest/nextturn_numbers.4bpp"); +const u8 gUnknown_08D8EA34[] = INCBIN_U8("graphics/contest/nextturn_random.4bpp"); + +const u8 gBattleAnimSpriteSheet_264[] = INCBIN_U8("graphics/battle_anims/sprites/264.4bpp.lz"); +const u8 gBattleAnimSpritePalette_264[] = INCBIN_U8("graphics/battle_anims/sprites/264.gbapal.lz"); +const u8 gBattleAnimSpritePalette_265[] = INCBIN_U8("graphics/battle_anims/sprites/265.gbapal.lz"); +const u8 gBattleAnimSpritePalette_067[] = INCBIN_U8("graphics/battle_anims/sprites/067.gbapal.lz"); +const u8 gBattleAnimSpritePalette_068[] = INCBIN_U8("graphics/battle_anims/sprites/068.gbapal.lz"); + +const u8 gContestApplauseGfx[] = INCBIN_U8("graphics/contest/applause.4bpp.lz"); +const u8 gContestApplauseMeterGfx[] = INCBIN_U8("graphics/contest/applause_meter.4bpp"); + +const u16 gContestPal[] = INCBIN_U16("graphics/contest/nextturn.gbapal"); + +const u8 gBattleAnimSpriteSheet_272[] = INCBIN_U8("graphics/battle_anims/sprites/272.4bpp.lz"); +const u8 gBattleAnimSpritePalette_272[] = INCBIN_U8("graphics/battle_anims/sprites/272.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_273[] = INCBIN_U8("graphics/battle_anims/sprites/273.4bpp.lz"); + +const u8 gBattleAnimSpriteSheet_269[] = INCBIN_U8("graphics/battle_anims/sprites/269.4bpp.lz"); +const u8 gBattleAnimSpritePalette_269[] = INCBIN_U8("graphics/battle_anims/sprites/269.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_274[] = INCBIN_U8("graphics/battle_anims/sprites/274.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_275[] = INCBIN_U8("graphics/battle_anims/sprites/275.4bpp.lz"); +const u8 gBattleAnimSpriteSheet_276[] = INCBIN_U8("graphics/battle_anims/sprites/276.4bpp.lz"); + +const u8 gBattleAnimSpritePalette_274[] = INCBIN_U8("graphics/battle_anims/sprites/274.gbapal.lz"); + +const u8 gBattleAnimBackgroundImage_17[] = INCBIN_U8("graphics/battle_anims/backgrounds/17.4bpp.lz"); +const u8 gBattleAnimBackgroundPalette_17[] = INCBIN_U8("graphics/battle_anims/backgrounds/17.gbapal.lz"); +const u16 gBattleAnimBackgroundTilemap_17[] = INCBIN_U16("graphics/battle_anims/backgrounds/17.bin.lz"); + +const u8 gBattleAnimSpriteSheet_280[] = INCBIN_U8("graphics/battle_anims/sprites/280.4bpp.lz"); +const u8 gBattleAnimSpritePalette_280[] = INCBIN_U8("graphics/battle_anims/sprites/280.gbapal.lz"); + +const u8 gBattleAnimBackgroundImageMuddyWater_Pal[] = INCBIN_U8("graphics/battle_anims/backgrounds/water_muddy.gbapal.lz"); + +const u8 gEnemyMonShadow_Gfx[] = INCBIN_U8("graphics/battle_interface/enemy_mon_shadow.4bpp.lz"); + +const u8 gBattleInterface_BallStatusBarGfx[] = INCBIN_U8("graphics/battle_interface/ball_status_bar.4bpp.lz"); + +const u8 gMonIcon_Egg[] = INCBIN_U8("graphics/pokemon/icons/egg_icon.4bpp"); + +const u8 gBattleAnimBackgroundImage_02[] = INCBIN_U8("graphics/battle_anims/backgrounds/02.4bpp.lz"); +const u8 gBattleAnimBackgroundPalette_02[] = INCBIN_U8("graphics/battle_anims/backgrounds/02.gbapal.lz"); +const u16 gBattleAnimBackgroundTilemap_02[] = INCBIN_U16("graphics/battle_anims/backgrounds/02.bin.lz"); + +const u8 gBattleAnimSpritePalette_287[] = INCBIN_U8("graphics/battle_anims/sprites/287.gbapal.lz"); + +const u8 gBattleAnimBackgroundPalette_24[] = INCBIN_U8("graphics/battle_anims/backgrounds/24.gbapal.lz"); + +const u16 gUnknown_E6BC04[] = INCBIN_U16("graphics/unknown/unknown_E6BC04.bin.lz"); + +const u16 sBlenderCenterGfx[] = INCBIN_U16("graphics/berry_blender/center.8bpp.lz"); + +const u8 gUnknown_08D91DB8[] = INCBIN_U8("graphics/berry_blender/outer.4bpp.lz"); +const u16 gUnknown_08D927EC[] = INCBIN_U16("graphics/berry_blender/outer_map.bin.lz"); + +const u8 gBattleAnimBackgroundPalette_16[] = INCBIN_U8("graphics/battle_anims/backgrounds/16.gbapal.lz"); +const u8 gBattleAnimBackgroundImage_16[] = INCBIN_U8("graphics/battle_anims/backgrounds/16.4bpp.lz"); +const u16 gBattleAnimBackgroundTilemap_16[] = INCBIN_U16("graphics/battle_anims/backgrounds/16.bin.lz"); + +const u8 gBattleAnimSpritePalette_277[] = INCBIN_U8("graphics/battle_anims/sprites/277.gbapal.lz"); +const u8 gBattleAnimSpriteSheet_277[] = INCBIN_U8("graphics/battle_anims/sprites/277.4bpp.lz"); + +const u16 gBattleAnimFogTilemap[] = INCBIN_U16("graphics/battle_anims/backgrounds/fog.bin.lz"); + +const u8 gBattleAnimSpritePalette_283[] = INCBIN_U8("graphics/battle_anims/sprites/283.gbapal.lz"); +const u8 gBattleAnimSpriteSheet_283[] = INCBIN_U8("graphics/battle_anims/sprites/283.4bpp.lz"); + +const u16 gBattleAnimBackgroundTilemap_ScaryFacePlayer[] = INCBIN_U16("graphics/battle_anims/backgrounds/scary_face_player.bin.lz"); +const u16 gBattleAnimBackgroundTilemap_ScaryFaceOpponent[] = INCBIN_U16("graphics/battle_anims/backgrounds/scary_face_opponent.bin.lz"); +const u16 gBattleAnimBackgroundTilemap_ScaryFaceContest[] = INCBIN_U16("graphics/battle_anims/backgrounds/scary_face_contest.bin.lz"); + +const u8 gBattleAnimSpriteSheet_263[] = INCBIN_U8("graphics/battle_anims/sprites/263.4bpp.lz"); +const u8 gBattleAnimSpritePalette_263[] = INCBIN_U8("graphics/battle_anims/sprites/263.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_266[] = INCBIN_U8("graphics/battle_anims/sprites/266.4bpp.lz"); +const u8 gBattleAnimSpritePalette_266[] = INCBIN_U8("graphics/battle_anims/sprites/266.gbapal.lz"); +const u8 gBattleAnimSpritePalette_267[] = INCBIN_U8("graphics/battle_anims/sprites/267.gbapal.lz"); +const u8 gBattleAnimSpritePalette_268[] = INCBIN_U8("graphics/battle_anims/sprites/268.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_278[] = INCBIN_U8("graphics/battle_anims/sprites/278.4bpp.lz"); +const u8 gBattleAnimSpritePalette_278[] = INCBIN_U8("graphics/battle_anims/sprites/278.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_279[] = INCBIN_U8("graphics/battle_anims/sprites/279.4bpp.lz"); +const u8 gBattleAnimSpritePalette_279[] = INCBIN_U8("graphics/battle_anims/sprites/279.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_281[] = INCBIN_U8("graphics/battle_anims/sprites/281.4bpp.lz"); +const u8 gBattleAnimSpritePalette_281[] = INCBIN_U8("graphics/battle_anims/sprites/281.gbapal.lz"); + +const u8 gBattleAnimBackgroundImage_21[] = INCBIN_U8("graphics/battle_anims/backgrounds/21.4bpp.lz"); +const u8 gBattleAnimBackgroundPalette_21[] = INCBIN_U8("graphics/battle_anims/backgrounds/21.gbapal.lz"); +const u16 gBattleAnimBackgroundTilemap_21[] = INCBIN_U16("graphics/battle_anims/backgrounds/21.bin.lz"); + +const u8 gBattleAnimSpriteSheet_284[] = INCBIN_U8("graphics/battle_anims/sprites/284.4bpp.lz"); +const u8 gBattleAnimSpritePalette_284[] = INCBIN_U8("graphics/battle_anims/sprites/284.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_285[] = INCBIN_U8("graphics/battle_anims/sprites/285.4bpp.lz"); +const u8 gBattleAnimSpritePalette_285[] = INCBIN_U8("graphics/battle_anims/sprites/285.gbapal.lz"); + +const u8 gBattleAnimBackgroundImage_Surf[] = INCBIN_U8("graphics/battle_anims/backgrounds/water.4bpp.lz"); +const u8 gBattleAnimBackgroundPalette_Surf[] = INCBIN_U8("graphics/battle_anims/backgrounds/water.gbapal.lz"); + +const u16 gUnknown_08D95E00[] = INCBIN_U16("graphics/unknown/unknown_D95E00.bin.lz"); + +const u16 gUnknown_08D960D0[] = INCBIN_U16("graphics/unknown/unknown_D960D0.bin.lz"); + +const u16 gUnknown_08D963A4[] = INCBIN_U16("graphics/unknown/unknown_D963A4.bin.lz"); + +const u8 gBattleAnimSpritePalette_286[] = INCBIN_U8("graphics/battle_anims/sprites/286.gbapal.lz"); + +const u8 gBattleAnimSpriteSheet_188[] = INCBIN_U8("graphics/battle_anims/sprites/188.4bpp.lz"); +const u8 gBattleAnimSpritePalette_188[] = INCBIN_U8("graphics/battle_anims/sprites/188.gbapal.lz"); + +const u8 gPartyMenuMisc_Gfx[] = INCBIN_U8("graphics/interface/party_menu_misc.4bpp.lz"); +const u8 gPartyMenuMisc_Pal[] = INCBIN_U8("graphics/interface/party_menu_misc.gbapal.lz"); +const u16 gPartyMenuMisc_Tilemap[] = INCBIN_U16("graphics/interface/party_menu_misc.bin.lz"); + +const u8 gPartyMenuPokeball_Gfx[] = INCBIN_U8("graphics/interface/party_menu_pokeball.4bpp.lz"); +const u8 gPartyMenuPokeballSmall_Gfx[] = INCBIN_U8("graphics/interface/party_menu_pokeball_small.4bpp.lz"); //unused +const u8 gPartyMenuPokeball_Pal[] = INCBIN_U8("graphics/interface/party_menu_pokeball.gbapal.lz"); + +const u8 gStatusGfx_Icons[] = INCBIN_U8("graphics/interface/status_icons.4bpp.lz"); +const u8 gStatusPal_Icons[] = INCBIN_U8("graphics/interface/status_icons.gbapal.lz"); + +const u8 gMoveTypes_Gfx[] = INCBIN_U8("graphics/types/move_types.4bpp.lz"); +const u8 gMoveTypes_Pal[] = INCBIN_U8("graphics/types/move_types.gbapal.lz"); + +const u8 gUnknown_08D97BEC[] = INCBIN_U8("graphics/interface/summary_frames.4bpp.lz"); +const u8 gUnknown_08D97CF4[] = INCBIN_U8("graphics/interface/summary_frames.gbapal.lz"); + +const u8 gUnknown_08D97D0C[] = INCBIN_U8("graphics/interface/status_screen.4bpp.lz"); +const u8 gUnknown_08D9853C[] = INCBIN_U8("graphics/interface/status_screen.gbapal.lz"); +const u16 gUnknown_08D9862C[] = INCBIN_U16("graphics/interface/status_screen.bin.lz"); + +const u16 gUnknown_08D987FC[] = INCBIN_U16("graphics/interface/status_tilemap1.bin.lz"); +const u16 gUnknown_08D9898C[] = INCBIN_U16("graphics/interface/status_tilemap2.bin.lz"); +const u16 gUnknown_08D98B28[] = INCBIN_U16("graphics/interface/status_tilemap3.bin.lz"); +const u16 gUnknown_08D98CC8[] = INCBIN_U16("graphics/interface/status_tilemap0.bin.lz"); + +const u8 gBagMaleTiles[] = INCBIN_U8("graphics/misc/bag_male.4bpp.lz"); +const u8 gBagFemaleTiles[] = INCBIN_U8("graphics/misc/bag_female.4bpp.lz"); +const u8 gBagPalette[] = INCBIN_U8("graphics/misc/bag.gbapal.lz"); + +const u8 gBagScreenMale_Pal[] = INCBIN_U8("graphics/interface/bag_screen_male.gbapal.lz"); +const u8 gBagScreenFemale_Pal[] = INCBIN_U8("graphics/interface/bag_screen_female.gbapal.lz"); + +const u8 gBagScreen_Gfx[] = INCBIN_U8("graphics/interface/bag_screen.4bpp.lz"); + +const u16 gUnknown_08D9A88C[] = INCBIN_U16("graphics/unknown/unknown_D9A88C.bin.lz"); + +const u8 gBattleFrontierGfx_PyramidBag[] = INCBIN_U8("graphics/interface/bag_pyramid.4bpp.lz"); +const u16 gUnknown_08D9ADD0[] = INCBIN_U16("graphics/interface/bag_pyramid.gbapal.lz"); // female palette is first and male is second. + +const u16 gUnknown_08D9AE04[] = INCBIN_U16("graphics/unknown/unknown_D9AE04.bin.lz"); + +const u8 gUnknown_08D9AF44[] = INCBIN_U8("graphics/unknown/unknown_D9AF44.gbapal.lz"); + +const u8 gBagSwapLineGfx[] = INCBIN_U8("graphics/interface/bag_swap.4bpp.lz"); +const u8 gBagSwapLinePal[] = INCBIN_U8("graphics/interface/bag_swap.gbapal.lz"); + +const u8 gBuyMenuFrame_Gfx[] = INCBIN_U8("graphics/interface/mart_frame.4bpp.lz"); +const u8 gMenuMoneyPal[] = INCBIN_U8("graphics/interface/mart_frame.gbapal.lz"); +const u16 gBuyMenuFrame_Tilemap[] = INCBIN_U16("graphics/interface/mart_frame.bin.lz"); + +const u8 gMenuMoneyGfx[] = INCBIN_U8("graphics/interface/money.4bpp.lz"); + +// Pokeblock + +const u8 gMenuPokeblock_Gfx[] = INCBIN_U8("graphics/interface/pokeblock_case_frame.4bpp.lz"); +const u8 gMenuPokeblock_Pal[] = INCBIN_U8("graphics/interface/pokeblock_case_frame.gbapal.lz"); + +const u8 gMenuPokeblockDevice_Gfx[] = INCBIN_U8("graphics/interface/pokeblock_device.4bpp.lz"); +const u8 gMenuPokeblockDevice_Pal[] = INCBIN_U8("graphics/interface/pokeblock_device.gbapal.lz"); + +const u16 gMenuPokeblock_Tilemap[] = INCBIN_U16("graphics/interface/pokeblock.bin.lz"); +const u8 gPokeblock_Gfx[] = INCBIN_U8("graphics/pokeblock/pokeblock.4bpp.lz"); +const u8 gPokeblockRed_Pal[] = INCBIN_U8("graphics/pokeblock/red.gbapal.lz"); +const u8 gPokeblockBlue_Pal[] = INCBIN_U8("graphics/pokeblock/blue.gbapal.lz"); +const u8 gPokeblockPink_Pal[] = INCBIN_U8("graphics/pokeblock/pink.gbapal.lz"); +const u8 gPokeblockGreen_Pal[] = INCBIN_U8("graphics/pokeblock/green.gbapal.lz"); +const u8 gPokeblockYellow_Pal[] = INCBIN_U8("graphics/pokeblock/yellow.gbapal.lz"); +const u8 gPokeblockPurple_Pal[] = INCBIN_U8("graphics/pokeblock/purple.gbapal.lz"); +const u8 gPokeblockIndigo_Pal[] = INCBIN_U8("graphics/pokeblock/indigo.gbapal.lz"); +const u8 gPokeblockBrown_Pal[] = INCBIN_U8("graphics/pokeblock/brown.gbapal.lz"); +const u8 gPokeblockLiteBlue_Pal[] = INCBIN_U8("graphics/pokeblock/liteblue.gbapal.lz"); +const u8 gPokeblockOlive_Pal[] = INCBIN_U8("graphics/pokeblock/olive.gbapal.lz"); +const u8 gPokeblockGray_Pal[] = INCBIN_U8("graphics/pokeblock/gray.gbapal.lz"); +const u8 gPokeblockBlack_Pal[] = INCBIN_U8("graphics/pokeblock/black.gbapal.lz"); +const u8 gPokeblockWhite_Pal[] = INCBIN_U8("graphics/pokeblock/white.gbapal.lz"); +const u8 gPokeblockGold_Pal[] = INCBIN_U8("graphics/pokeblock/gold.gbapal.lz"); + +const u16 gUnknown_08D9BA44[] = INCBIN_U16("graphics/interface/pokeblock_feeding_bg_map.bin.lz"); + +#include "data/graphics/berries.h" +#include "data/graphics/rayquaza_scene.h" +#include "data/graphics/items.h" +#include "data/graphics/decorations.h" + +const u8 gBattleAnimSpritePalette_282[] = INCBIN_U8("graphics/battle_anims/sprites/282.gbapal.lz"); +const u8 gBattleAnimSpriteSheet_282[] = INCBIN_U8("graphics/battle_anims/sprites/282.4bpp.lz"); + +const u8 gBattleAnimSpritePalette_270[] = INCBIN_U8("graphics/battle_anims/sprites/270.gbapal.lz"); +const u8 gBattleAnimSpriteSheet_270[] = INCBIN_U8("graphics/battle_anims/sprites/270.4bpp.lz"); + +const u8 gBattleAnimSpritePalette_271[] = INCBIN_U8("graphics/battle_anims/sprites/271.gbapal.lz"); +const u8 gBattleAnimSpriteSheet_271[] = INCBIN_U8("graphics/battle_anims/sprites/271.4bpp.lz"); + +const u16 gUnknown_08DBA518[] = INCBIN_U16("graphics/misc/cable_car_bg.gbapal"); +const u16 gCableCar_Pal[] = INCBIN_U16("graphics/misc/cable_car.gbapal"); + +const u8 gUnknown_08DBA5B8[] = INCBIN_U8("graphics/misc/cable_car_bg.4bpp.lz"); +const u8 gCableCar_Gfx[] = INCBIN_U8("graphics/misc/cable_car.4bpp.lz"); +const u8 gCableCarDoor_Gfx[] = INCBIN_U8("graphics/misc/cable_car_door.4bpp.lz"); +const u8 gCableCarCord_Gfx[] = INCBIN_U8("graphics/misc/cable_car_cord.4bpp.lz"); + +const u8 gRouletteMenuTiles[] = INCBIN_U8("graphics/roulette/window.4bpp.lz"); +const u16 gRouletteWheelTiles[] = INCBIN_U16("graphics/roulette/wheel.8bpp.lz"); +const u8 gRouletteCenter_Gfx[] = INCBIN_U8("graphics/roulette/center.4bpp.lz"); +const u8 gRouletteHeadersTiles[] = INCBIN_U8("graphics/roulette/headers.4bpp.lz"); +const u8 gRouletteCreditTiles[] = INCBIN_U8("graphics/roulette/credit.4bpp.lz"); +const u8 gRouletteNumbersTiles[] = INCBIN_U8("graphics/roulette/numbers.4bpp.lz"); +const u8 gRouletteMultiplierTiles[] = INCBIN_U8("graphics/roulette/multiplier.4bpp.lz"); + +#include "data/graphics/mail.h" + +const u16 gFrontierFactorySelectMenu_Pal[] = INCBIN_U16("graphics/battle_frontier/factory_menu1.gbapal"); +const u16 gFrontierFactorySelectMenu_Pal2[] = INCBIN_U16("graphics/battle_frontier/factory_menu2.gbapal"); + +const u8 gFrontierFactorySelectMenu_Gfx[] = INCBIN_U8("graphics/battle_frontier/factory_menu1.4bpp"); +const u8 gFrontierFactorySelectMenu_Gfx2[] = INCBIN_U8("graphics/battle_frontier/factory_menu2.4bpp"); + +const u16 gFrontierFactorySelectMenu_Tilemap[] = INCBIN_U16("graphics/battle_frontier/factory_menu.bin"); + +const u8 gFrontierPassMedals_Gfx[] = INCBIN_U8("graphics/frontier_pass/medals.4bpp.lz"); + +const u16 gFrontierPassCursor_Pal[] = INCBIN_U16("graphics/frontier_pass/cursor.gbapal"); + +const u16 gFrontierPassMapCursor_Pal[] = INCBIN_U16("graphics/frontier_pass/map_cursor.gbapal"); + +const u16 gFrontierPassMedalsSilver_Pal[] = INCBIN_U16("graphics/frontier_pass/silver.gbapal"); +const u16 gFrontierPassMedalsGold_Pal[] = INCBIN_U16("graphics/frontier_pass/gold.gbapal"); + +const u16 gPokedexText_Pal[] = INCBIN_U16("graphics/pokedex/text.gbapal"); + +const u16 gPokedexCaughtScreenFade_Pal[] = INCBIN_U16("graphics/pokedex/fade.gbapal"); + +const u16 gPokedexHoennBg_Pal[] = INCBIN_U16("graphics/pokedex/hoenn_bg.gbapal"); +const u16 gPokedexNationalBg_Pal[] = INCBIN_U16("graphics/pokedex/national_bg.gbapal"); + +const u8 gPokedexMenu_Gfx[] = INCBIN_U8("graphics/pokedex/menu.4bpp.lz"); +const u8 gPokedexMenu2_Gfx[] = INCBIN_U8("graphics/pokedex/menu2.4bpp.lz"); + +const u8 gUnused_PokedexNoBall[] = INCBIN_U8("graphics/pokedex/noball_unused.4bpp.lz"); + +const u16 gUnknown_08DC2A08[] = INCBIN_U16("graphics/pokedex/tilemap1.bin.lz"); +const u16 gUnknown_08DC2B1C[] = INCBIN_U16("graphics/pokedex/tilemap2.bin.lz"); +const u16 gUnknown_08DC2C5C[] = INCBIN_U16("graphics/pokedex/tilemap3.bin.lz"); +const u16 gUnknown_08DC2DAC[] = INCBIN_U16("graphics/pokedex/tilemap4.bin.lz"); +const u16 gUnknown_08DC2E6C[] = INCBIN_U16("graphics/pokedex/tilemap5.bin.lz"); +const u16 gUnknown_08DC2F5C[] = INCBIN_U16("graphics/pokedex/tilemap6.bin.lz"); +const u16 gUnknown_08DC2FEC[] = INCBIN_U16("graphics/pokedex/tilemap7.bin.lz"); +const u16 gUnknown_08DC3080[] = INCBIN_U16("graphics/pokedex/tilemap8.bin.lz"); +const u16 gUnknown_08DC3198[] = INCBIN_U16("graphics/pokedex/tilemap9.bin.lz"); + +const u16 gPokedexSearchMenu_Pal[] = INCBIN_U16("graphics/pokedex/search_menu.gbapal"); +const u8 gPokedexSearchMenu_Gfx[] = INCBIN_U8("graphics/pokedex/search_menu.4bpp.lz"); +const u16 gPokedexSearch1_Tilemap[] = INCBIN_U16("graphics/pokedex/search1.bin.lz"); +const u16 gPokedexSearch2_Tilemap[] = INCBIN_U16("graphics/pokedex/search2.bin.lz"); + +const u16 gSummaryScreenPowAcc_Tilemap[] = INCBIN_U16("graphics/interface/powacc_tilemap.bin"); + +const u16 gUnknown_08DC3C34[] = INCBIN_U16("graphics/interface/unk_tilemap.bin"); // probably trade summary screen related? + +const u16 gSummaryScreenWindow_Tilemap[] = INCBIN_U16("graphics/interface/summary.bin"); + +const u16 gIntroCopyright_Pal[] = INCBIN_U16("graphics/intro/copyright.gbapal"); +const u8 gIntroCopyright_Gfx[] = INCBIN_U8("graphics/intro/copyright.4bpp.lz"); +const u16 gIntroCopyright_Tilemap[] = INCBIN_U16("graphics/intro/copyright.bin.lz"); + +const u16 gPokedexAreaScreenAreaUnknown_Pal[] = INCBIN_U16("graphics/pokedex/area_unknown.gbapal"); +const u8 gPokedexAreaScreenAreaUnknown_Gfx[] = INCBIN_U8("graphics/pokedex/area_unknown.4bpp.lz"); + +// seems to be fire red leftovers, but the menu elements is reused in the item menu for TM descriptions. + +const u16 gFireRedMenuElements1_Pal[] = INCBIN_U16("graphics/interface_fr/menu1.gbapal"); +const u16 gFireRedMenuElements2_Pal[] = INCBIN_U16("graphics/interface_fr/menu2.gbapal"); +const u16 gFireRedMenuElements3_Pal[] = INCBIN_U16("graphics/interface_fr/menu3.gbapal"); +const u8 gFireRedMenuElements_Gfx[] = INCBIN_U8("graphics/interface_fr/menu.4bpp"); //the types are reused for item menu + +const u8 gBagMenuHMIcon_Gfx[] = INCBIN_U8("graphics/interface/hm.4bpp"); + +// contest link stuff, appears to be a set of tilemaps + +const u16 gUnknown_08DC63F8[] = INCBIN_U16("graphics/contest/clink_tilemap1.bin"); +const u16 gUnknown_08DC6420[] = INCBIN_U16("graphics/contest/clink_tilemap2.bin"); +const u16 gUnknown_08DC6448[] = INCBIN_U16("graphics/contest/clink_tilemap3.bin"); +const u16 gUnknown_08DC6470[] = INCBIN_U16("graphics/contest/clink_tilemap4.bin"); +const u16 gUnknown_08DC6498[] = INCBIN_U16("graphics/contest/clink_tilemap5.bin"); +const u16 gUnknown_08DC64AC[] = INCBIN_U16("graphics/contest/clink_tilemap6.bin"); +const u16 gUnknown_08DC64C0[] = INCBIN_U16("graphics/contest/clink_tilemap7.bin"); +const u16 gUnknown_08DC64D4[] = INCBIN_U16("graphics/contest/clink_tilemap8.bin"); +const u16 gUnknown_08DC64E8[] = INCBIN_U16("graphics/contest/clink_tilemap9.bin"); +const u16 gUnknown_08DC64FC[] = INCBIN_U16("graphics/contest/clink_tilemap10.bin"); +const u16 gUnknown_08DC6510[] = INCBIN_U16("graphics/contest/clink_tilemap11.bin"); + +// pokenav + +const u16 gPokenavCondition_Pal[] = INCBIN_U16("graphics/pokenav/condition.gbapal"); + +const u8 gPokenavCondition_Gfx[] = INCBIN_U8("graphics/pokenav/condition.4bpp.lz"); +const u16 gPokenavCondition_Tilemap[] = INCBIN_U16("graphics/pokenav/condition.bin.lz"); + +const u16 gPokenavOptions_Tilemap[] = INCBIN_U16("graphics/pokenav/options/options.bin"); +const u8 gPokenavOptions_Gfx[] = INCBIN_U8("graphics/pokenav/options/options.4bpp.lz"); +const u16 gPokenavOptions_Pal[] = INCBIN_U16("graphics/pokenav/options/options.gbapal"); + +const u16 gPokenavHeader_Pal[] = INCBIN_U16("graphics/pokenav/header.gbapal"); +const u8 gPokenavHeader_Gfx[] = INCBIN_U8("graphics/pokenav/header.4bpp.lz"); // TODO: use width 9 and makefile rule for cleanliness, make wasnt behaving, didnt want to apply num_tiles to this +const u16 gPokenavHeader_Tilemap[] = INCBIN_U16("graphics/pokenav/header.bin.lz"); + +const u16 gPokenavLeftHeader_Pal[] = INCBIN_U16("graphics/pokenav/left_headers/palette.gbapal"); +const u8 gPokenavLeftHeaderBeauty_Gfx[] = INCBIN_U8("graphics/pokenav/left_headers/beauty.4bpp.lz"); +const u8 gPokenavLeftHeaderSmart_Gfx[] = INCBIN_U8("graphics/pokenav/left_headers/smart.4bpp.lz"); +const u8 gPokenavLeftHeaderCondition_Gfx[] = INCBIN_U8("graphics/pokenav/left_headers/condition.4bpp.lz"); +const u8 gPokenavLeftHeaderCute_Gfx[] = INCBIN_U8("graphics/pokenav/left_headers/cute.4bpp.lz"); +const u8 gPokenavLeftHeaderMatchCall_Gfx[] = INCBIN_U8("graphics/pokenav/left_headers/match_call.4bpp.lz"); +const u8 gPokenavLeftHeaderMainMenu_Gfx[] = INCBIN_U8("graphics/pokenav/left_headers/main_menu.4bpp.lz"); +const u8 gPokenavLeftHeaderHoennMap_Gfx[] = INCBIN_U8("graphics/pokenav/left_headers/hoenn_map.4bpp.lz"); +const u8 gPokenavLeftHeaderRibbons_Gfx[] = INCBIN_U8("graphics/pokenav/left_headers/ribbons.4bpp.lz"); +const u8 gPokenavLeftHeaderSearch_Gfx[] = INCBIN_U8("graphics/pokenav/left_headers/search.4bpp.lz"); +const u8 gPokenavLeftHeaderTough_Gfx[] = INCBIN_U8("graphics/pokenav/left_headers/tough.4bpp.lz"); +const u8 gPokenavLeftHeaderCool_Gfx[] = INCBIN_U8("graphics/pokenav/left_headers/cool.4bpp.lz"); +const u8 gPokenavLeftHeaderParty_Gfx[] = INCBIN_U8("graphics/pokenav/left_headers/party.4bpp.lz"); + +const u16 gPokenavMessageBox_Pal[] = INCBIN_U16("graphics/pokenav/message.gbapal"); +const u8 gPokenavMessageBox_Gfx[] = INCBIN_U8("graphics/pokenav/message.4bpp.lz"); +const u16 gPokenavMessageBox_Tilemap[] = INCBIN_U16("graphics/pokenav/message.bin.lz"); + +const u16 gHoennMapZoomIcons_Pal[] = INCBIN_U16("graphics/pokenav/zoom.gbapal"); +const u8 gHoennMapZoomIcons_Gfx[] = INCBIN_U8("graphics/pokenav/zoom.4bpp.lz"); + +const u16 gPokenavConditionCancel_Pal[] = INCBIN_U16("graphics/pokenav/cancel.gbapal"); +const u8 gPokenavConditionCancel_Gfx[] = INCBIN_U8("graphics/pokenav/cancel.4bpp"); + +const u16 gPokenavConditionMarker_Pal[] = INCBIN_U16("graphics/pokenav/marker.gbapal"); +const u8 gPokenavConditionMarker_Gfx[] = INCBIN_U8("graphics/pokenav/marker.4bpp"); + +const u16 gBerryBlenderMiscPalette[] = INCBIN_U16("graphics/berry_blender/misc.gbapal"); + +const u16 gBerryBlenderArrowPalette[] = INCBIN_U16("graphics/berry_blender/arrow.gbapal"); + +const u8 gBerryBlenderBetaArrow_Gfx[] = INCBIN_U8("graphics/berry_blender/arrow_old.4bpp"); //unused + +const u8 gBerryBlenderMarubatsuTiles[] = INCBIN_U8("graphics/berry_blender/marubatsu.4bpp"); + +const u8 gBerryBlenderParticlesTiles[] = INCBIN_U8("graphics/berry_blender/particles.4bpp"); + +asm(".space 0x120"); + +const u8 gBerryBlenderCountdownNumbersTiles[] = INCBIN_U8("graphics/berry_blender/countdown_numbers.4bpp"); + +const u8 gBerryBlenderStartTiles[] = INCBIN_U8("graphics/berry_blender/start.4bpp"); + +asm(".space 0x200"); + +const u8 gBerryBlenderArrowTiles[] = INCBIN_U8("graphics/berry_blender/arrow.4bpp"); + +asm(".space 0x2C0"); + +const u16 gEasyChatCursor_Pal[] = INCBIN_U16("graphics/easy_chat/cursor.gbapal"); +const u8 gEasyChatCursor_Gfx[] = INCBIN_U8("graphics/easy_chat/cursor.4bpp.lz"); + +const u16 gEasyChatRightWindow_Pal[] = INCBIN_U16("graphics/easy_chat/rwindow.gbapal"); +const u8 gEasyChatRightWindow_Gfx[] = INCBIN_U8("graphics/easy_chat/rwindow.4bpp.lz"); + +const u8 gEasyChatMode_Gfx[] = INCBIN_U8("graphics/easy_chat/mode.4bpp.lz"); +const u16 gEasyChatMode_Pal[] = INCBIN_U16("graphics/easy_chat/mode.gbapal"); + +const u8 gEasyChatWindow_Gfx[] = INCBIN_U8("graphics/easy_chat/window.4bpp.lz"); // uses mode pal +const u16 gEasyChatWindow_Tilemap[] = INCBIN_U16("graphics/easy_chat/window.bin.lz"); + +const u16 gWallclockMale_Pal[] = INCBIN_U16("graphics/interface/wallclock_male.gbapal"); +const u16 gWallclockFemale_Pal[] = INCBIN_U16("graphics/interface/wallclock_female.gbapal"); +const u8 gWallclock_Gfx[] = INCBIN_U8("graphics/interface/wallclock.4bpp.lz"); +const u16 gUnknown_08DCC648[] = INCBIN_U16("graphics/interface/wallclock1.bin.lz"); +const u16 gUnknown_08DCC908[] = INCBIN_U16("graphics/interface/wallclock2.bin.lz"); + +const u16 gUsePokeblockCondition_Pal[] = INCBIN_U16("graphics/pokeblock/use_screen/condition.gbapal"); +const u8 gUsePokeblockCondition_Gfx[] = INCBIN_U8("graphics/pokeblock/use_screen/condition.4bpp.lz"); + +const u16 gUsePokeblockUpDown_Pal[] = INCBIN_U16("graphics/pokeblock/use_screen/updown.gbapal"); +const u8 gUsePokeblockUpDown_Gfx[] = INCBIN_U8("graphics/pokeblock/use_screen/updown.4bpp"); + +const u16 gUsePokeblockGraph_Pal[] = INCBIN_U16("graphics/pokeblock/use_screen/graph.gbapal"); +const u8 gUsePokeblockGraph_Gfx[] = INCBIN_U8("graphics/pokeblock/use_screen/graph.4bpp.lz"); + +const u16 gUsePokeblockGraph_Tilemap[] = INCBIN_U16("graphics/pokeblock/use_screen/graph.bin.lz"); +const u16 gUsePokeblockNatureWin_Pal[] = INCBIN_U16("graphics/pokeblock/use_screen/nature.gbapal"); + +#include "data/graphics/slot_machine.h" + +const u16 gUnknown_08DD19F8[] = INCBIN_U16("graphics/unknown/unknown_DD19F8.bin"); + +const u8 gUnknown_08DD1A18[] = INCBIN_U8("graphics/unknown/unknown_DD1A18.4bpp"); + +// trainer card + +const u16 gEmeraldTrainerCard0Star_Pal[] = INCBIN_U16("graphics/trainer_card/0star.gbapal"); +const u8 gEmeraldTrainerCard_Gfx[] = INCBIN_U8("graphics/trainer_card/card.4bpp.lz"); + +const u16 gUnknown_08DD1F78[] = INCBIN_U16("graphics/unknown/unknown_DD1F78.bin.lz"); +const u16 gUnknown_08DD2010[] = INCBIN_U16("graphics/unknown/unknown_DD2010.bin.lz"); +const u16 gUnknown_08DD21B0[] = INCBIN_U16("graphics/unknown/unknown_DD21B0.bin.lz"); +const u16 gUnknown_08DD228C[] = INCBIN_U16("graphics/unknown/unknown_DD228C.bin.lz"); + +const u16 gFireRedTrainerCard0Star_Pal[] = INCBIN_U16("graphics/trainer_card/0star_fr.gbapal"); +const u8 gFireRedTrainerCard_Gfx[] = INCBIN_U8("graphics/trainer_card/card_fr.4bpp.lz"); + +const u16 gUnknown_08DD2AE0[] = INCBIN_U16("graphics/unknown/unknown_DD2AE0.bin.lz"); +const u16 gUnknown_08DD2B78[] = INCBIN_U16("graphics/unknown/unknown_DD2B78.bin.lz"); +const u16 gUnknown_08DD2D30[] = INCBIN_U16("graphics/unknown/unknown_DD2D30.bin.lz"); +const u16 gUnknown_08DD2E5C[] = INCBIN_U16("graphics/unknown/unknown_DD2E5C.bin.lz"); + +// pokemon storage system + +const u8 gPSSMenu_Gfx[] = INCBIN_U8("graphics/pokemon_storage/menu.4bpp.lz"); +const u16 gPSSMenu_Pal[] = INCBIN_U16("graphics/pokemon_storage/menu.gbapal"); +const u16 gUnknown_08DD36C8[] = INCBIN_U16("graphics/unknown/unknown_DD36C8.bin.lz"); + +// naming screen + +const u16 gNamingScreenMenu_Pal[] = INCBIN_U16("graphics/naming_screen/menu.gbapal"); +const u8 gNamingScreenMenu_Gfx[] = INCBIN_U8("graphics/naming_screen/menu.4bpp.lz"); +const u8 gNamingScreenRWindow_Gfx[] = INCBIN_U8("graphics/naming_screen/rwindow.4bpp"); +const u8 gNamingScreenROptions_Gfx[] = INCBIN_U8("graphics/naming_screen/roptions.4bpp"); +const u8 gNamingScreenCursor_Gfx[] = INCBIN_U8("graphics/naming_screen/cursor.4bpp"); +const u8 gNamingScreenKeyboardButton_Gfx[] = INCBIN_U8("graphics/naming_screen/keyboard_button.4bpp"); + +const u8 gNamingScreenRightPointingTriangleTiles[] = INCBIN_U8("graphics/naming_screen/right_pointing_triangle.4bpp"); +const u8 gNamingScreenUnderscoreTiles[] = INCBIN_U8("graphics/naming_screen/underscore.4bpp"); + +const u16 gUnknown_08DD4544[] = INCBIN_U16("graphics/unknown/unknown_DD4544.bin.lz"); +const u16 gUnknown_08DD4620[] = INCBIN_U16("graphics/unknown/unknown_DD4620.bin.lz"); +const u16 gUnknown_08DD46E0[] = INCBIN_U16("graphics/unknown/unknown_DD46E0.bin.lz"); +const u16 gUnknown_08DD47A0[] = INCBIN_U16("graphics/unknown/unknown_DD47A0.bin.lz"); + +// link + +const u16 gLinkMiscMenu_Pal[] = INCBIN_U16("graphics/link/misc.gbapal"); +const u8 gLinkMiscMenu_Gfx[] = INCBIN_U8("graphics/link/misc.4bpp.lz"); +const u16 gLinkMiscMenu_Tilemap[] = INCBIN_U16("graphics/link/misc.bin.lz"); + +const u16 gUnknown_08DD4BB0[] = INCBIN_U16("graphics/link/link1.gbapal"); +const u16 gUnknown_08DD4BD0[] = INCBIN_U16("graphics/link/link2.gbapal"); + +const u8 gUnknown_08DD4BF0[] = INCBIN_U8("graphics/link/link_winedge.4bpp.lz"); +const u16 gUnknown_08DD4C4C[] = INCBIN_U16("graphics/link/link_winedge.bin.lz"); + +const u8 gUnknown_08DD4CF8[] = INCBIN_U8("graphics/interface/unk_change_case.4bpp.lz"); + +const u16 gTilesetPalettes_General[][16] = +{ + INCBIN_U16("data/tilesets/primary/general/palettes/00.gbapal"), + INCBIN_U16("data/tilesets/primary/general/palettes/01.gbapal"), + INCBIN_U16("data/tilesets/primary/general/palettes/02.gbapal"), + INCBIN_U16("data/tilesets/primary/general/palettes/03.gbapal"), + INCBIN_U16("data/tilesets/primary/general/palettes/04.gbapal"), + INCBIN_U16("data/tilesets/primary/general/palettes/05.gbapal"), + INCBIN_U16("data/tilesets/primary/general/palettes/06.gbapal"), + INCBIN_U16("data/tilesets/primary/general/palettes/07.gbapal"), + INCBIN_U16("data/tilesets/primary/general/palettes/08.gbapal"), + INCBIN_U16("data/tilesets/primary/general/palettes/09.gbapal"), + INCBIN_U16("data/tilesets/primary/general/palettes/10.gbapal"), + INCBIN_U16("data/tilesets/primary/general/palettes/11.gbapal"), + INCBIN_U16("data/tilesets/primary/general/palettes/12.gbapal"), + INCBIN_U16("data/tilesets/primary/general/palettes/13.gbapal"), + INCBIN_U16("data/tilesets/primary/general/palettes/14.gbapal"), + INCBIN_U16("data/tilesets/primary/general/palettes/15.gbapal"), +}; + +const u8 gTilesetTiles_General[] = INCBIN_U8("data/tilesets/primary/general/tiles.4bpp.lz"); + +// trade/egg hatch + +const u16 gTradeGba_Pal[] = INCBIN_U16("graphics/link/gba.gbapal"); +const u16 gTradeGba2_Pal[] = INCBIN_U16("graphics/link/gba_pal2.gbapal"); +const u8 gTradeGba_Gfx[] = INCBIN_U8("graphics/link/gba.4bpp"); + +// 8DD8760 +asm(".space 0x20"); //blank palette?? + +#include "data/graphics/berry_fix.h" + +// more trade stuff? + +const u16 gUnknown_08DDB3E4[] = INCBIN_U16("graphics/trade/menu.gbapal"); + +const u16 gUnknown_08DDB444[] = INCBIN_U16("graphics/unknown/unknown_DDB444.gbapal"); + +const u8 gUnknown_08DDB464[] = INCBIN_U8("graphics/trade/menu.4bpp"); + +const u8 gUnknown_08DDC6E4[] = INCBIN_U8("graphics/trade/buttons.4bpp"); + +const u16 gUnused_DDCEE4[] = INCBIN_U16("graphics/unused/unused_DDCEE4.bin"); + +const u16 gUnknown_08DDCF04[] = INCBIN_U16("graphics/unknown/unknown_DDCF04.bin"); + +const u16 gUnknown_08DDD704[] = INCBIN_U16("graphics/unknown/unknown_DDD704.bin"); // textbox tilemap?? + +const u16 gMessageBox_Pal[] = INCBIN_U16("graphics/text_window/message_box.gbapal"); +const u8 gMessageBox_Gfx[] = INCBIN_U8("graphics/text_window/message_box.4bpp"); + +const u8 gWallpaperIcon_Cross[] = INCBIN_U8("graphics/pokemon_storage/cross_icon.4bpp.lz"); +const u8 gWallpaperIcon_Bolt[] = INCBIN_U8("graphics/pokemon_storage/bolt_icon.4bpp.lz"); +const u8 gWallpaperIcon_Plusle[] = INCBIN_U8("graphics/pokemon_storage/plusle_icon.4bpp.lz"); + +const u16 gWallpaperPalettes_Horizontal[][16] = +{ + INCBIN_U16("graphics/pokemon_storage/friends_frame2.gbapal"), + INCBIN_U16("graphics/pokemon_storage/horizontal_bg.gbapal"), +}; + +const u8 gWallpaperTiles_Horizontal[] = INCBIN_U8("graphics/pokemon_storage/horizontal.4bpp.lz"); +const u16 gWallpaperTilemap_Horizontal[] = INCBIN_U16("graphics/pokemon_storage/horizontal.bin.lz"); + +const u16 gWallpaperPalettes_Ribbon[][16] = +{ + INCBIN_U16("graphics/pokemon_storage/ribbon_frame.gbapal"), + INCBIN_U16("graphics/pokemon_storage/ribbon_bg.gbapal"), +}; + +const u8 gWallpaperTiles_Ribbon[] = INCBIN_U8("graphics/pokemon_storage/ribbon.4bpp.lz"); +const u16 gWallpaperTilemap_Ribbon[] = INCBIN_U16("graphics/pokemon_storage/ribbon.bin.lz"); + +// pokenav + +const u16 gUnknown_08DDE010[] = INCBIN_U16("graphics/pokenav/ribbons.gbapal"); +const u8 gUnknown_08DDE030[] = INCBIN_U8("graphics/pokenav/ribbons.4bpp.lz"); +const u16 gUnknown_08DDE12C[] = INCBIN_U16("graphics/pokenav/ribbons.bin.lz"); + +const u16 gMonIconPalettes[][16] = +{ + INCBIN_U16("graphics/pokemon/icon_palettes/icon_palette_0.gbapal"), + INCBIN_U16("graphics/pokemon/icon_palettes/icon_palette_1.gbapal"), + INCBIN_U16("graphics/pokemon/icon_palettes/icon_palette_2.gbapal"), +}; + +const u16 gTitleScreenBgPalettes[] = INCBIN_U16("graphics/title_screen/pokemon_logo.gbapal"); +const u16 gTitleScreenBgPalettes2[] = INCBIN_U16("graphics/title_screen/rayquaza_and_clouds.gbapal"); + +const u16 gTitleScreenEmeraldVersionPal[] = INCBIN_U16("graphics/title_screen/emerald_version.gbapal"); + +const u16 gUnknown_08DDE458[] = INCBIN_U16("graphics/title_screen/title_screen1.bin.lz"); + +const u16 gTitleScreenPokemonLogoGfx[] = INCBIN_U16("graphics/title_screen/pokemon_logo.8bpp.lz"); + +const u16 gTitleScreenEmeraldVersionGfx[] = INCBIN_U16("graphics/title_screen/emerald_version.8bpp.lz"); + +const u16 gTitleScreenPressStartPal[] = INCBIN_U16("graphics/title_screen/press_start.gbapal"); +const u8 gTitleScreenPressStartGfx[] = INCBIN_U8("graphics/title_screen/press_start.4bpp.lz"); + +const u16 gUnknown_08DE0644[] = INCBIN_U16("graphics/title_screen/title_screen2.bin.lz"); + +// more trainer card stuff + +const u16 gUnknown_08DE07C8[] = INCBIN_U16("graphics/frontier_pass/tiles.gbapal");// size in LoadPalette calls is reported as 0xD0 << 1, which is 0x1A0, but palette is only 0x100 bytes long so it loads garbage as well +const u8 gUnknown_08DE08C8[] = INCBIN_U8("graphics/frontier_pass/tiles.4bpp.lz"); +const u16 gUnknown_08DE2084[] = INCBIN_U16("graphics/frontier_pass/tiles2.8bpp.lz"); +const u16 gUnknown_08DE3060[] = INCBIN_U16("graphics/frontier_pass/tiles.bin.lz"); +const u16 gUnknown_08DE3350[] = INCBIN_U16("graphics/frontier_pass/tilemap1.bin"); +const u16 gUnknown_08DE3374[] = INCBIN_U16("graphics/frontier_pass/tilemap2.bin"); + +// berry crusher + +const u16 gUnknown_08DE3398[] = INCBIN_U16("graphics/berry_crusher/tiles.gbapal"); +const u8 gUnknown_08DE34B8[] = INCBIN_U8("graphics/berry_crusher/tiles.4bpp.lz"); +const u16 gUnknown_08DE3FD4[] = INCBIN_U16("graphics/berry_crusher/tiles.bin.lz"); + +// random garbage at the end. +asm(".space 0x54BAC \n\ + .byte 0x0D, 0x00, 0x58, 0x02 \n\ + .space 0x1145 \n\ + .byte 0x02 \n\ + .space 0x3242 \n\ + .byte 0x40 \n\ + .space 0x13"); diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c index f5c4ba491..33c85d448 100644 --- a/src/hall_of_fame.c +++ b/src/hall_of_fame.c @@ -5,6 +5,7 @@ #include "sprite.h" #include "pokemon.h" #include "text.h" +#include "text_window.h" #include "malloc.h" #include "gpu_regs.h" #include "main.h" @@ -26,6 +27,7 @@ #include "event_data.h" #include "overworld.h" #include "menu.h" +#include "trainer_pokemon_sprites.h" struct HallofFameMon { @@ -81,18 +83,10 @@ extern const u8 gText_MainMenuTime[]; extern const u8 gContestConfetti_Gfx[]; extern const u8 gContestConfetti_Pal[]; -extern void NewMenuHelpers_DrawDialogueFrame(u8, u8); extern void sub_8175620(void); extern u8 TrySavingData(u8); -extern u8 sub_818D3E4(u16 species, u32 trainerId, u32 personality, u8 flags, s16 x, s16 y, u8, u16); extern void sub_8197434(u8, u8); extern u16 sub_818D97C(u8 playerGender, u8); -extern u16 sub_818D8AC(u16, u8, s16, s16, u8, u16); -extern const void* stdpal_get(u8); -extern void LoadWindowGfx(u8, u8, u16, u8); -extern u16 sub_818D820(u16); -extern u16 sub_818D8F0(u16); -extern u16 sub_818D7D8(u16 species, u32 trainerId, u32 personality, u8 arg3, s16 sp0, s16 sp1, u8 sp2, u16 sp3); extern void sub_8198204(u8 *dst, const u8 *src, u8, u8, u8); extern bool8 sub_80F9C30(void); extern void sub_8198314(void); @@ -102,8 +96,6 @@ extern void sub_80F9BF4(u16, u16, u8); extern void sub_81980F0(u8, u8, u8, u8, u16); extern void sub_80F9BCC(u16, u16, u8); extern bool8 sub_80F9C1C(void); -extern u16 SpeciesToPokedexNum(u16 species); -extern void dp13_810BB8C(void); extern void sub_81971D0(void); extern void sub_8197200(void); extern void sub_8152254(void); @@ -611,7 +603,7 @@ static void Task_Hof_DisplayMon(u8 taskId) if (currMon->species == SPECIES_EGG) field6 += 10; - spriteId = sub_818D3E4(currMon->species, currMon->tid, currMon->personality, 1, xPos, yPos, currMonId, 0xFFFF); + spriteId = CreatePicSprite2(currMon->species, currMon->tid, currMon->personality, 1, xPos, yPos, currMonId, 0xFFFF); gSprites[spriteId].tDestinationX = field4; gSprites[spriteId].tDestinationY = field6; gSprites[spriteId].data[0] = 0; @@ -723,7 +715,7 @@ static void sub_8173EE4(u8 taskId) ShowBg(0); ShowBg(1); ShowBg(3); - gTasks[taskId].tPlayerSpriteID = sub_818D8AC(sub_818D97C(gSaveBlock2Ptr->playerGender, 1), 1, 120, 72, 6, 0xFFFF); + gTasks[taskId].tPlayerSpriteID = CreateTrainerPicSprite(PlayerGenderToFrontTrainerPicId_Debug(gSaveBlock2Ptr->playerGender, TRUE), 1, 120, 72, 6, 0xFFFF); AddWindow(&sHof_WindowTemplate); LoadWindowGfx(1, gSaveBlock2Ptr->optionsWindowFrameType, 0x21D, 0xD0); LoadPalette(stdpal_get(1), 0xE0, 0x20); @@ -780,11 +772,11 @@ static void Task_Hof_HandleExit(u8 taskId) if (spriteId != 0xFF) { FreeOamMatrix(gSprites[spriteId].oam.matrixNum); - sub_818D820(spriteId); + FreeAndDestroyMonPicSprite(spriteId); } } - sub_818D8F0(gTasks[taskId].tPlayerSpriteID); + FreeAndDestroyTrainerPicSprite(gTasks[taskId].tPlayerSpriteID); HideBg(0); HideBg(1); HideBg(3); @@ -956,7 +948,7 @@ static void Task_HofPC_DrawSpritesPrintText(u8 taskId) if (currMon->species == SPECIES_EGG) posY += 10; - spriteId = sub_818D7D8(currMon->species, currMon->tid, currMon->personality, 1, posX, posY, i, 0xFFFF); + spriteId = CreateMonPicSprite_HandleDeoxys(currMon->species, currMon->tid, currMon->personality, 1, posX, posY, i, 0xFFFF); gSprites[spriteId].oam.priority = 1; gTasks[taskId].tMonSpriteId(i) = spriteId; } @@ -1026,7 +1018,7 @@ static void Task_HofPC_HandleInput(u8 taskId) u8 spriteId = gTasks[taskId].tMonSpriteId(i); if (spriteId != 0xFF) { - sub_818D820(spriteId); + FreeAndDestroyMonPicSprite(spriteId); gTasks[taskId].tMonSpriteId(i) = 0xFF; } } @@ -1087,7 +1079,7 @@ static void Task_HofPC_HandleExit(u8 taskId) u16 spriteId = gTasks[taskId].tMonSpriteId(i); if (spriteId != 0xFF) { - sub_818D820(spriteId); + FreeAndDestroyMonPicSprite(spriteId); gTasks[taskId].tMonSpriteId(i) = 0xFF; } } @@ -1305,7 +1297,7 @@ static void sub_8174F70(void) ResetTasks(); ResetSpriteData(); reset_temp_tile_data_buffers(); - dp13_810BB8C(); + ResetAllPicSprites(); FreeAllSpritePalettes(); gReservedSpritePaletteCount = 8; LoadCompressedObjectPic(&sHallOfFame_ConfettiSpriteSheet); diff --git a/src/heal_location.c b/src/heal_location.c index aa90fe1ae..b378e8e8c 100644 --- a/src/heal_location.c +++ b/src/heal_location.c @@ -1,83 +1,37 @@ - -// Includes #include "global.h" -#include "constants/maps.h" #include "heal_location.h" +#include "constants/maps.h" -#define HEAL_LOCATION(map, x, y) {MAP_GROUP(map), MAP_NUM(map), x, y} - -// Static type declarations - -// Static RAM declarations - -// Static ROM declarations - -// .rodata - -static const struct HealLocation sHealLocations[] = { - HEAL_LOCATION(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F, 4, 2), - HEAL_LOCATION(LITTLEROOT_TOWN_MAYS_HOUSE_2F, 4, 2), - HEAL_LOCATION(PETALBURG_CITY, 20, 17), - HEAL_LOCATION(SLATEPORT_CITY, 19, 20), - HEAL_LOCATION(MAUVILLE_CITY, 22, 6), - HEAL_LOCATION(RUSTBORO_CITY, 16, 39), - HEAL_LOCATION(FORTREE_CITY, 5, 7), - HEAL_LOCATION(LILYCOVE_CITY, 24, 15), - HEAL_LOCATION(MOSSDEEP_CITY, 28, 17), - HEAL_LOCATION(SOOTOPOLIS_CITY, 43, 32), - HEAL_LOCATION(EVER_GRANDE_CITY, 27, 49), - HEAL_LOCATION(LITTLEROOT_TOWN, 5, 9), - HEAL_LOCATION(LITTLEROOT_TOWN, 14, 9), - HEAL_LOCATION(OLDALE_TOWN, 6, 17), - HEAL_LOCATION(DEWFORD_TOWN, 2, 11), - HEAL_LOCATION(LAVARIDGE_TOWN, 9, 7), - HEAL_LOCATION(FALLARBOR_TOWN, 14, 8), - HEAL_LOCATION(VERDANTURF_TOWN, 16, 4), - HEAL_LOCATION(PACIFIDLOG_TOWN, 8, 16), - HEAL_LOCATION(EVER_GRANDE_CITY, 18, 6), - HEAL_LOCATION(SOUTHERN_ISLAND_EXTERIOR, 15, 20), - HEAL_LOCATION(BATTLE_FRONTIER_OUTSIDE_EAST, 3, 52) -}; - -#define NUM_HEAL_LOCATIONS (ARRAY_COUNT(sHealLocations)) - -// .text +#include "data/heal_locations.h" -static u32 GetHealLocationIndexFromMapGroupAndNum(u16 mapGroup, u16 mapNum) +u32 GetHealLocationIndexByMap(u16 mapGroup, u16 mapNum) { u32 i; - for (i = 0; i < NUM_HEAL_LOCATIONS; i++) + for (i = 0; i < ARRAY_COUNT(sHealLocations); i++) { if (sHealLocations[i].group == mapGroup && sHealLocations[i].map == mapNum) - { return i + 1; - } } return 0; } -const struct HealLocation *GetHealLocationPointerFromMapGroupAndNum(u16 mapGroup, u16 mapNum) +const struct HealLocation *GetHealLocationByMap(u16 mapGroup, u16 mapNum) { - u32 loc; + u32 index = GetHealLocationIndexByMap(mapGroup, mapNum); - loc = GetHealLocationIndexFromMapGroupAndNum(mapGroup, mapNum); - if (loc == 0) - { + if (index == 0) return NULL; - } - return &sHealLocations[loc - 1]; + else + return &sHealLocations[index - 1]; } -const struct HealLocation *GetHealLocationPointer(u32 loc) +const struct HealLocation *GetHealLocation(u32 index) { - if (loc == 0) - { + if (index == 0) return NULL; - } - if (loc > NUM_HEAL_LOCATIONS) - { + else if (index > ARRAY_COUNT(sHealLocations)) return NULL; - } - return &sHealLocations[loc - 1]; + else + return &sHealLocations[index - 1]; } diff --git a/src/item.c b/src/item.c index c94f29910..b4a2fd6f0 100644 --- a/src/item.c +++ b/src/item.c @@ -10,6 +10,7 @@ #include "item_menu.h" #include "strings.h" #include "load_save.h" +#include "battle_pyramid_bag.h" extern bool8 InBattlePyramid(void); extern u16 gUnknown_0203CF30[]; @@ -752,9 +753,8 @@ u16 BagGetQuantityByPocketPosition(u8 pocketId, u16 pocketPos) static void SwapItemSlots(struct ItemSlot *a, struct ItemSlot *b) { - struct ItemSlot temp = *a; - *a = *b; - *b = temp; + struct ItemSlot temp; + SWAP(*a, *b, temp); } void CompactItemsInBagPocket(struct BagPocket *bagPocket) @@ -845,8 +845,8 @@ u16 CountTotalItemQuantityInBag(u16 itemId) static bool8 CheckPyramidBagHasItem(u16 itemId, u16 count) { u8 i; - u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.chosenLvl]; - u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.chosenLvl]; + u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode]; + u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode]; for (i = 0; i < PYRAMID_BAG_ITEMS_COUNT; i++) { @@ -867,8 +867,8 @@ static bool8 CheckPyramidBagHasItem(u16 itemId, u16 count) static bool8 CheckPyramidBagHasSpace(u16 itemId, u16 count) { u8 i; - u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.chosenLvl]; - u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.chosenLvl]; + u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode]; + u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode]; for (i = 0; i < PYRAMID_BAG_ITEMS_COUNT; i++) { @@ -890,8 +890,8 @@ bool8 AddPyramidBagItem(u16 itemId, u16 count) { u16 i; - u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.chosenLvl]; - u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.chosenLvl]; + u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode]; + u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode]; u16 *newItems = Alloc(PYRAMID_BAG_ITEMS_COUNT * sizeof(u16)); u8 *newQuantities = Alloc(PYRAMID_BAG_ITEMS_COUNT * sizeof(u8)); @@ -963,10 +963,10 @@ bool8 RemovePyramidBagItem(u16 itemId, u16 count) { u16 i; - u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.chosenLvl]; - u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.chosenLvl]; + u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode]; + u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode]; - i = gUnknown_0203CF30[3] + gUnknown_0203CF30[4]; + i = gPyramidBagCursorData.cursorPosition + gPyramidBagCursorData.scrollPosition; if (items[i] == itemId && quantities[i] >= count) { quantities[i] -= count; diff --git a/src/item_menu.c b/src/item_menu.c index d134e6375..082fe5558 100755 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -149,14 +149,57 @@ void sub_81AD6FC(u8 taskId); // .rodata -const struct BgTemplate gUnknown_08613F90[3] = { - {0, 0, 31, 0, 0, 1, 0}, - {1, 0, 30, 0, 0, 0, 0}, - {2, 3, 29, 0, 0, 2, 0} +const struct BgTemplate gUnknown_08613F90[3] = +{ + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0, + }, + { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0, + }, + { + .bg = 2, + .charBaseIndex = 3, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0, + }, }; -const struct ListMenuTemplate gUnknown_08613F9C = { - NULL, bag_menu_change_item_callback, sub_81AB520, 0, 0, 0, 0, 8, 0, 1, 1, 0, 3, 0, 0, 0, 7, 0 +const struct ListMenuTemplate gUnknown_08613F9C = +{ + .items = NULL, + .moveCursorFunc = bag_menu_change_item_callback, + .itemPrintFunc = sub_81AB520, + .totalItems = 0, + .maxShowed = 0, + .windowId = 0, + .header_X = 0, + .item_X = 8, + .cursor_X = 0, + .upText_Y = 1, + .cursorPal = 1, + .fillValue = 0, + .cursorShadowPal = 3, + .lettersSpacing = 0, + .itemVerticalPadding = 0, + .scrollMultiple = 0, + .fontId = 7, + .cursorKind = 0 }; const struct MenuAction gUnknown_08613FB4[] = { @@ -221,27 +264,157 @@ const u8 gUnknown_08614164[][3] = { {0, 14, 10} }; -const struct WindowTemplate gUnknown_08614174[] = { - {0, 14, 2, 15, 16, 1, 0x27}, - {0, 0, 13, 14, 6, 1, 0x117}, - {0, 4, 1, 8, 2, 1, 0x1A1}, - {0, 1, 13, 5, 6, 12, 0x16B}, - {0, 7, 13, 4, 6, 12, 0x189}, - {1, 2, 15, 27, 4, 15, 0x1B1}, - {0xFF, 0, 0, 0, 0, 0, 0} +const struct WindowTemplate gUnknown_08614174[] = +{ + { + .priority = 0, + .tilemapLeft = 14, + .tilemapTop = 2, + .width = 15, + .height = 16, + .paletteNum = 1, + .baseBlock = 0x27, + }, + { + .priority = 0, + .tilemapLeft = 0, + .tilemapTop = 13, + .width = 14, + .height = 6, + .paletteNum = 1, + .baseBlock = 0x117, + }, + { + .priority = 0, + .tilemapLeft = 4, + .tilemapTop = 1, + .width = 8, + .height = 2, + .paletteNum = 1, + .baseBlock = 0x1A1, + }, + { + .priority = 0, + .tilemapLeft = 1, + .tilemapTop = 13, + .width = 5, + .height = 6, + .paletteNum = 12, + .baseBlock = 0x16B, + }, + { + .priority = 0, + .tilemapLeft = 7, + .tilemapTop = 13, + .width = 4, + .height = 6, + .paletteNum = 12, + .baseBlock = 0x189, + }, + { + .priority = 1, + .tilemapLeft = 2, + .tilemapTop = 15, + .width = 27, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x1B1, + }, + DUMMY_WIN_TEMPLATE, }; -const struct WindowTemplate gUnknown_086141AC[] = { - {1, 22, 17, 7, 2, 15, 0x21D}, - {1, 22, 15, 7, 4, 15, 0x21D}, - {1, 15, 15, 14, 4, 15, 0x21D}, - {1, 15, 13, 14, 6, 15, 0x21D}, - {1, 2, 15, 27, 4, 15, 0x1B1}, - {1, 24, 15, 5, 4, 15, 0x21D}, - {1, 21, 9, 5, 4, 15, 0x21D}, - {1, 24, 17, 5, 2, 15, 0x21D}, - {1, 18, 11, 10, 2, 15, 0x245}, - {1, 1, 1, 10, 2, 15, 0x231} +const struct WindowTemplate gUnknown_086141AC[] = +{ + { + .priority = 1, + .tilemapLeft = 22, + .tilemapTop = 17, + .width = 7, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x21D, + }, + { + .priority = 1, + .tilemapLeft = 22, + .tilemapTop = 15, + .width = 7, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x21D, + }, + { + .priority = 1, + .tilemapLeft = 15, + .tilemapTop = 15, + .width = 14, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x21D, + }, + { + .priority = 1, + .tilemapLeft = 15, + .tilemapTop = 13, + .width = 14, + .height = 6, + .paletteNum = 15, + .baseBlock = 0x21D, + }, + { + .priority = 1, + .tilemapLeft = 2, + .tilemapTop = 15, + .width = 27, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x1B1, + }, + { + .priority = 1, + .tilemapLeft = 24, + .tilemapTop = 15, + .width = 5, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x21D, + }, + { + .priority = 1, + .tilemapLeft = 21, + .tilemapTop = 9, + .width = 5, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x21D, + }, + { + .priority = 1, + .tilemapLeft = 24, + .tilemapTop = 17, + .width = 5, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x21D, + }, + { + .priority = 1, + .tilemapLeft = 18, + .tilemapTop = 11, + .width = 10, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x245, + }, + { + .priority = 1, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 10, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x231, + }, }; // .text @@ -675,7 +848,7 @@ void sub_81AB520(u8 rboxId, int item_index_in_pocket, u8 a) } itemId = BagGetItemIdByPocketPosition(gUnknown_0203CE58.pocket + 1, item_index_in_pocket); itemQuantity = BagGetQuantityByPocketPosition(gUnknown_0203CE58.pocket + 1, item_index_in_pocket); - if ((u16)(itemId - ITEM_HM01) <= 7) + if (itemId >= ITEM_HM01 && itemId <= ITEM_HM08) BlitBitmapToWindow(rboxId, gBagMenuHMIcon_Gfx, 8, a - 1, 16, 16); if (gUnknown_0203CE58.pocket == 3) { @@ -701,10 +874,10 @@ void sub_81AB520(u8 rboxId, int item_index_in_pocket, u8 a) void bag_menu_print_description_box_text(int a) { - u8* str; + const u8 *str; if (a != -2) { - str = (u8*)ItemId_GetDescription(BagGetItemIdByPocketPosition(gUnknown_0203CE58.pocket + 1, a)); + str = ItemId_GetDescription(BagGetItemIdByPocketPosition(gUnknown_0203CE58.pocket + 1, a)); } else { @@ -1369,7 +1542,7 @@ void Task_HandleInBattleItemMenuInput(u8 taskId) { if (sub_81221EC() != TRUE) { - s8 r4 = ProcessMenuInputNoWrapAround(); + s8 r4 = Menu_ProcessInputNoWrapAround(); switch (r4) { case -2: @@ -2103,9 +2276,9 @@ void setup_bag_menu_textboxes(void) InitWindows(gUnknown_08614174); DeactivateAllTextPrinters(); - LoadUserWindowBorderGfx(0, 1, -32); - LoadMessageBoxGfx(0, 10, -48); - sub_819A2BC(-64, 1); + LoadUserWindowBorderGfx(0, 1, 0xE0); + LoadMessageBoxGfx(0, 10, 0xD0); + sub_819A2BC(0xC0, 1); LoadPalette(&gUnknown_0860F074, 0xF0, 0x20); for (i = 0; i < 3; i++) { diff --git a/src/item_use.c b/src/item_use.c index 9031338dd..ea8206502 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -29,44 +29,26 @@ #include "string_util.h" #include "task.h" #include "text.h" +#include "strings.h" +#include "pokeblock.h" +#include "menu.h" +#include "item_menu.h" +#include "battle_pyramid_bag.h" -extern void(**gUnknown_0203CE54)(void); -extern void(**gUnknown_0203CF2C)(void); extern void(*gUnknown_0203A0F4)(u8 taskId); extern void(*gUnknown_085920D8[])(void); extern void (*gUnknown_03006328)(u8, u16, TaskFunc); extern void unknown_ItemMenu_Confirm(u8 taskId); extern void sub_81C5B14(u8 taskId); -extern u8 gText_DadsAdvice[]; -extern u8 gText_CantDismountBike[]; -extern void sub_8197434(u8 a, u8 b); extern void ScriptUnfreezeEventObjects(void); extern void ItemUseOutOfBattle_TMHM(u8 a); extern void ItemUseOutOfBattle_EvolutionStone(u8 b); -extern void bag_menu_mail_related(void); -extern void OpenPokeblockCase(u8 a, void(*b)(void)); -extern void overworld_free_bg_tilemaps(void); -extern bool32 Overworld_IsBikingAllowed(void); extern bool8 IsPlayerFacingSurfableFishableWater(void); extern bool8 sub_81221AC(void); -extern u8 gText_ItemFinderNothing[]; -extern u8 gText_ItemFinderNearby[]; -extern u8 gText_ItemFinderOnTop[]; -extern u8 gText_CoinCase[]; -extern u8 gText_PowderQty[]; extern u8 gUnknown_085920E4[]; extern u8 Route102_EventScript_274482[]; extern u8 Route102_EventScript_2744C0[]; extern u8 BattleFrontier_OutsideEast_EventScript_242CFC[]; -extern u8 gText_BootedUpHM[]; -extern u8 gText_BootedUpTM[]; -extern u8 gText_TMHMContainedVar1[]; -extern u8 gText_PlayerUsedVar2[]; -extern u8 gText_RepelEffectsLingered[]; -extern u8 gText_UsedVar2WildLured[]; -extern u8 gText_UsedVar2WildRepelled[]; -extern u8 gText_BoxFull[]; -extern u8 gText_WontHaveEffect[]; extern int sub_80247BC(void); extern struct MapHeader* mapconnection_get_mapheader(struct MapConnection *connection); extern void SetUpItemUseCallback(u8 taskId); @@ -86,7 +68,6 @@ extern void sub_81C59BC(void); extern void sub_81AB9A8(u8); extern void sub_81ABA88(u8); extern void sub_80B7CC8(void); -extern void Overworld_ResetStateAfterDigEscRope(void); extern u8* sub_806CF78(u16); extern void sub_81B89F0(void); extern u8 GetItemEffectType(u16); @@ -115,8 +96,7 @@ void sub_80FE124(u8 taskId); void sub_80FE164(u8 taskId); void DisplayItemMessage(u8 taskId, u8 a, const u8* str, void(*callback)(u8 taskId)); -void DisplayItemMessageInBattlePyramid(u8 taskId, u8* str, void(*callback)(u8 taskId)); -void DisplayItemMessageOnField(u8 taskId, u8* str, void(*callback)(u8 taskId)); +void DisplayItemMessageOnField(u8 taskId, const u8* str, void(*callback)(u8 taskId)); void sub_81C6714(u8 taskId); void CleanUpAfterFailingToUseRegisteredKeyItemOnField(u8 taskId); void StartFishing(u8 a); @@ -137,12 +117,12 @@ void SetUpItemUseCallback(u8 taskId) type = ItemId_GetType(gSpecialVar_ItemId) - 1; if (!InBattlePyramid()) { - *gUnknown_0203CE54 = gUnknown_085920D8[type]; + gUnknown_0203CE54->unk0 = gUnknown_085920D8[type]; unknown_ItemMenu_Confirm(taskId); } else { - *gUnknown_0203CF2C = gUnknown_085920D8[type]; + gPyramidBagResources->callback2 = gUnknown_085920D8[type]; sub_81C5B14(taskId); } } @@ -221,7 +201,7 @@ void sub_80FD254() void ItemUseOutOfBattle_Mail(u8 taskId) { - *gUnknown_0203CE54 = sub_80FD254; + gUnknown_0203CE54->unk0 = sub_80FD254; unknown_ItemMenu_Confirm(taskId); } @@ -617,7 +597,7 @@ void ItemUseOutOfBattle_PokeblockCase(u8 taskId) } else if (gTasks[taskId].data[3] != TRUE) { - *gUnknown_0203CE54 = sub_80FDBEC; + gUnknown_0203CE54->unk0 = sub_80FDBEC; unknown_ItemMenu_Confirm(taskId); } else @@ -679,7 +659,7 @@ void sub_80FDD10(u8 taskId) { gUnknown_0203A0F4 = sub_80FDD74; gFieldCallback = MapPostLoadHook_UseItem; - *gUnknown_0203CE54 = CB2_ReturnToField; + gUnknown_0203CE54->unk0 = CB2_ReturnToField; unknown_ItemMenu_Confirm(taskId); } else @@ -898,7 +878,7 @@ void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId) void task08_080A1C44(u8 taskId) { - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); sub_80B7CC8(); DestroyTask(taskId); } @@ -1002,12 +982,12 @@ void sub_80FE54C(u8 taskId) { if (!InBattlePyramid()) { - *gUnknown_0203CE54 = sub_81B89F0; + gUnknown_0203CE54->unk0 = sub_81B89F0; unknown_ItemMenu_Confirm(taskId); } else { - *gUnknown_0203CF2C = sub_81B89F0; + gPyramidBagResources->callback2 = sub_81B89F0; sub_81C5B14(taskId); } } diff --git a/src/learn_move.c b/src/learn_move.c new file mode 100644 index 000000000..e288a393d --- /dev/null +++ b/src/learn_move.c @@ -0,0 +1,833 @@ +#include "global.h" +#include "main.h" +#include "battle.h" +#include "bg.h" +#include "contest_effect.h" +#include "data2.h" +#include "event_data.h" +#include "field_screen.h" +#include "gpu_regs.h" +#include "learn_move.h" +#include "list_menu.h" +#include "malloc.h" +#include "menu.h" +#include "menu_helpers.h" +#include "overworld.h" +#include "palette.h" +#include "pokemon_summary_screen.h" +#include "pokenav.h" +#include "script.h" +#include "sound.h" +#include "sprite.h" +#include "string_util.h" +#include "strings.h" +#include "task.h" +#include "constants/rgb.h" +#include "constants/songs.h" + +static EWRAM_DATA struct +{ + u8 state; + u8 spriteIds[16]; /*0x001*/ + u16 movesToLearn[4]; /*0x012*/ + u8 filler1A[0x44 - 0x1A]; /*0x01A*/ + u8 partyMon; /*0x044*/ + u8 moveSlot; /*0x045*/ + struct ListMenuItem menuItems[20]; /*0x048*/ + u8 fillerE8[0x110 - 0xE8]; /*0x0E8*/ + u8 numMenuChoices; /*0x110*/ + u8 numToShowAtOnce; /*0x111*/ + u8 listMenuTask; /*0x112*/ + u8 scrollArrowTaskId1; /*0x113*/ + u8 scrollArrowTaskId2; /*0x114*/ + u16 scrollOffset; /*0x116*/ +} *sLearnMoveStruct = {0}; + +static EWRAM_DATA struct { + u16 listOffset; + u16 listRow; + u8 showContestInfo; +} sLearnMoveStruct2 = {0}; + +const u16 gUnknown_085CE9F8[] = INCBIN_U16("graphics/interface/ui_learn_move.gbapal"); +const u8 gUnknown_085CEA18[] = INCBIN_U8("graphics/interface/ui_learn_move.4bpp"); + +const struct OamData gUnknown_085CEB98 = +{ + .y = 0, + .affineMode = 0, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = 0, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_SQUARE, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gUnknown_085CEBA0 = +{ + .y = 0, + .affineMode = 0, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = 0, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_V_RECTANGLE, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gUnknown_085CEBA8 = +{ + .y = 0, + .affineMode = 0, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = 0, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_H_RECTANGLE, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct SpriteSheet gUnknown_085CEBB0 = +{ + .data = gUnknown_085CEA18, + .size = 0x180, + .tag = 5525 +}; + +const struct SpritePalette gUnknown_085CEBB8 = +{ + .data = gUnknown_085CE9F8, + .tag = 5526 +}; + +const struct ScrollArrowsTemplate gUnknown_085CEBC0 = +{ + .firstArrowType = 0, + .firstX = 27, + .firstY = 16, + .secondArrowType = 1, + .secondX = 117, + .secondY = 16, + .fullyUpThreshold = -1, + .fullyDownThreshold = -1, + .tileTag = 5325, + .palTag = 5325, + .palNum = 0, +}; + +const struct ScrollArrowsTemplate gUnknown_085CEBD0 = +{ + .firstArrowType = 2, + .firstX = 192, + .firstY = 8, + .secondArrowType = 3, + .secondX = 192, + .secondY = 104, + .fullyUpThreshold = 0, + .fullyDownThreshold = 0, + .tileTag = 5425, + .palTag = 5425, + .palNum = 0, +}; + +const union AnimCmd gUnknown_085CEBE0[] = +{ + ANIMCMD_FRAME(8, 5, FALSE, FALSE), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_085CEBE8[] = +{ + ANIMCMD_FRAME(9, 5, FALSE, FALSE), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_085CEBF0[] = +{ + ANIMCMD_FRAME(10, 5, FALSE, FALSE), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_085CEBF8[] = +{ + ANIMCMD_FRAME(11, 5, FALSE, FALSE), + ANIMCMD_END +}; + +const union AnimCmd *const gUnknown_085CEC00[] = +{ + gUnknown_085CEBE0, + gUnknown_085CEBE8, + gUnknown_085CEBF0, + gUnknown_085CEBF8, +}; + +const struct SpriteTemplate gUnknown_085CEC10 = +{ + .tileTag = 5525, + .paletteTag = 5526, + .oam = &gUnknown_085CEB98, + .anims = gUnknown_085CEC00, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +const struct BgTemplate gUnknown_085CEC28[] = +{ + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0, + }, + { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0, + }, +}; + +static void LearnMoveMain(void); +static void CreateMenuItemsList(void); +static void CreateHearts(void); +static void CB2_Main(void); +static void Task_WaitForFadeOut(u8 taskId); +static void CB2_InitLearnMove(void); +static void CB2_InitLearnMoveReturnFromSelectMove(void); +static void InitBGs(void); +static void AddScrollArrows(void); +static void HandleInput(u8); +static void ShowTeachMoveText(u8); +static s32 GetCurrentItemId(void); +static void FreeListMenuResources(void); +static void RemoveScrollArrows(void); +static void HideSpritesAndPrintTeachText(bool8); + +static void VBlankCB_LearnMove(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void TeachMoveTutorMove(void) +{ + ScriptContext2_Enable(); + CreateTask(Task_WaitForFadeOut, 0xA); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0); +} + +static void Task_WaitForFadeOut(u8 taskId) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(CB2_InitLearnMove); + gFieldCallback = sub_80AF168; + DestroyTask(taskId); + } +} + +static void CB2_InitLearnMove(void) +{ + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + clear_scheduled_bg_copies_to_vram(); + sLearnMoveStruct = AllocZeroed(sizeof(*sLearnMoveStruct)); + sLearnMoveStruct->partyMon = gSpecialVar_0x8004; + SetVBlankCallback(VBlankCB_LearnMove); + + InitBGs(); + sub_81D2824(0); + + sLearnMoveStruct2.listOffset = 0; + sLearnMoveStruct2.listRow = 0; + sLearnMoveStruct2.showContestInfo = FALSE; + + CreateMenuItemsList(); + + LoadSpriteSheet(&gUnknown_085CEBB0); + LoadSpritePalette(&gUnknown_085CEBB8); + CreateHearts(); + + sLearnMoveStruct->listMenuTask = ListMenuInit(&gMultiuseListMenuTemplate, sLearnMoveStruct2.listOffset, sLearnMoveStruct2.listRow); + FillPalette(RGB_BLACK, 0, 2); + SetMainCallback2(CB2_Main); +} + +static void CB2_InitLearnMoveReturnFromSelectMove(void) +{ + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + clear_scheduled_bg_copies_to_vram(); + sLearnMoveStruct = AllocZeroed(sizeof(*sLearnMoveStruct)); + sLearnMoveStruct->state = 28; + sLearnMoveStruct->partyMon = gSpecialVar_0x8004; + sLearnMoveStruct->moveSlot = gSpecialVar_0x8005; + SetVBlankCallback(VBlankCB_LearnMove); + + InitBGs(); + sub_81D2824(sLearnMoveStruct2.showContestInfo); + CreateMenuItemsList(); + + LoadSpriteSheet(&gUnknown_085CEBB0); + LoadSpritePalette(&gUnknown_085CEBB8); + CreateHearts(); + + sLearnMoveStruct->listMenuTask = ListMenuInit(&gMultiuseListMenuTemplate, sLearnMoveStruct2.listOffset, sLearnMoveStruct2.listRow); + FillPalette(RGB_BLACK, 0, 2); + SetMainCallback2(CB2_Main); +} + +static void InitBGs(void) +{ + ResetVramOamAndBgCntRegs(); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_085CEC28, 2); + ResetAllBgsCoordinates(); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | + DISPCNT_OBJ_1D_MAP | + DISPCNT_OBJ_ON); + ShowBg(0); + ShowBg(1); + SetGpuReg(REG_OFFSET_BLDCNT, 0); +} + +static void CB2_Main(void) +{ + LearnMoveMain(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + do_scheduled_bg_tilemap_copies_to_vram(); + UpdatePaletteFade(); +} + +static void sub_816084C(const u8 *src) +{ + StringExpandPlaceholders(gStringVar4, src); + sub_81D2BF4(gStringVar4); +} + +static void LearnMoveMain(void) +{ + switch (sLearnMoveStruct->state) + { + case 0: + sLearnMoveStruct->state++; + HideSpritesAndPrintTeachText(FALSE); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + break; + case 1: + if (!gPaletteFade.active) + { + sLearnMoveStruct->state = 4; + } + break; + case 2: + sLearnMoveStruct->state++; + break; + case 3: + HideSpritesAndPrintTeachText(FALSE); + sLearnMoveStruct->state++; + AddScrollArrows(); + break; + case 4: + HandleInput(FALSE); + return; + case 5: + ShowTeachMoveText(FALSE); + sLearnMoveStruct->state++; + AddScrollArrows(); + break; + case 6: + HandleInput(TRUE); + break; + case 8: + if (!sub_81D2C3C()) + { + sub_81D2C50(); + sLearnMoveStruct->state++; + } + break; + case 9: + { + s8 selection = Menu_ProcessInputNoWrap_(); + + if (selection == 0) + { + if (GiveMoveToMon(&gPlayerParty[sLearnMoveStruct->partyMon], GetCurrentItemId()) != 0xFFFF) + { + sub_816084C(gText_PkmnLearnedMove4); + gSpecialVar_0x8004 = 1; + sLearnMoveStruct->state = 31; + } + else + { + sLearnMoveStruct->state = 16; + } + } + else if (selection == -1 || selection == 1) + { + if (sLearnMoveStruct2.showContestInfo == FALSE) + { + sLearnMoveStruct->state = 3; + } + else if (sLearnMoveStruct2.showContestInfo == TRUE) + { + sLearnMoveStruct->state = 5; + } + } + } + break; + case 12: + if (!sub_81D2C3C()) + { + sub_81D2C50(); + sLearnMoveStruct->state++; + } + break; + case 13: + { + s8 selection = Menu_ProcessInputNoWrap_(); + + if (selection == 0) + { + gSpecialVar_0x8004 = selection; + sLearnMoveStruct->state = 14; + } + else if (selection == -1 || selection == 1) + { + if (sLearnMoveStruct2.showContestInfo == FALSE) + { + sLearnMoveStruct->state = 3; + } + else if (sLearnMoveStruct2.showContestInfo == TRUE) + { + sLearnMoveStruct->state = 5; + } + } + } + break; + case 16: + sub_816084C(gText_PkmnTryingToLearnMove); + sLearnMoveStruct->state++; + break; + case 17: + if (!sub_81D2C3C()) + { + sub_81D2C50(); + sLearnMoveStruct->state = 18; + } + break; + case 18: + { + s8 var = Menu_ProcessInputNoWrap_(); + + if (var == 0) + { + sub_816084C(gText_WhichMoveToForget2); + sLearnMoveStruct->state = 19; + } + else if (var == -1 || var == 1) + { + sLearnMoveStruct->state = 24; + } + } + break; + case 24: + StringCopy(gStringVar2, gMoveNames[GetCurrentItemId()]); + sub_816084C(gText_StopTryingToTeachMove); + sLearnMoveStruct->state++; + break; + case 25: + if (!sub_81D2C3C()) + { + sub_81D2C50(); + sLearnMoveStruct->state++; + } + break; + case 26: + { + s8 var = Menu_ProcessInputNoWrap_(); + + if (var == 0) + { + sLearnMoveStruct->state = 27; + } + else if (var == -1 || var == 1) + { + // What's the point? It gets set to 16, anyway. + if (sLearnMoveStruct2.showContestInfo == FALSE) + { + sLearnMoveStruct->state = 3; + } + else if (sLearnMoveStruct2.showContestInfo == TRUE) + { + sLearnMoveStruct->state = 5; + } + sLearnMoveStruct->state = 16; + } + } + break; + case 27: + if (!sub_81D2C3C()) + { + FillWindowPixelBuffer(3, 0x11); + if (sLearnMoveStruct2.showContestInfo == FALSE) + { + sLearnMoveStruct->state = 3; + } + else if (sLearnMoveStruct2.showContestInfo == TRUE) + { + sLearnMoveStruct->state = 5; + } + } + break; + case 19: + if (!sub_81D2C3C()) + { + sLearnMoveStruct->state = 20; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + } + break; + case 20: + if (!gPaletteFade.active) + { + ShowSelectMovePokemonSummaryScreen(gPlayerParty, sLearnMoveStruct->partyMon, gPlayerPartyCount - 1, CB2_InitLearnMoveReturnFromSelectMove, GetCurrentItemId()); + FreeListMenuResources(); + } + break; + case 21: + if (!sub_81D2C3C()) + { + sLearnMoveStruct->state = 14; + } + break; + case 22: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + break; + case 14: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + sLearnMoveStruct->state++; + break; + case 15: + if (!gPaletteFade.active) + { + FreeListMenuResources(); + SetMainCallback2(CB2_ReturnToField); + } + break; + case 28: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + sLearnMoveStruct->state++; + if (sLearnMoveStruct2.showContestInfo == FALSE) + { + HideSpritesAndPrintTeachText(TRUE); + } + else if (sLearnMoveStruct2.showContestInfo == TRUE) + { + ShowTeachMoveText(TRUE); + } + RemoveScrollArrows(); + CopyWindowToVram(3, 2); + break; + case 29: + if (!gPaletteFade.active) + { + if (sLearnMoveStruct->moveSlot == MAX_MON_MOVES) + { + sLearnMoveStruct->state = 24; + } + else + { + u16 moveId = GetMonData(&gPlayerParty[sLearnMoveStruct->partyMon], MON_DATA_MOVE1 + sLearnMoveStruct->moveSlot); + + StringCopy(gStringVar3, gMoveNames[moveId]); + RemoveMonPPBonus(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->moveSlot); + SetMonMoveSlot(&gPlayerParty[sLearnMoveStruct->partyMon], GetCurrentItemId(), sLearnMoveStruct->moveSlot); + StringCopy(gStringVar2, gMoveNames[GetCurrentItemId()]); + sub_816084C(gText_12AndPoof); + sLearnMoveStruct->state = 30; + gSpecialVar_0x8004 = 1; + } + } + break; + case 30: + if (!sub_81D2C3C()) + { + sub_816084C(gText_PkmnForgotMoveAndLearnedNew); + sLearnMoveStruct->state = 31; + PlayFanfare(MUS_FANFA1); + } + break; + case 31: + if (!sub_81D2C3C()) + { + PlayFanfare(MUS_FANFA1); + sLearnMoveStruct->state = 32; + } + break; + case 32: + if (IsFanfareTaskInactive()) + { + sLearnMoveStruct->state = 33; + } + break; + case 33: + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sLearnMoveStruct->state = 14; + } + break; + } +} + +static void FreeListMenuResources(void) +{ + RemoveScrollArrows(); + DestroyListMenuTask(sLearnMoveStruct->listMenuTask, &sLearnMoveStruct2.listOffset, &sLearnMoveStruct2.listRow); + FreeAllWindowBuffers(); + FREE_AND_SET_NULL(sLearnMoveStruct); + ResetSpriteData(); + FreeAllSpritePalettes(); +} + +static void HideSpritesAndPrintTeachText(bool8 a) +{ + s32 i; + + for (i = 0; i < 16; i++) + { + gSprites[sLearnMoveStruct->spriteIds[i]].invisible = TRUE; + } + + if (!a) + { + StringExpandPlaceholders(gStringVar4, gText_TeachWhichMoveToPkmn); + FillWindowPixelBuffer(3, 0x11); + PrintTextOnWindow(3, 1, gStringVar4, 0, 1, 0, NULL); + } +} + +static void HandleInput(bool8 showContest) +{ + s32 itemId = ListMenuHandleInputGetItemId(sLearnMoveStruct->listMenuTask); + ListMenuGetScrollAndRow(sLearnMoveStruct->listMenuTask, &sLearnMoveStruct2.listOffset, &sLearnMoveStruct2.listRow); + + switch (itemId) + { + case LIST_NOTHING_CHOSEN: + if (!(gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) && !GetLRKeysState()) + { + break; + } + + PlaySE(SE_SELECT); + + if (showContest == FALSE) + { + PutWindowTilemap(1); + sLearnMoveStruct->state = 5; + sLearnMoveStruct2.showContestInfo = TRUE; + } + else + { + PutWindowTilemap(0); + sLearnMoveStruct->state = 3; + sLearnMoveStruct2.showContestInfo = FALSE; + } + + schedule_bg_copy_tilemap_to_vram(1); + ShowHideHearts(GetCurrentItemId()); + break; + case LIST_B_PRESSED: + PlaySE(SE_SELECT); + RemoveScrollArrows(); + sLearnMoveStruct->state = 12; + StringExpandPlaceholders(gStringVar4, gText_GiveUpTeachingNewMove); + sub_81D2BF4(gStringVar4); + break; + default: + PlaySE(SE_SELECT); + RemoveScrollArrows(); + sLearnMoveStruct->state = 8; + StringCopy(gStringVar2, gMoveNames[itemId]); + StringExpandPlaceholders(gStringVar4, gText_TeachX); + sub_81D2BF4(gStringVar4); + break; + } +} + +static s32 GetCurrentItemId(void) +{ + return sLearnMoveStruct->menuItems[sLearnMoveStruct2.listRow + sLearnMoveStruct2.listOffset].id; +} + +static void ShowTeachMoveText(bool8 showContest) +{ + if (showContest == FALSE) + { + StringExpandPlaceholders(gStringVar4, gText_TeachWhichMoveToPkmn); + FillWindowPixelBuffer(3, 0x11); + PrintTextOnWindow(3, 1, gStringVar4, 0, 1, 0, NULL); + } +} + +static void CreateHearts(void) +{ + int i; + + sLearnMoveStruct->scrollArrowTaskId2 = -1; + sLearnMoveStruct->scrollArrowTaskId1 = -1; + AddScrollArrows(); + + for (i = 0; i < 8; i++) + { + sLearnMoveStruct->spriteIds[i] = CreateSprite(&gUnknown_085CEC10, (i - (i / 4) * 4) * 8 + 104, (i / 4) * 8 + 36, 0); + } + + for (i = 0; i < 8; i++) + { + sLearnMoveStruct->spriteIds[i + 8] = CreateSprite(&gUnknown_085CEC10, (i - (i / 4) * 4) * 8 + 104, (i / 4) * 8 + 52, 0); + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIds[i + 8]], 2); + } + + for (i = 0; i < 16; i++) + { + gSprites[sLearnMoveStruct->spriteIds[i]].invisible = TRUE; + } +} + +static void AddScrollArrows(void) +{ + if (sLearnMoveStruct->scrollArrowTaskId2 == 0xFF) + { + sLearnMoveStruct->scrollArrowTaskId2 = AddScrollIndicatorArrowPair(&gUnknown_085CEBC0, &sLearnMoveStruct->scrollOffset); + } + + if (sLearnMoveStruct->scrollArrowTaskId1 == 0xFF) + { + gTempScrollArrowTemplate = gUnknown_085CEBD0; + gTempScrollArrowTemplate.fullyDownThreshold = sLearnMoveStruct->numMenuChoices - sLearnMoveStruct->numToShowAtOnce; + sLearnMoveStruct->scrollArrowTaskId1 = AddScrollIndicatorArrowPair(&gTempScrollArrowTemplate, &sLearnMoveStruct2.listOffset); + } +} + +static void RemoveScrollArrows(void) +{ + if (sLearnMoveStruct->scrollArrowTaskId2 != 0xFF) + { + RemoveScrollIndicatorArrowPair(sLearnMoveStruct->scrollArrowTaskId2); + sLearnMoveStruct->scrollArrowTaskId2 = 0xFF; + } + + if (sLearnMoveStruct->scrollArrowTaskId1 != 0xFF) + { + RemoveScrollIndicatorArrowPair(sLearnMoveStruct->scrollArrowTaskId1); + sLearnMoveStruct->scrollArrowTaskId1 = 0xFF; + } +} + +static void CreateMenuItemsList(void) +{ + s32 i; + u8 nickname[POKEMON_NAME_LENGTH + 1]; + + sLearnMoveStruct->numMenuChoices = GetMoveRelearnerMoves(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn); + + for (i = 0; i < sLearnMoveStruct->numMenuChoices; i++) + { + sLearnMoveStruct->menuItems[i].name = gMoveNames[sLearnMoveStruct->movesToLearn[i]]; + sLearnMoveStruct->menuItems[i].id = sLearnMoveStruct->movesToLearn[i]; + } + + GetMonData(&gPlayerParty[sLearnMoveStruct->partyMon], MON_DATA_NICKNAME, nickname); + StringCopy10(gStringVar1, nickname); + sLearnMoveStruct->menuItems[sLearnMoveStruct->numMenuChoices].name = gText_Cancel; + sLearnMoveStruct->menuItems[sLearnMoveStruct->numMenuChoices].id = LIST_B_PRESSED; + sLearnMoveStruct->numMenuChoices++; + sLearnMoveStruct->numToShowAtOnce = sub_81D28C8(sLearnMoveStruct->menuItems, sLearnMoveStruct->numMenuChoices); +} + +void ShowHideHearts(s32 item) +{ + u16 numHearts; + u16 i; + + if (!sLearnMoveStruct2.showContestInfo || item == LIST_B_PRESSED) + { + for (i = 0; i < 16; i++) + { + gSprites[sLearnMoveStruct->spriteIds[i]].invisible = TRUE; + } + } + else + { + numHearts = (u8)(gContestEffects[gContestMoves[item].effect].appeal / 10); + + if (numHearts == 0xFF) + { + numHearts = 0; + } + + for (i = 0; i < 8; i++) + { + if (i < numHearts) + { + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIds[i]], 1); + } + else + { + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIds[i]], 0); + } + gSprites[sLearnMoveStruct->spriteIds[i]].invisible = FALSE; + } + + numHearts = (u8)(gContestEffects[gContestMoves[item].effect].jam / 10); + + if (numHearts == 0xFF) + { + numHearts = 0; + } + + for (i = 0; i < 8; i++) + { + if (i < numHearts) + { + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIds[i + 8]], 3); + } + else + { + StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIds[i + 8]], 2); + } + gSprites[sLearnMoveStruct->spriteIds[i + 8]].invisible = FALSE; + } + } +} diff --git a/src/link.c b/src/link.c index b729f86eb..457e44a01 100644 --- a/src/link.c +++ b/src/link.c @@ -1679,7 +1679,7 @@ void CB2_LinkError(void) static void sub_800B080(void) { LoadBgTiles(0, g2BlankTilesGfx, 0x20, 0); - copy_decompressed_tile_data_to_vram_autofree(1, gWirelessLinkDisplayGfx, FALSE, 0, 0); + DecompressAndLoadBgGfxUsingHeap(1, gWirelessLinkDisplayGfx, FALSE, 0, 0); CopyToBgTilemapBuffer(1, gWirelessLinkDisplayTilemap, 0, 0); CopyBgTilemapBufferToVram(1); LoadPalette(gWirelessLinkDisplayPal, 0, 0x20); diff --git a/src/mail_data.c b/src/mail_data.c index ebb49febf..809dcc2a8 100644 --- a/src/mail_data.c +++ b/src/mail_data.c @@ -22,7 +22,7 @@ void ClearMailStruct(struct MailStruct *mail) for (i = 0; i < MAIL_WORDS_COUNT; i++) mail->words[i] = 0xFFFF; - for (i = 0; i < PLAYER_NAME_LENGTH; i++) + for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++) mail->playerName[i] = EOS; for (i = 0; i < 4; i++) @@ -58,7 +58,7 @@ u8 GiveMailToMon(struct Pokemon *mon, u16 itemId) for (i = 0; i < MAIL_WORDS_COUNT; i++) gSaveBlock1Ptr->mail[id].words[i] = 0xFFFF; - for (i = 0; i < PLAYER_NAME_LENGTH - 1; i++) + for (i = 0; i < PLAYER_NAME_LENGTH + 1 - 1; i++) gSaveBlock1Ptr->mail[id].playerName[i] = gSaveBlock2Ptr->playerName[i]; gSaveBlock1Ptr->mail[id].playerName[i] = EOS; PadNameString(gSaveBlock1Ptr->mail[id].playerName, CHAR_SPACE); diff --git a/src/main_menu.c b/src/main_menu.c index 87673c9b2..3d8d5acc2 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -1,7 +1,5 @@ - -// Includes #include "global.h" -#include "battle_dome_cards.h" +#include "trainer_pokemon_sprites.h" #include "bg.h" #include "constants/flags.h" #include "constants/rgb.h" @@ -133,29 +131,121 @@ const u8 gUnknown_082FEEF0[] = INCBIN_U8("graphics/birch_speech/map.bin.lz"); const u16 gUnknown_082FF018[] = INCBIN_U16("graphics/birch_speech/bg2.gbapal"); const u16 gUnknown_082FF028[] = {0, 0, 0, 0, 0, 0, 0, 0}; -const struct WindowTemplate sWindowTemplates_NoSavedGame[] = { - {0, 2, 1, 26, 2, 15, 1}, - {0, 2, 5, 26, 2, 15, 0x35} +const struct WindowTemplate sWindowTemplates_NoSavedGame[] = +{ + { + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 1, + .width = 26, + .height = 2, + .paletteNum = 15, + .baseBlock = 1 + }, + { + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 5, + .width = 26, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x35 + } }; -const struct WindowTemplate sWindowTemplates_HasSavedGame[] = { - {0, 2, 1, 26, 6, 15, 1}, - {0, 2, 9, 26, 2, 15, 0x9D}, - {0, 2, 13, 26, 2, 15, 0xD1}, - {0, 2, 17, 26, 2, 15, 0x105}, - {0, 2, 21, 26, 2, 15, 0x139} +const struct WindowTemplate sWindowTemplates_HasSavedGame[] = +{ + { + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 1, + .width = 26, + .height = 6, + .paletteNum = 15, + .baseBlock = 1 + }, + { + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 9, + .width = 26, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x9D + }, + { + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 13, + .width = 26, + .height = 2, + .paletteNum = 15, + .baseBlock = 0xD1 + }, + { + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 17, + .width = 26, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x105 + }, + { + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 21, + .width = 26, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x139 + } }; -const struct WindowTemplate sWindowTemplate_ErrorWindow[] = { - {0, 2, 15, 26, 4, 15, 0x16D}, - {0xFF, 0, 0, 0, 0, 0, 0} +const struct WindowTemplate sWindowTemplate_ErrorWindow[] = +{ + { + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 15, + .width = 26, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x16D + }, + DUMMY_WIN_TEMPLATE }; -const struct WindowTemplate gUnknown_082FF080[] = { - {0, 2, 15, 27, 4, 15, 1}, - {0, 3, 5, 6, 4, 15, 0x6D}, - {0, 3, 2, 9, 10, 15, 0x85}, - {0xFF, 0, 0, 0, 0, 0, 0} +const struct WindowTemplate gUnknown_082FF080[] = +{ + { + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 15, + .width = 27, + .height = 4, + .paletteNum = 15, + .baseBlock = 1 + }, + { + .priority = 0, + .tilemapLeft = 3, + .tilemapTop = 5, + .width = 6, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x6D + }, + { + .priority = 0, + .tilemapLeft = 3, + .tilemapTop = 2, + .width = 9, + .height = 10, + .paletteNum = 15, + .baseBlock = 0x85 + }, + DUMMY_WIN_TEMPLATE }; const u16 gMainMenuBgPal[] = INCBIN_U16("graphics/misc/main_menu_bg.gbapal"); @@ -1018,7 +1108,7 @@ void task_new_game_prof_birch_speech_1(u8 taskId) ScanlineEffect_Stop(); ResetSpriteData(); FreeAllSpritePalettes(); - dp13_810BB8C(); + ResetAllPicSprites(); AddBirchSpeechObjects(taskId); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); gTasks[taskId].data[4] = 0; @@ -1336,7 +1426,7 @@ void task_new_game_prof_birch_speech_17(u8 taskId) if (!gPaletteFade.active) { FreeAllWindowBuffers(); - sub_818D820(gTasks[taskId].data[9]); + FreeAndDestroyMonPicSprite(gTasks[taskId].data[9]); set_default_player_name(Random() % 20); DestroyTask(taskId); DoNamingScreen(0, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, new_game_prof_birch_speech_part2_start); @@ -1362,7 +1452,7 @@ void task_new_game_prof_birch_speech_part2_3(u8 taskId) void task_new_game_prof_birch_speech_part2_4(u8 taskId) { - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: PlaySE(SE_SELECT); @@ -1515,8 +1605,8 @@ void task_new_game_prof_birch_speech_part2_12(u8 taskId) if (!gPaletteFade.active) { FreeAllWindowBuffers(); - sub_818D820(gTasks[taskId].data[9]); - dp13_810BB8C(); + FreeAndDestroyMonPicSprite(gTasks[taskId].data[9]); + ResetAllPicSprites(); SetMainCallback2(CB2_NewGame); DestroyTask(taskId); } @@ -1558,7 +1648,7 @@ void new_game_prof_birch_speech_part2_start(void) ScanlineEffect_Stop(); ResetSpriteData(); FreeAllSpritePalettes(); - dp13_810BB8C(); + ResetAllPicSprites(); AddBirchSpeechObjects(taskId); if (gSaveBlock2Ptr->playerGender != MALE) { @@ -1613,7 +1703,7 @@ void sub_80318D8(struct Sprite *sprite) u8 sub_80318F4(u8 a, u8 b) { - return sub_818D3E4(SPECIES_LOTAD, 8, 0, 1, a, b, 14, -1); + return CreatePicSprite2(SPECIES_LOTAD, 8, 0, 1, a, b, 14, -1); } void AddBirchSpeechObjects(u8 taskId) @@ -1802,7 +1892,7 @@ void sub_8031D74(void) s8 sub_8031DB4(void) { - return ProcessMenuInputNoWrapAround(); + return Menu_ProcessInputNoWrapAround(); } void set_default_player_name(u8 nameId) @@ -1965,7 +2055,7 @@ void sub_80323CC(u8 a, u8 b, u16 c, u16 d, u8 e, u8 f) { struct WindowTemplate sp; - sp = sub_8198A50(0, a + 1, b + 1, 5, 4, f, d); + sp = CreateWindowTemplate(0, a + 1, b + 1, 5, 4, f, d); CreateYesNoMenu(&sp, c, e, 0); } diff --git a/src/map_name_popup.c b/src/map_name_popup.c index 578636d40..0d22bd126 100644 --- a/src/map_name_popup.c +++ b/src/map_name_popup.c @@ -70,32 +70,110 @@ static const u16 gUnknown_0857F444[16] = INCBIN_U16("graphics/interface/map_popu static const u8 gRegionMapSectionId_To_PopUpThemeIdMapping[] = { - MAPPOPUP_THEME_WOOD, MAPPOPUP_THEME_WOOD, MAPPOPUP_THEME_WOOD, MAPPOPUP_THEME_WOOD, - MAPPOPUP_THEME_WOOD, MAPPOPUP_THEME_WOOD, MAPPOPUP_THEME_WOOD, MAPPOPUP_THEME_BRICK, - MAPPOPUP_THEME_MARBLE, MAPPOPUP_THEME_MARBLE, MAPPOPUP_THEME_MARBLE, MAPPOPUP_THEME_BRICK, - MAPPOPUP_THEME_MARBLE, MAPPOPUP_THEME_BRICK, MAPPOPUP_THEME_MARBLE, MAPPOPUP_THEME_BRICK, - MAPPOPUP_THEME_WOOD, MAPPOPUP_THEME_WOOD, MAPPOPUP_THEME_WOOD, MAPPOPUP_THEME_WOOD, - MAPPOPUP_THEME_UNDERWATER, MAPPOPUP_THEME_UNDERWATER, MAPPOPUP_THEME_UNDERWATER, MAPPOPUP_THEME_UNDERWATER, - MAPPOPUP_THEME_UNDERWATER, MAPPOPUP_THEME_WOOD, MAPPOPUP_THEME_WOOD, MAPPOPUP_THEME_WOOD, - MAPPOPUP_THEME_WOOD, MAPPOPUP_THEME_WOOD, MAPPOPUP_THEME_WOOD, MAPPOPUP_THEME_WOOD, - MAPPOPUP_THEME_WOOD, MAPPOPUP_THEME_WOOD, MAPPOPUP_THEME_WOOD, MAPPOPUP_THEME_WOOD, - MAPPOPUP_THEME_WOOD, MAPPOPUP_THEME_UNDERWATER, MAPPOPUP_THEME_WOOD, MAPPOPUP_THEME_UNDERWATER, - MAPPOPUP_THEME_UNDERWATER, MAPPOPUP_THEME_UNDERWATER, MAPPOPUP_THEME_UNDERWATER, MAPPOPUP_THEME_UNDERWATER, - MAPPOPUP_THEME_UNDERWATER, MAPPOPUP_THEME_UNDERWATER, MAPPOPUP_THEME_UNDERWATER, MAPPOPUP_THEME_UNDERWATER, - MAPPOPUP_THEME_UNDERWATER, MAPPOPUP_THEME_UNDERWATER, MAPPOPUP_THEME_STONE2, MAPPOPUP_THEME_STONE2, - MAPPOPUP_THEME_STONE2, MAPPOPUP_THEME_STONE2, MAPPOPUP_THEME_STONE2, MAPPOPUP_THEME_STONE, - MAPPOPUP_THEME_STONE, MAPPOPUP_THEME_WOOD, MAPPOPUP_THEME_MARBLE, MAPPOPUP_THEME_WOOD, - MAPPOPUP_THEME_STONE, MAPPOPUP_THEME_WOOD, MAPPOPUP_THEME_MARBLE, MAPPOPUP_THEME_STONE, - MAPPOPUP_THEME_STONE, MAPPOPUP_THEME_STONE, MAPPOPUP_THEME_STONE, MAPPOPUP_THEME_STONE, - MAPPOPUP_THEME_STONE, MAPPOPUP_THEME_STONE2, MAPPOPUP_THEME_STONE, MAPPOPUP_THEME_WOOD, - MAPPOPUP_THEME_STONE, MAPPOPUP_THEME_WOOD, MAPPOPUP_THEME_STONE, MAPPOPUP_THEME_STONE, - MAPPOPUP_THEME_WOOD, MAPPOPUP_THEME_WOOD, MAPPOPUP_THEME_STONE, MAPPOPUP_THEME_STONE2, - MAPPOPUP_THEME_STONE, MAPPOPUP_THEME_STONE, MAPPOPUP_THEME_STONE, MAPPOPUP_THEME_STONE, - MAPPOPUP_THEME_WOOD, MAPPOPUP_THEME_STONE, MAPPOPUP_THEME_STONE, MAPPOPUP_THEME_MARBLE, - MAPPOPUP_THEME_STONE, MAPPOPUP_THEME_STONE, MAPPOPUP_THEME_STONE, MAPPOPUP_THEME_WOOD, - MAPPOPUP_THEME_WOOD, MAPPOPUP_THEME_STONE, MAPPOPUP_THEME_STONE, MAPPOPUP_THEME_STONE2, - MAPPOPUP_THEME_STONE, MAPPOPUP_THEME_STONE2, MAPPOPUP_THEME_STONE2, MAPPOPUP_THEME_STONE2, - MAPPOPUP_THEME_STONE, MAPPOPUP_THEME_STONE, MAPPOPUP_THEME_STONE, MAPPOPUP_THEME_MARBLE + [MAPSEC_LITTLEROOT_TOWN] = MAPPOPUP_THEME_WOOD, + [MAPSEC_OLDALE_TOWN] = MAPPOPUP_THEME_WOOD, + [MAPSEC_DEWFORD_TOWN] = MAPPOPUP_THEME_WOOD, + [MAPSEC_LAVARIDGE_TOWN] = MAPPOPUP_THEME_WOOD, + [MAPSEC_FALLARBOR_TOWN] = MAPPOPUP_THEME_WOOD, + [MAPSEC_VERDANTURF_TOWN] = MAPPOPUP_THEME_WOOD, + [MAPSEC_PACIFIDLOG_TOWN] = MAPPOPUP_THEME_WOOD, + [MAPSEC_PETALBURG_CITY] = MAPPOPUP_THEME_BRICK, + [MAPSEC_SLATEPORT_CITY] = MAPPOPUP_THEME_MARBLE, + [MAPSEC_MAUVILLE_CITY] = MAPPOPUP_THEME_MARBLE, + [MAPSEC_RUSTBORO_CITY] = MAPPOPUP_THEME_MARBLE, + [MAPSEC_FORTREE_CITY] = MAPPOPUP_THEME_BRICK, + [MAPSEC_LILYCOVE_CITY] = MAPPOPUP_THEME_MARBLE, + [MAPSEC_MOSSDEEP_CITY] = MAPPOPUP_THEME_BRICK, + [MAPSEC_SOOTOPOLIS_CITY] = MAPPOPUP_THEME_MARBLE, + [MAPSEC_EVER_GRANDE_CITY] = MAPPOPUP_THEME_BRICK, + [MAPSEC_ROUTE_101] = MAPPOPUP_THEME_WOOD, + [MAPSEC_ROUTE_102] = MAPPOPUP_THEME_WOOD, + [MAPSEC_ROUTE_103] = MAPPOPUP_THEME_WOOD, + [MAPSEC_ROUTE_104] = MAPPOPUP_THEME_WOOD, + [MAPSEC_ROUTE_105] = MAPPOPUP_THEME_UNDERWATER, + [MAPSEC_ROUTE_106] = MAPPOPUP_THEME_UNDERWATER, + [MAPSEC_ROUTE_107] = MAPPOPUP_THEME_UNDERWATER, + [MAPSEC_ROUTE_108] = MAPPOPUP_THEME_UNDERWATER, + [MAPSEC_ROUTE_109] = MAPPOPUP_THEME_UNDERWATER, + [MAPSEC_ROUTE_110] = MAPPOPUP_THEME_WOOD, + [MAPSEC_ROUTE_111] = MAPPOPUP_THEME_WOOD, + [MAPSEC_ROUTE_112] = MAPPOPUP_THEME_WOOD, + [MAPSEC_ROUTE_113] = MAPPOPUP_THEME_WOOD, + [MAPSEC_ROUTE_114] = MAPPOPUP_THEME_WOOD, + [MAPSEC_ROUTE_115] = MAPPOPUP_THEME_WOOD, + [MAPSEC_ROUTE_116] = MAPPOPUP_THEME_WOOD, + [MAPSEC_ROUTE_117] = MAPPOPUP_THEME_WOOD, + [MAPSEC_ROUTE_118] = MAPPOPUP_THEME_WOOD, + [MAPSEC_ROUTE_119] = MAPPOPUP_THEME_WOOD, + [MAPSEC_ROUTE_120] = MAPPOPUP_THEME_WOOD, + [MAPSEC_ROUTE_121] = MAPPOPUP_THEME_WOOD, + [MAPSEC_ROUTE_122] = MAPPOPUP_THEME_UNDERWATER, + [MAPSEC_ROUTE_123] = MAPPOPUP_THEME_WOOD, + [MAPSEC_ROUTE_124] = MAPPOPUP_THEME_UNDERWATER, + [MAPSEC_ROUTE_125] = MAPPOPUP_THEME_UNDERWATER, + [MAPSEC_ROUTE_126] = MAPPOPUP_THEME_UNDERWATER, + [MAPSEC_ROUTE_127] = MAPPOPUP_THEME_UNDERWATER, + [MAPSEC_ROUTE_128] = MAPPOPUP_THEME_UNDERWATER, + [MAPSEC_ROUTE_129] = MAPPOPUP_THEME_UNDERWATER, + [MAPSEC_ROUTE_130] = MAPPOPUP_THEME_UNDERWATER, + [MAPSEC_ROUTE_131] = MAPPOPUP_THEME_UNDERWATER, + [MAPSEC_ROUTE_132] = MAPPOPUP_THEME_UNDERWATER, + [MAPSEC_ROUTE_133] = MAPPOPUP_THEME_UNDERWATER, + [MAPSEC_ROUTE_134] = MAPPOPUP_THEME_UNDERWATER, + [MAPSEC_UNDERWATER_124] = MAPPOPUP_THEME_STONE2, + [MAPSEC_UNDERWATER_125] = MAPPOPUP_THEME_STONE2, + [MAPSEC_UNDERWATER_126] = MAPPOPUP_THEME_STONE2, + [MAPSEC_UNDERWATER_127] = MAPPOPUP_THEME_STONE2, + [MAPSEC_UNDERWATER_SOOTOPOLIS] = MAPPOPUP_THEME_STONE2, + [MAPSEC_GRANITE_CAVE] = MAPPOPUP_THEME_STONE, + [MAPSEC_MT_CHIMNEY] = MAPPOPUP_THEME_STONE, + [MAPSEC_SAFARI_ZONE] = MAPPOPUP_THEME_WOOD, + [MAPSEC_BATTLE_FRONTIER] = MAPPOPUP_THEME_MARBLE, + [MAPSEC_PETALBURG_WOODS] = MAPPOPUP_THEME_WOOD, + [MAPSEC_RUSTURF_TUNNEL] = MAPPOPUP_THEME_STONE, + [MAPSEC_ABANDONED_SHIP] = MAPPOPUP_THEME_WOOD, + [MAPSEC_NEW_MAUVILLE] = MAPPOPUP_THEME_MARBLE, + [MAPSEC_METEOR_FALLS] = MAPPOPUP_THEME_STONE, + [MAPSEC_METEOR_FALLS2] = MAPPOPUP_THEME_STONE, + [MAPSEC_MT_PYRE] = MAPPOPUP_THEME_STONE, + [MAPSEC_AQUA_HIDEOUT_OLD] = MAPPOPUP_THEME_STONE, + [MAPSEC_SHOAL_CAVE] = MAPPOPUP_THEME_STONE, + [MAPSEC_SEAFLOOR_CAVERN] = MAPPOPUP_THEME_STONE, + [MAPSEC_UNDERWATER_128] = MAPPOPUP_THEME_STONE2, + [MAPSEC_VICTORY_ROAD] = MAPPOPUP_THEME_STONE, + [MAPSEC_MIRAGE_ISLAND] = MAPPOPUP_THEME_WOOD, + [MAPSEC_CAVE_OF_ORIGIN] = MAPPOPUP_THEME_STONE, + [MAPSEC_SOUTHERN_ISLAND] = MAPPOPUP_THEME_WOOD, + [MAPSEC_FIERY_PATH] = MAPPOPUP_THEME_STONE, + [MAPSEC_FIERY_PATH2] = MAPPOPUP_THEME_STONE, + [MAPSEC_JAGGED_PASS] = MAPPOPUP_THEME_WOOD, + [MAPSEC_JAGGED_PASS2] = MAPPOPUP_THEME_WOOD, + [MAPSEC_SEALED_CHAMBER] = MAPPOPUP_THEME_STONE, + [MAPSEC_UNDERWATER_SEALED_CHAMBER] = MAPPOPUP_THEME_STONE2, + [MAPSEC_SCORCHED_SLAB] = MAPPOPUP_THEME_STONE, + [MAPSEC_ISLAND_CAVE] = MAPPOPUP_THEME_STONE, + [MAPSEC_DESERT_RUINS] = MAPPOPUP_THEME_STONE, + [MAPSEC_ANCIENT_TOMB] = MAPPOPUP_THEME_STONE, + [MAPSEC_INSIDE_OF_TRUCK] = MAPPOPUP_THEME_WOOD, + [MAPSEC_SKY_PILLAR] = MAPPOPUP_THEME_STONE, + [MAPSEC_SECRET_BASE] = MAPPOPUP_THEME_STONE, + [MAPSEC_DYNAMIC] = MAPPOPUP_THEME_MARBLE, + [MAPSEC_AQUA_HIDEOUT - MAPSEC_SUBTRACT_KANTO] = MAPPOPUP_THEME_STONE, + [MAPSEC_MAGMA_HIDEOUT - MAPSEC_SUBTRACT_KANTO] = MAPPOPUP_THEME_STONE, + [MAPSEC_MIRAGE_TOWER - MAPSEC_SUBTRACT_KANTO] = MAPPOPUP_THEME_STONE, + [MAPSEC_BIRTH_ISLAND_2 - MAPSEC_SUBTRACT_KANTO] = MAPPOPUP_THEME_WOOD, + [MAPSEC_FARAWAY_ISLAND - MAPSEC_SUBTRACT_KANTO] = MAPPOPUP_THEME_WOOD, + [MAPSEC_ARTISAN_CAVE - MAPSEC_SUBTRACT_KANTO] = MAPPOPUP_THEME_STONE, + [MAPSEC_MARINE_CAVE - MAPSEC_SUBTRACT_KANTO] = MAPPOPUP_THEME_STONE, + [MAPSEC_UNDERWATER_MARINE_CAVE - MAPSEC_SUBTRACT_KANTO] = MAPPOPUP_THEME_STONE2, + [MAPSEC_TERRA_CAVE - MAPSEC_SUBTRACT_KANTO] = MAPPOPUP_THEME_STONE, + [MAPSEC_UNDERWATER_TERRA_CAVE - MAPSEC_SUBTRACT_KANTO] = MAPPOPUP_THEME_STONE2, + [MAPSEC_UNDERWATER_UNK1 - MAPSEC_SUBTRACT_KANTO] = MAPPOPUP_THEME_STONE2, + [MAPSEC_UNDERWATER_129 - MAPSEC_SUBTRACT_KANTO] = MAPPOPUP_THEME_STONE2, + [MAPSEC_DESERT_UNDERPASS - MAPSEC_SUBTRACT_KANTO] = MAPPOPUP_THEME_STONE, + [MAPSEC_ALTERING_CAVE_2 - MAPSEC_SUBTRACT_KANTO] = MAPPOPUP_THEME_STONE, + [MAPSEC_NAVEL_ROCK2 - MAPSEC_SUBTRACT_KANTO] = MAPPOPUP_THEME_STONE, + [MAPSEC_TRAINER_HILL - MAPSEC_SUBTRACT_KANTO] = MAPPOPUP_THEME_MARBLE }; static const u8 gText_PyramidFloor1[] = _("PYRAMID FLOOR 1"); diff --git a/src/match_call.c b/src/match_call.c index aa6945161..2879881bf 100644 --- a/src/match_call.c +++ b/src/match_call.c @@ -5,9 +5,9 @@ #include "event_data.h" #include "string_util.h" #include "battle.h" -#include "battle_frontier_1.h" #include "gym_leader_rematch.h" +extern void sub_8197080(u8 *dest); extern const u8 gTrainerClassNames[][13]; // Static type declarations @@ -360,7 +360,7 @@ MATCHCALLDEF(sMomMatchCallHeader, 0, 0, FLAG_0x0D8, gMomMatchCallDesc, gMomMatch static const match_call_text_data_t sStevenTextScripts[] = { { gText_Steven_Pokenav_2B5B95, 0xffff, 0xffff }, - { gText_Steven_Pokenav_2B5C53, FLAG_0x0C7, 0xffff }, + { gText_Steven_Pokenav_2B5C53, FLAG_RUSTURF_TUNNEL_OPENED, 0xffff }, { gText_Steven_Pokenav_2B5CC9, FLAG_0x0D4, 0xffff }, { gText_Steven_Pokenav_2B5DB4, FLAG_0x070, 0xffff }, { gText_Steven_Pokenav_2B5E26, FLAG_0x4F6, 0xffff }, @@ -415,7 +415,7 @@ MATCHCALLDEF(sBrendanMatchCallHeader, 4, FEMALE, FLAG_0x0FD, gMayBrendanMatchCal static const match_call_text_data_t sWallyTextScripts[] = { { gText_Wally_Pokenav_2B4DE2, 0xFFFF, 0xFFFF }, - { gText_Wally_Pokenav_2B4E57, FLAG_0x0C7, 0xFFFF }, + { gText_Wally_Pokenav_2B4E57, FLAG_RUSTURF_TUNNEL_OPENED, 0xFFFF }, { gText_Wally_Pokenav_2B4EA5, FLAG_0x4F3, 0xFFFF }, { gText_Wally_Pokenav_2B4F41, FLAG_0x097, 0xFFFF }, { gText_Wally_Pokenav_2B4FF3, FLAG_0x06F, 0xFFFF }, diff --git a/src/menu.c b/src/menu.c index 96dda3075..3acb44985 100644 --- a/src/menu.c +++ b/src/menu.c @@ -65,13 +65,27 @@ static const u8 gUnknown_0860F094[] = { 8, 4, 1 }; static const struct WindowTemplate gUnknown_0860F098[] = { - { 0x00, 0x02, 0x0F, 0x1B, 0x04, 0x0F, 0x194 }, + { + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 15, + .width = 27, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x194 + }, DUMMY_WIN_TEMPLATE }; static const struct WindowTemplate gUnknown_0860F0A8 = { - 0x00, 0x15, 0x09, 0x05, 0x04, 0x0F, 0x125 + .priority = 0, + .tilemapLeft = 21, + .tilemapTop = 9, + .width = 5, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x125 }; const u16 gUnknown_0860F0B0[] = INCBIN_U16("graphics/interface/860F0B0.gbapal"); @@ -120,7 +134,6 @@ extern void DrawWindowBorder(u8, u8, u8, u8, u8, u8); extern void sub_81980A8(u8, u8, u8, u8, u8, u8); extern u8 MoveMenuCursor(s8); extern u8 sub_8199134(s8, s8); -extern void sub_8199F74(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 speed, void (*callback)(struct TextSubPrinter *, u16), u8 letterSpacing, u8 lineSpacing); extern void sub_8198C78(void); extern void task_free_buf_after_copying_tile_data_to_vram(u8 taskId); @@ -987,7 +1000,7 @@ s8 ProcessMenuInput(void) return MENU_NOTHING_CHOSEN; } -s8 ProcessMenuInputNoWrapAround(void) +s8 Menu_ProcessInputNoWrapAround(void) { u8 oldPos = gUnknown_0203CD90.cursorPos; @@ -1045,7 +1058,7 @@ s8 ProcessMenuInput_other(void) return MENU_NOTHING_CHOSEN; } -s8 ProcessMenuInputNoWrapAround_other(void) +s8 Menu_ProcessInputNoWrapAround_other(void) { u8 oldPos = gUnknown_0203CD90.cursorPos; @@ -1143,7 +1156,7 @@ void SetWindowTemplateFields(struct WindowTemplate *template, u8 bg, u8 left, u8 template->baseBlock = baseBlock; } -struct WindowTemplate sub_8198A50(u8 bg, u8 left, u8 top, u8 width, u8 height, u8 paletteNum, u16 baseBlock) +struct WindowTemplate CreateWindowTemplate(u8 bg, u8 left, u8 top, u8 width, u8 height, u8 paletteNum, u16 baseBlock) { struct WindowTemplate template; SetWindowTemplateFields(&template, bg, left, top, width, height, paletteNum, baseBlock); @@ -1188,9 +1201,9 @@ void sub_8198C34(const struct WindowTemplate *window, u8 fontId, u16 baseTileNum sub_8198AF8(window, fontId, 0, 1, baseTileNum, paletteNum, 0); } -s8 ProcessMenuInputNoWrap_(void) +s8 Menu_ProcessInputNoWrap_(void) { - s8 result = ProcessMenuInputNoWrapAround(); + s8 result = Menu_ProcessInputNoWrapAround(); if (result != MENU_NOTHING_CHOSEN) sub_8198C78(); return result; @@ -1802,7 +1815,7 @@ void *decompress_and_copy_tile_data_to_vram(u8 bgId, const void *src, int size, return NULL; } -void copy_decompressed_tile_data_to_vram_autofree(u8 bgId, const void *src, int size, u16 offset, u8 mode) +void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void *src, int size, u16 offset, u8 mode) { int sizeOut; void *ptr = malloc_and_decompress(src, &sizeOut); diff --git a/src/menu_helpers.c b/src/menu_helpers.c index 178fbb5fa..217fdabae 100644 --- a/src/menu_helpers.c +++ b/src/menu_helpers.c @@ -169,7 +169,7 @@ void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *templa static void Task_CallYesOrNoCallback(u8 taskId) { - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: PlaySE(SE_SELECT); diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c index 68f31584b..7f031c704 100644 --- a/src/mystery_event_menu.c +++ b/src/mystery_event_menu.c @@ -42,8 +42,24 @@ static const struct BgTemplate sBgTemplates[] = static const struct WindowTemplate sWindowTemplates[] = { - {0, 4, 15, 22, 4, 14, 20}, - {0, 7, 6, 16, 4, 14, 0x6C}, + { + .priority = 0, + .tilemapLeft = 4, + .tilemapTop = 15, + .width = 22, + .height = 4, + .paletteNum = 14, + .baseBlock = 20 + }, + { + .priority = 0, + .tilemapLeft = 7, + .tilemapTop = 6, + .width = 16, + .height = 4, + .paletteNum = 14, + .baseBlock = 0x6C + }, DUMMY_WIN_TEMPLATE }; diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c index 8822cd05a..921c8e97c 100644 --- a/src/mystery_event_script.c +++ b/src/mystery_event_script.c @@ -226,9 +226,9 @@ bool8 MEScrCmd_setenigmaberry(struct ScriptContext *ctx) const u8 *message; bool32 haveBerry = IsEnigmaBerryValid(); u8 *berry = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); - StringCopyN(gStringVar1, gSaveBlock1Ptr->enigmaBerry.berry.name, BERRY_NAME_COUNT); + StringCopyN(gStringVar1, gSaveBlock1Ptr->enigmaBerry.berry.name, BERRY_NAME_LENGTH + 1); SetEnigmaBerry(berry); - StringCopyN(gStringVar2, gSaveBlock1Ptr->enigmaBerry.berry.name, BERRY_NAME_COUNT); + StringCopyN(gStringVar2, gSaveBlock1Ptr->enigmaBerry.berry.name, BERRY_NAME_LENGTH + 1); if (!haveBerry) { diff --git a/src/naming_screen.c b/src/naming_screen.c index f99d23bc3..42525380b 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -113,12 +113,53 @@ static const struct BgTemplate gUnknown_0858BE00[] = } }; -static const struct WindowTemplate gUnknown_0858BE10[] = { - { 0x01, 0x03, 0x0A, 0x13, 0x08, 0x0A, 0x030 }, - { 0x02, 0x03, 0x0A, 0x13, 0x08, 0x0A, 0x0C8 }, - { 0x03, 0x08, 0x06, 0x11, 0x02, 0x0A, 0x030 }, - { 0x03, 0x08, 0x04, 0x11, 0x02, 0x0A, 0x052 }, - { 0x00, 0x00, 0x00, 0x1E, 0x02, 0x0B, 0x074 }, +static const struct WindowTemplate gUnknown_0858BE10[] = +{ + { + .priority = 1, + .tilemapLeft = 3, + .tilemapTop = 10, + .width = 19, + .height = 8, + .paletteNum = 10, + .baseBlock = 0x030 + }, + { + .priority = 2, + .tilemapLeft = 3, + .tilemapTop = 10, + .width = 19, + .height = 8, + .paletteNum = 10, + .baseBlock = 0x0C8 + }, + { + .priority = 3, + .tilemapLeft = 8, + .tilemapTop = 6, + .width = 17, + .height = 2, + .paletteNum = 10, + .baseBlock = 0x030 + }, + { + .priority = 3, + .tilemapLeft = 8, + .tilemapTop = 4, + .width = 17, + .height = 2, + .paletteNum = 10, + .baseBlock = 0x052 + }, + { + .priority = 0, + .tilemapLeft = 0, + .tilemapTop = 0, + .width = 30, + .height = 2, + .paletteNum = 11, + .baseBlock = 0x074 + }, DUMMY_WIN_TEMPLATE }; diff --git a/src/new_game.c b/src/new_game.c index 8b8436d10..36c028ce8 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -23,6 +23,8 @@ #include "overworld.h" #include "mail.h" #include "battle_records.h" +#include "item.h" +#include "pokedex.h" extern u8 gDifferentSaveFile; extern u16 gSaveFileStatus; @@ -33,13 +35,11 @@ extern u16 GetGeneratedTrainerIdLower(void); extern void ClearContestWinnerPicsInContestHall(void); extern void sub_80BB358(void); extern void ResetBagScrollPositions(void); -extern void ResetPokedex(void); extern void ResetGabbyAndTy(void); extern void ResetSecretBases(void); extern void ResetLinkContestBoolean(void); extern void sub_8052DA8(void); extern void ResetPokemonStorageSystem(void); -extern void ClearBag(void); extern void NewGameInitPCItems(void); extern void ClearDecorationInventories(void); extern void ResetFanClub(void); @@ -133,7 +133,7 @@ static void ClearFrontierRecord(void) static void WarpToTruck(void) { Overworld_SetWarpDestination(25, 40, -1, -1, -1); // inside of truck - warp_in(); + WarpIntoMap(); } void Sav2_ClearSetDefault(void) diff --git a/src/option_menu.c b/src/option_menu.c index fc0c0c24e..d48a1e448 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -91,8 +91,24 @@ static const u8 *const sOptionMenuItemsNames[MENUITEM_COUNT] = static const struct WindowTemplate sOptionMenuWinTemplates[] = { - {1, 2, 1, 0x1A, 2, 1, 2}, - {0, 2, 5, 0x1A, 0xE, 1, 0x36}, + { + .priority = 1, + .tilemapLeft = 2, + .tilemapTop = 1, + .width = 26, + .height = 2, + .paletteNum = 1, + .baseBlock = 2 + }, + { + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 5, + .width = 26, + .height = 14, + .paletteNum = 1, + .baseBlock = 0x36 + }, DUMMY_WIN_TEMPLATE }; diff --git a/src/overworld.c b/src/overworld.c index 772f8a057..683679218 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1,8 +1,8 @@ #include "global.h" #include "overworld.h" -#include "main.h" #include "battle_setup.h" #include "berry.h" +#include "bg.h" // #include "cable_club.h" #include "clock.h" #include "event_data.h" @@ -20,15 +20,18 @@ #include "field_weather.h" #include "fieldmap.h" // #include "fldeff_flash.h" +#include "gpu_regs.h" #include "heal_location.h" #include "link.h" +#include "link_rfu.h" #include "load_save.h" #include "main.h" +#include "malloc.h" #include "m4a.h" -#include "constants/maps.h" #include "map_name_popup.h" #include "menu.h" #include "metatile_behavior.h" +#include "money.h" #include "new_game.h" #include "palette.h" #include "play_time.h" @@ -37,12 +40,11 @@ // #include "rotating_gate.h" #include "safari_zone.h" #include "save.h" +#include "save_location.h" #include "script.h" // #include "script_pokemon_80C4.h" #include "secret_base.h" -#include "constants/songs.h" #include "sound.h" -#include "constants/species.h" #include "start_menu.h" #include "task.h" // #include "tileset_anim.h" @@ -50,14 +52,11 @@ #include "tv.h" #include "scanline_effect.h" #include "wild_encounter.h" -#include "bg.h" -#include "money.h" -#include "save_location.h" #include "constants/abilities.h" -#include "malloc.h" -#include "gpu_regs.h" -#include "link_rfu.h" #include "constants/map_types.h" +#include "constants/maps.h" +#include "constants/songs.h" +#include "constants/species.h" // event scripts extern const u8 EventScript_WhiteOut[]; @@ -151,7 +150,7 @@ extern void TransferTilesetAnimsBuffer(void); extern bool32 sub_81D5F48(void); extern u8 GetCurrentTrainerHillMapId(void); extern bool8 warp0_in_pokecenter(void); -extern void dp13_810BB8C(void); +extern void ResetAllPicSprites(void); extern void FieldEffectActiveListClear(void); extern void SetUpFieldTasks(void); extern void sub_81BE6B8(void); @@ -159,7 +158,6 @@ extern void sub_80AAFA4(void); extern void ShowStartMenu(void); extern void sub_80AEE84(void); extern void mapldr_default(void); -extern void npc_paltag_set_load(u8); extern void sub_8088B3C(u16, u16); extern bool32 sub_800F0B8(void); extern bool32 sub_8009F3C(void); @@ -185,7 +183,7 @@ static bool32 sub_8086638(u8 *state); static bool32 load_map_stuff(u8 *state, u32); static bool32 map_loading_iteration_2_link(u8 *state); static void mli4_mapscripts_and_other(void); -static void map_loading_lcd_reset(void); +static void InitOverworldGraphicsRegisters(void); static u8 sub_8087858(u8); static u16 sub_80871C0(u32 a1); static void sub_80867C8(void); @@ -246,9 +244,9 @@ static void c1_link_related_func_set(u16 (*func)(u32)); static void SetFieldVBlankCallback(void); static void FieldClearVBlankHBlankCallbacks(void); static void sub_8085810(void); -static u8 sub_808532C(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3); -static u8 sub_808538C(struct UnkPlayerStruct *playerStruct, u8 a2, u16 a3, u8 a4); -static u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void); +static u8 GetAdjustedInitialTransitionFlags(struct InitialPlayerAvatarState *playerStruct, u16 a2, u8 a3); +static u8 GetAdjustedInitialDirection(struct InitialPlayerAvatarState *playerStruct, u8 a2, u16 a3, u8 a4); +static u16 GetCenterScreenMetatileBehavior(void); // IWRAM bss vars IWRAM_DATA static void *sUnknown_03000E0C; @@ -260,12 +258,12 @@ IWRAM_DATA static u32 sUnusedVar; // EWRAM vars EWRAM_DATA static u8 sUnknown_020322D8 = 0; -EWRAM_DATA struct WarpData gUnknown_020322DC = {0}; +EWRAM_DATA struct WarpData gLastUsedWarp = {0}; EWRAM_DATA static struct WarpData sWarpDestination = {0}; // new warp position -EWRAM_DATA static struct WarpData sUnknown_020322EC = {0}; -EWRAM_DATA static struct WarpData sUnknown_020322F4 = {0}; +EWRAM_DATA static struct WarpData gFixedDiveWarp = {0}; +EWRAM_DATA static struct WarpData gFixedHoleWarp = {0}; EWRAM_DATA static u16 sLastMapSectionId = 0; -EWRAM_DATA static struct UnkPlayerStruct sUnknown_02032300 = {0}; +EWRAM_DATA static struct InitialPlayerAvatarState gInitialPlayerAvatarState = {0}; EWRAM_DATA static u16 sAmbientCrySpecies = 0; EWRAM_DATA static bool8 sIsAmbientCryWaterMon = FALSE; EWRAM_DATA struct LinkPlayerEventObject gLinkPlayerEventObjects[4] = {0}; @@ -292,17 +290,17 @@ static const u8 sUnusedData[] = 0x2C, 0x00, 0x00, 0x00, }; -const struct UCoords32 gUnknown_08339D64[] = -{ - { 0, 0}, - { 0, 1}, - { 0, -1}, - {-1, 0}, - { 1, 0}, - {-1, 1}, - { 1, 1}, - {-1, -1}, - { 1, -1}, +const struct UCoords32 gDirectionToVectors[] = +{ + { 0, 0}, // DIR_NONE + { 0, 1}, // DIR_SOUTH + { 0, -1}, // DIR_NORTH + {-1, 0}, // DIR_WEST + { 1, 0}, // DIR_EAST + {-1, 1}, // DIR_SOUTHWEST + { 1, 1}, // DIR_SOUTHEAST + {-1, -1}, // DIR_NORTHWEST + { 1, -1}, // DIR_NORTHEAST }; static const struct BgTemplate gUnknown_08339DAC[] = @@ -345,7 +343,7 @@ static const struct BgTemplate gUnknown_08339DAC[] = } }; -static const struct ScanlineEffectParams gUnknown_08339DBC = +static const struct ScanlineEffectParams sFlashEffectParams = { (void *)REG_ADDR_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1, @@ -400,12 +398,12 @@ void DoWhiteOut(void) HealPlayerParty(); Overworld_ResetStateAfterWhiteOut(); Overworld_SetWarpDestToLastHealLoc(); - warp_in(); + WarpIntoMap(); } void Overworld_ResetStateAfterFly(void) { - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); FlagClear(FLAG_SYS_CYCLING_ROAD); FlagClear(FLAG_SYS_CRUISE_MODE); FlagClear(FLAG_SYS_SAFARI_MODE); @@ -415,7 +413,7 @@ void Overworld_ResetStateAfterFly(void) void Overworld_ResetStateAfterTeleport(void) { - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); FlagClear(FLAG_SYS_CYCLING_ROAD); FlagClear(FLAG_SYS_CRUISE_MODE); FlagClear(FLAG_SYS_SAFARI_MODE); @@ -426,7 +424,7 @@ void Overworld_ResetStateAfterTeleport(void) void Overworld_ResetStateAfterDigEscRope(void) { - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); FlagClear(FLAG_SYS_CYCLING_ROAD); FlagClear(FLAG_SYS_CRUISE_MODE); FlagClear(FLAG_SYS_SAFARI_MODE); @@ -436,7 +434,7 @@ void Overworld_ResetStateAfterDigEscRope(void) static void Overworld_ResetStateAfterWhiteOut(void) { - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); FlagClear(FLAG_SYS_CYCLING_ROAD); FlagClear(FLAG_SYS_CRUISE_MODE); FlagClear(FLAG_SYS_SAFARI_MODE); @@ -575,16 +573,16 @@ const struct MapLayout *GetMapLayout(void) void ApplyCurrentWarp(void) { - gUnknown_020322DC = gSaveBlock1Ptr->location; + gLastUsedWarp = gSaveBlock1Ptr->location; gSaveBlock1Ptr->location = sWarpDestination; - sUnknown_020322EC = sDummyWarpData; - sUnknown_020322F4 = sDummyWarpData; + gFixedDiveWarp = sDummyWarpData; + gFixedHoleWarp = sDummyWarpData; } void set_warp2_warp3_to_neg_1(void) { - sUnknown_020322EC = sDummyWarpData; - sUnknown_020322F4 = sDummyWarpData; + gFixedDiveWarp = sDummyWarpData; + gFixedHoleWarp = sDummyWarpData; } void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) @@ -596,7 +594,7 @@ void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, warp->y = y; } -bool32 warp_data_is_not_neg_1(struct WarpData *warp) +bool32 IsDummyWarp(struct WarpData *warp) { if (warp->mapGroup != -1) return FALSE; @@ -617,12 +615,12 @@ struct MapHeader const *const Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u return gMapGroups[mapGroup][mapNum]; } -struct MapHeader const *const warp1_get_mapheader(void) +struct MapHeader const *const GetDestinationWarpMapHeader(void) { return Overworld_GetMapHeaderByGroupAndId(sWarpDestination.mapGroup, sWarpDestination.mapNum); } -void set_current_map_header_from_sav1_save_old_name(void) +void LoadCurrentMapData(void) { sLastMapSectionId = gMapHeader.regionMapSectionId; gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum); @@ -636,7 +634,7 @@ void LoadSaveblockMapHeader(void) gMapHeader.mapLayout = GetMapLayout(); } -void update_camera_pos_from_warpid(void) +void SetPlayerCoordsFromWarp(void) { if (gSaveBlock1Ptr->location.warpId >= 0 && gSaveBlock1Ptr->location.warpId < gMapHeader.events->warpCount) { @@ -655,11 +653,11 @@ void update_camera_pos_from_warpid(void) } } -void warp_in(void) +void WarpIntoMap(void) { ApplyCurrentWarp(); - set_current_map_header_from_sav1_save_old_name(); - update_camera_pos_from_warpid(); + LoadCurrentMapData(); + SetPlayerCoordsFromWarp(); } void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) @@ -689,7 +687,7 @@ void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused) void sub_8084CCC(u8 a1) { - const struct HealLocation *warp = GetHealLocationPointer(a1); + const struct HealLocation *warp = GetHealLocation(a1); if (warp) Overworld_SetWarpDestination(warp->group, warp->map, -1, warp->x, warp->y); @@ -702,7 +700,7 @@ void Overworld_SetWarpDestToLastHealLoc(void) void Overworld_SetHealLocationWarp(u8 healLocationId) { - const struct HealLocation *healLocation = GetHealLocationPointer(healLocationId); + const struct HealLocation *healLocation = GetHealLocation(healLocationId); if (healLocation != NULL) SetWarpData(&gSaveBlock1Ptr->lastHealLocation, healLocation->group, healLocation->map, -1, healLocation->x, healLocation->y); @@ -726,27 +724,27 @@ void sub_8084E14(void) sWarpDestination = gSaveBlock1Ptr->warp4; } -void sub_8084E2C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +void SetFixedDiveWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { - SetWarpData(&sUnknown_020322EC, mapGroup, mapNum, warpId, x, y); + SetWarpData(&gFixedDiveWarp, mapGroup, mapNum, warpId, x, y); } -void warp1_set_to_warp2(void) +void SetFixedDiveWarpAsDestination(void) { - sWarpDestination = sUnknown_020322EC; + sWarpDestination = gFixedDiveWarp; } -void sub_8084E80(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +void SetFixedHoleWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { - SetWarpData(&sUnknown_020322F4, mapGroup, mapNum, warpId, x, y); + SetWarpData(&gFixedHoleWarp, mapGroup, mapNum, warpId, x, y); } -void sub_8084EBC(s16 x, s16 y) +void SetFixedHoleWarpAsDestination(s16 x, s16 y) { - if (warp_data_is_not_neg_1(&sUnknown_020322F4) == TRUE) - sWarpDestination = gUnknown_020322DC; + if (IsDummyWarp(&gFixedHoleWarp) == TRUE) + sWarpDestination = gLastUsedWarp; else - Overworld_SetWarpDestination(sUnknown_020322F4.mapGroup, sUnknown_020322F4.mapNum, -1, x, y); + Overworld_SetWarpDestination(gFixedHoleWarp.mapGroup, gFixedHoleWarp.mapNum, -1, x, y); } void warp1_set_to_sav1w(void) @@ -761,7 +759,7 @@ void sub_8084F2C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) void sub_8084F6C(u8 a1) { - const struct HealLocation *warp = GetHealLocationPointer(a1); + const struct HealLocation *warp = GetHealLocation(a1); if (warp) SetWarpData(&gSaveBlock1Ptr->warp1, warp->group, warp->map, -1, warp->x, warp->y); } @@ -787,7 +785,7 @@ const struct MapConnection *GetMapConnection(u8 dir) return NULL; } -bool8 sub_8084FF8(u8 dir, u16 x, u16 y) +bool8 SetDiveWarp(u8 dir, u16 x, u16 y) { const struct MapConnection *connection = GetMapConnection(dir); @@ -798,21 +796,21 @@ bool8 sub_8084FF8(u8 dir, u16 x, u16 y) else { mapheader_run_script_with_tag_x6(); - if (warp_data_is_not_neg_1(&sUnknown_020322EC)) + if (IsDummyWarp(&gFixedDiveWarp)) return FALSE; - warp1_set_to_warp2(); + SetFixedDiveWarpAsDestination(); } return TRUE; } -bool8 sub_8085058(u16 x, u16 y) +bool8 SetDiveWarpEmerge(u16 x, u16 y) { - return sub_8084FF8(CONNECTION_EMERGE, x, y); + return SetDiveWarp(CONNECTION_EMERGE, x, y); } -bool8 sub_8085078(u16 x, u16 y) +bool8 SetDiveWarpDive(u16 x, u16 y) { - return sub_8084FF8(CONNECTION_DIVE, x, y); + return SetDiveWarp(CONNECTION_DIVE, x, y); } void mliX_load_map(u8 mapGroup, u8 mapNum) @@ -824,7 +822,7 @@ void mliX_load_map(u8 mapGroup, u8 mapNum) sub_8085810(); ApplyCurrentWarp(); - set_current_map_header_from_sav1_save_old_name(); + LoadCurrentMapData(); LoadEventObjTemplatesFromHeader(); TrySetMapSaveWarpStatus(); ClearTempFieldEventData(); @@ -860,7 +858,7 @@ static void mli0_load_map(u32 a1) bool8 v2; bool8 indoors; - set_current_map_header_from_sav1_save_old_name(); + LoadCurrentMapData(); if (!(sUnknown_020322D8 & 1)) { if (gMapHeader.mapLayoutId == 0x169) @@ -905,84 +903,84 @@ static void mli0_load_map(u32 a1) } } -void player_avatar_init_params_reset(void) +void ResetInitialPlayerAvatarState(void) { - sUnknown_02032300.player_field_1 = 1; - sUnknown_02032300.player_field_0 = 1; + gInitialPlayerAvatarState.direction = 1; + gInitialPlayerAvatarState.transitionFlags = 1; } -void walkrun_find_lowest_active_bit_in_bitfield(void) +void StoreInitialPlayerAvatarState(void) { - sUnknown_02032300.player_field_1 = GetPlayerFacingDirection(); + gInitialPlayerAvatarState.direction = GetPlayerFacingDirection(); if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE)) - sUnknown_02032300.player_field_0 = 2; + gInitialPlayerAvatarState.transitionFlags = 2; else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE)) - sUnknown_02032300.player_field_0 = 4; + gInitialPlayerAvatarState.transitionFlags = 4; else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING)) - sUnknown_02032300.player_field_0 = 8; + gInitialPlayerAvatarState.transitionFlags = 8; else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_4)) - sUnknown_02032300.player_field_0 = 16; + gInitialPlayerAvatarState.transitionFlags = 16; else - sUnknown_02032300.player_field_0 = 1; + gInitialPlayerAvatarState.transitionFlags = 1; } -static struct UnkPlayerStruct *sub_80852D4(void) +static struct InitialPlayerAvatarState *GetInitialPlayerAvatarState(void) { - struct UnkPlayerStruct playerStruct; + struct InitialPlayerAvatarState playerStruct; u8 mapType = Overworld_GetMapTypeOfSaveblockLocation(); - u16 v2 = cur_mapdata_block_role_at_screen_center_acc_to_sav1(); - u8 v4 = sub_808532C(&sUnknown_02032300, v2, mapType); - playerStruct.player_field_0 = v4; - playerStruct.player_field_1 = sub_808538C(&sUnknown_02032300, v4, v2, mapType); - sUnknown_02032300 = playerStruct; - return &sUnknown_02032300; + u16 metatileBehavior = GetCenterScreenMetatileBehavior(); + u8 transitionFlags = GetAdjustedInitialTransitionFlags(&gInitialPlayerAvatarState, metatileBehavior, mapType); + playerStruct.transitionFlags = transitionFlags; + playerStruct.direction = GetAdjustedInitialDirection(&gInitialPlayerAvatarState, transitionFlags, metatileBehavior, mapType); + gInitialPlayerAvatarState = playerStruct; + return &gInitialPlayerAvatarState; } -static u8 sub_808532C(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3) +static u8 GetAdjustedInitialTransitionFlags(struct InitialPlayerAvatarState *playerStruct, u16 metatileBehavior, u8 mapType) { - if (a3 != 8 && FlagGet(FLAG_SYS_CRUISE_MODE)) + if (mapType != MAP_TYPE_INDOOR && FlagGet(FLAG_SYS_CRUISE_MODE)) return 1; - else if (a3 == 5) + else if (mapType == MAP_TYPE_UNDERWATER) return 16; - else if (MetatileBehavior_IsSurfableWaterOrUnderwater(a2) == 1) + else if (MetatileBehavior_IsSurfableWaterOrUnderwater(metatileBehavior) == TRUE) return 8; else if (Overworld_IsBikingAllowed() != TRUE) return 1; - else if (playerStruct->player_field_0 == 2) + else if (playerStruct->transitionFlags == 2) return 2; - else if (playerStruct->player_field_0 != 4) + else if (playerStruct->transitionFlags != 4) return 1; else return 4; } -static u8 sub_808538C(struct UnkPlayerStruct *playerStruct, u8 a2, u16 a3, u8 a4) +static u8 GetAdjustedInitialDirection(struct InitialPlayerAvatarState *playerStruct, u8 transitionFlags, u16 metatileBehavior, u8 mapType) { - if (FlagGet(FLAG_SYS_CRUISE_MODE) && a4 == 6) + if (FlagGet(FLAG_SYS_CRUISE_MODE) && mapType == MAP_TYPE_6) return 4; - else if (MetatileBehavior_IsDeepSouthWarp(a3) == TRUE) + else if (MetatileBehavior_IsDeepSouthWarp(metatileBehavior) == TRUE) return 2; - else if (MetatileBehavior_IsNonAnimDoor(a3) == TRUE || MetatileBehavior_IsDoor(a3) == TRUE) + else if (MetatileBehavior_IsNonAnimDoor(metatileBehavior) == TRUE || MetatileBehavior_IsDoor(metatileBehavior) == TRUE) return 1; - else if (MetatileBehavior_IsSouthArrowWarp(a3) == TRUE) + else if (MetatileBehavior_IsSouthArrowWarp(metatileBehavior) == TRUE) return 2; - else if (MetatileBehavior_IsNorthArrowWarp(a3) == TRUE) + else if (MetatileBehavior_IsNorthArrowWarp(metatileBehavior) == TRUE) return 1; - else if (MetatileBehavior_IsWestArrowWarp(a3) == TRUE) + else if (MetatileBehavior_IsWestArrowWarp(metatileBehavior) == TRUE) return 4; - else if (MetatileBehavior_IsEastArrowWarp(a3) == TRUE) + else if (MetatileBehavior_IsEastArrowWarp(metatileBehavior) == TRUE) return 3; - else if ((playerStruct->player_field_0 == 16 && a2 == 8) - || (playerStruct->player_field_0 == 8 && a2 == 16)) - return playerStruct->player_field_1; - else if (MetatileBehavior_IsLadder(a3) == TRUE) - return playerStruct->player_field_1; + else if ((playerStruct->transitionFlags == 16 && transitionFlags == 8) + || (playerStruct->transitionFlags == 8 && transitionFlags == 16)) + return playerStruct->direction; + else if (MetatileBehavior_IsLadder(metatileBehavior) == TRUE) + return playerStruct->direction; else return 1; } -static u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void) +static u16 GetCenterScreenMetatileBehavior(void) { return MapGridGetMetatileBehaviorAt(gSaveBlock1Ptr->pos.x + 7, gSaveBlock1Ptr->pos.y + 7); } @@ -1232,7 +1230,7 @@ void Overworld_ChangeMusicTo(u16 newMusic) u8 GetMapMusicFadeoutSpeed(void) { - const struct MapHeader *mapHeader = warp1_get_mapheader(); + const struct MapHeader *mapHeader = GetDestinationWarpMapHeader(); if (Overworld_MapTypeIsIndoors(mapHeader->mapType) == TRUE) return 2; else @@ -1258,7 +1256,7 @@ void music_something(void) } } -bool8 sub_80859A0(void) +bool8 BGMusicStopped(void) { return IsNotWaitingForBGMStop(); } @@ -1361,7 +1359,7 @@ u8 Overworld_GetMapTypeOfSaveblockLocation(void) u8 get_map_light_from_warp0(void) { - return GetMapTypeByWarpData(&gUnknown_020322DC); + return GetMapTypeByWarpData(&gLastUsedWarp); } bool8 is_map_type_1_2_3_5_or_6(u8 mapType) @@ -1550,7 +1548,7 @@ void CB2_NewGame(void) StopMapMusic(); ResetSafariZoneFlag_(); NewGameInitData(); - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); PlayTimeCounter_Start(); ScriptContext1_Init(); ScriptContext2_Disable(); @@ -1572,7 +1570,7 @@ void CB2_WhiteOut(void) StopMapMusic(); ResetSafariZoneFlag_(); DoWhiteOut(); - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); ScriptContext1_Init(); ScriptContext2_Disable(); gFieldCallback = sub_80AF3C8; @@ -1755,7 +1753,7 @@ void CB2_ContinueSavedGame(void) { ClearSecretBase2Field_9(); warp1_set_to_sav1w(); - warp_in(); + WarpIntoMap(); sub_80EDB44(); SetMainCallback2(CB2_LoadMap); } @@ -1806,19 +1804,19 @@ static void VBlankCB_Field(void) TransferTilesetAnimsBuffer(); } -static void sub_80863B0(void) +static void InitCurrentFlashLevelScanlineEffect(void) { - u8 val; + u8 flashLevel; if (sub_81A9E6C()) { door_upload_tiles(); - ScanlineEffect_SetParams(gUnknown_08339DBC); + ScanlineEffect_SetParams(sFlashEffectParams); } - else if ((val = Overworld_GetFlashLevel())) + else if ((flashLevel = Overworld_GetFlashLevel())) { - sub_80B00E8(val); - ScanlineEffect_SetParams(gUnknown_08339DBC); + sub_80B00E8(flashLevel); + ScanlineEffect_SetParams(sFlashEffectParams); } } @@ -1850,8 +1848,8 @@ static bool32 map_loading_iteration_3(u8 *state) (*state)++; break; case 4: - sub_80863B0(); - map_loading_lcd_reset(); + InitCurrentFlashLevelScanlineEffect(); + InitOverworldGraphicsRegisters(); sub_8197200(); (*state)++; break; @@ -1925,8 +1923,8 @@ static bool32 load_map_stuff(u8 *state, u32 a2) (*state)++; break; case 4: - sub_80863B0(); - map_loading_lcd_reset(); + InitCurrentFlashLevelScanlineEffect(); + InitOverworldGraphicsRegisters(); sub_8197200(); (*state)++; break; @@ -2022,8 +2020,8 @@ static bool32 map_loading_iteration_2_link(u8 *state) (*state)++; break; case 3: - sub_80863B0(); - map_loading_lcd_reset(); + InitCurrentFlashLevelScanlineEffect(); + InitOverworldGraphicsRegisters(); sub_8197200(); (*state)++; break; @@ -2102,13 +2100,13 @@ static void sub_80867D8(void) static void sub_8086860(void) { - sub_80863B0(); - map_loading_lcd_reset(); + InitCurrentFlashLevelScanlineEffect(); + InitOverworldGraphicsRegisters(); sub_8197200(); mapdata_load_assets_to_gpu_and_full_redraw(); } -static void map_loading_lcd_reset(void) +static void InitOverworldGraphicsRegisters(void) { clear_scheduled_bg_copies_to_vram(); reset_temp_tile_data_buffers(); @@ -2149,13 +2147,13 @@ static void sub_8086988(u32 a1) ResetSpriteData(); ResetPaletteFade(); ScanlineEffect_Clear(); - dp13_810BB8C(); + ResetAllPicSprites(); ResetCameraUpdateInfo(); InstallCameraPanAheadCallback(); if (!a1) - npc_paltag_set_load(0); + InitEventObjectPalettes(0); else - npc_paltag_set_load(1); + InitEventObjectPalettes(1); FieldEffectActiveListClear(); sub_80AAFA4(); @@ -2178,16 +2176,16 @@ static void sub_80869DC(void) static void mli4_mapscripts_and_other(void) { s16 x, y; - struct UnkPlayerStruct *player; + struct InitialPlayerAvatarState *player; gUnknown_03005DEC = 0; gUnknown_03005DE8 = 0; sub_808D438(); sav1_camera_get_focus_coords(&x, &y); - player = sub_80852D4(); - InitPlayerAvatar(x, y, player->player_field_1, gSaveBlock2Ptr->playerGender); - SetPlayerAvatarTransitionFlags(player->player_field_0); - player_avatar_init_params_reset(); + player = GetInitialPlayerAvatarState(); + InitPlayerAvatar(x, y, player->direction, gSaveBlock2Ptr->playerGender); + SetPlayerAvatarTransitionFlags(player->transitionFlags); + ResetInitialPlayerAvatarState(); TrySpawnEventObjects(0, 0); mapheader_run_first_tag4_script_list_match(); } @@ -2732,8 +2730,8 @@ static const u8 *sub_80873B4(struct UnkStruct_8054FF8 *a1) return 0; unkStruct = a1->sub; - unkStruct.x += gUnknown_08339D64[a1->d].x; - unkStruct.y += gUnknown_08339D64[a1->d].y; + unkStruct.x += gDirectionToVectors[a1->d].x; + unkStruct.y += gDirectionToVectors[a1->d].y; unkStruct.height = 0; linkPlayerId = GetLinkPlayerIdAt(unkStruct.x, unkStruct.y); @@ -3166,12 +3164,12 @@ static void SpriteCB_LinkPlayer(struct Sprite *sprite) SetObjectSubpriorityByZCoord(eventObj->previousElevation, sprite, 1); sprite->oam.priority = ZCoordToPriority(eventObj->previousElevation); - if (!linkPlayerEventObj->mode) + if (!linkPlayerEventObj->mode) StartSpriteAnim(sprite, GetFaceDirectionAnimNum(eventObj->range.as_byte)); else StartSpriteAnimIfDifferent(sprite, GetMoveDirectionAnimNum(eventObj->range.as_byte)); - UpdateEventObjectSpriteVisibility(sprite, 0); + UpdateEventObjectSpriteVisibility(sprite, 0); if (eventObj->triggerGroundEffectsOnMove) { sprite->invisible = ((sprite->data[7] & 4) >> 2); diff --git a/src/player_pc.c b/src/player_pc.c index ba18b45ab..7ac8e78d5 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -184,9 +184,33 @@ const struct MenuAction gMailboxMailOptions[] = static const struct WindowTemplate gUnknown_085DFF24[3] = { - {0x00, 0x01, 0x01, 0x09, 0x06, 0x0F, 0x0001}, - {0x00, 0x01, 0x01, 0x09, 0x08, 0x0F, 0x0001}, - {0x00, 0x01, 0x01, 0x0A, 0x08, 0x0F, 0x0001} + { + .priority = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 9, + .height = 6, + .paletteNum = 15, + .baseBlock = 1 + }, + { + .priority = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 9, + .height = 8, + .paletteNum = 15, + .baseBlock = 1 + }, + { + .priority = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 10, + .height = 8, + .paletteNum = 15, + .baseBlock = 1 + } }; static const struct YesNoFuncTable ResumeFromWithdrawYesNoFuncList = // ResumeFromWithdrawYesNoFuncList @@ -195,27 +219,85 @@ static const struct YesNoFuncTable ResumeFromWithdrawYesNoFuncList = // ResumeFr ItemStorage_ResumeInputFromNoToss }; -static const struct ListMenuTemplate gUnknown_085DFF44 = { - NULL, - ItemStorage_MoveCursor, - fish4_goto_x5_or_x6, - 0, 0, - 0, 0, 8, 0, - 9, 2, 1, 3, FALSE, 0, FALSE, 7 +static const struct ListMenuTemplate gUnknown_085DFF44 = +{ + .items = NULL, + .moveCursorFunc = ItemStorage_MoveCursor, + .itemPrintFunc = fish4_goto_x5_or_x6, + .totalItems = 0, + .maxShowed = 0, + .windowId = 0, + .header_X = 0, + .item_X = 8, + .cursor_X = 0, + .upText_Y = 9, + .cursorPal = 2, + .fillValue = 1, + .cursorShadowPal = 3, + .lettersSpacing = FALSE, + .itemVerticalPadding = 0, + .scrollMultiple = FALSE, + .fontId = 7 }; static const struct WindowTemplate gUnknown_085DFF5C[5] = { - {0x00, 0x10, 0x01, 0x0D, 0x12, 0x0F, 0x0001}, - {0x00, 0x01, 0x0D, 0x0D, 0x06, 0x0F, 0x00EB}, - {0x00, 0x01, 0x08, 0x03, 0x03, 0x0F, 0x0153}, - {0x00, 0x01, 0x01, 0x0D, 0x02, 0x0F, 0x0139}, - {0x00, 0x08, 0x09, 0x06, 0x02, 0x0F, 0x015C} + { + .priority = 0, + .tilemapLeft = 16, + .tilemapTop = 1, + .width = 13, + .height = 18, + .paletteNum = 15, + .baseBlock = 0x0001 + }, + { + .priority = 0, + .tilemapLeft = 1, + .tilemapTop = 13, + .width = 13, + .height = 6, + .paletteNum = 15, + .baseBlock = 0x00EB + }, + { + .priority = 0, + .tilemapLeft = 1, + .tilemapTop = 8, + .width = 3, + .height = 3, + .paletteNum = 15, + .baseBlock = 0x0153 + }, + { + .priority = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 13, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x0139 + }, + { + .priority = 0, + .tilemapLeft = 8, + .tilemapTop = 9, + .width = 6, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x015C + } }; static const struct WindowTemplate gUnknown_085DFF84 = { - 0x00, 0x09, 0x07, 0x05, 0x04, 0x0F, 0x0168 + .priority = 0, + .tilemapLeft = 9, + .tilemapTop = 7, + .width = 5, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x0168 }; static const u8 gUnknown_085DFF8C[] = {0x01, 0x03, 0x02, 0x00}; @@ -272,7 +354,7 @@ static void PlayerPCProcessMenuInput(u8 taskId) if(gPcItemMenuOptionsNum > 3) inputOptionId = ProcessMenuInput(); else - inputOptionId = ProcessMenuInputNoWrapAround(); + inputOptionId = Menu_ProcessInputNoWrapAround(); switch(inputOptionId) { @@ -476,7 +558,7 @@ static void ItemStorage_WithdrawToss_Helper(u8 taskId, bool8 toss) playerPCItemPageInfo.scrollIndicatorId = 0xFF; ItemStorage_SetItemAndMailCount(taskId); sub_816BC14(); - gpu_pal_allocator_reset__manage_upper_four(); + FreeAndReserveObjectSpritePalettes(); LoadListMenuArrowsGfx(); sub_8122344(gUnknown_0203BCC4->spriteIds, 7); sub_8197434(0,0); @@ -686,7 +768,7 @@ static void Mailbox_DrawYesNoBeforeMove(u8 taskId) static void Mailbox_MoveToBagYesNoPrompt(u8 taskId) { - switch(ProcessMenuInputNoWrap_()) + switch(Menu_ProcessInputNoWrap_()) { case 0: Mailbox_DoMailMoveToBag(taskId); diff --git a/src/pokeblock.c b/src/pokeblock.c index 7dd20b237..0fa2cde04 100644 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -294,21 +294,118 @@ static const struct Pokeblock sFavoritePokeblocksTable[] = static const struct WindowTemplate sWindowTemplatesForPokeblockMenu[] = { - {0, 2, 1, 9, 2, 0xF, 0x1E}, - {0, 0xF, 1, 0xE, 0x12, 0xF, 0x30}, - {0, 2, 0xD, 5, 2, 0xF, 0x12C}, - {0, 2, 0xF, 5, 2, 0xF, 0x136}, - {0, 2, 0x11, 5, 2, 0xF, 0x140}, - {0, 8, 0xD, 5, 2, 0xF, 0x14A}, - {0, 8, 0xF, 5, 2, 0xF, 0x154}, - {0, 0xB, 0x11, 2, 2, 0xF, 0x15E}, - {1, 7, 5, 6, 6, 0xF, 0x162}, - {1, 7, 7, 6, 4, 0xF, 0x186}, - {1, 2, 0xF, 0x1B, 4, 0xF, 0x19E}, + { + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 1, + .width = 9, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x1E + }, + { + .priority = 0, + .tilemapLeft = 15, + .tilemapTop = 1, + .width = 14, + .height = 18, + .paletteNum = 15, + .baseBlock = 0x30 + }, + { + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 13, + .width = 5, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x12C + }, + { + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 15, + .width = 5, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x136 + }, + { + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 17, + .width = 5, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x140 + }, + { + .priority = 0, + .tilemapLeft = 8, + .tilemapTop = 13, + .width = 5, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x14A + }, + { + .priority = 0, + .tilemapLeft = 8, + .tilemapTop = 15, + .width = 5, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x154 + }, + { + .priority = 0, + .tilemapLeft = 11, + .tilemapTop = 17, + .width = 2, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x15E + }, + { + .priority = 1, + .tilemapLeft = 7, + .tilemapTop = 5, + .width = 6, + .height = 6, + .paletteNum = 15, + .baseBlock = 0x162 + }, + { + .priority = 1, + .tilemapLeft = 7, + .tilemapTop = 7, + .width = 6, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x186 + }, + { + .priority = 1, + .tilemapLeft = 2, + .tilemapTop = 15, + .width = 27, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x19E + }, DUMMY_WIN_TEMPLATE }; -static const struct WindowTemplate sTossPkblockWindowTemplate = {1, 0x15, 9, 5, 4, 0xF, 0x20A}; +static const struct WindowTemplate sTossPkblockWindowTemplate = +{ + .priority = 1, + .tilemapLeft = 21, + .tilemapTop = 9, + .width = 5, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x20A +}; static const struct ListMenuTemplate sPokeblockListMenuTemplate = { @@ -1042,7 +1139,7 @@ static void Task_HandlePokeblockOptionsInput(u8 taskId) if (sub_81221EC() == TRUE) return; - itemId = ProcessMenuInputNoWrapAround(); + itemId = Menu_ProcessInputNoWrapAround(); if (itemId == MENU_NOTHING_CHOSEN) { return; diff --git a/src/pokedex.c b/src/pokedex.c index 0d73a9fe1..2cb3c153f 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -11,7 +11,7 @@ #include "main.h" #include "sound.h" #include "task.h" -#include "battle_dome_cards.h" +#include "trainer_pokemon_sprites.h" #include "scanline_effect.h" #include "malloc.h" #include "gpu_regs.h" @@ -821,7 +821,7 @@ const u8 sText_TenDashes[] = _("----------"); void ResetPokedex(void) { u16 i; - + gUnknown_02039B50 = 0; gUnknown_02039B52 = 64; gUnknown_030060B0 = 0; @@ -910,7 +910,7 @@ void sub_80BB534(void) { u8 *addr; u32 size; - + switch (gMain.state) { case 0: @@ -929,7 +929,7 @@ void sub_80BB534(void) ResetPaletteFade(); FreeAllSpritePalettes(); gReservedSpritePaletteCount = 8; - dp13_810BB8C(); + ResetAllPicSprites(); gMain.state++; break; case 2: @@ -984,7 +984,7 @@ void sub_80BB78C(u8 taskId) void sub_80BB7D4(u8 taskId) { SetGpuReg(REG_OFFSET_BG0VOFS, gUnknown_02039B4C->menuY); - + if (gUnknown_02039B4C->menuY) { gUnknown_02039B4C->menuY -= 8; @@ -1377,7 +1377,7 @@ bool8 sub_80BC514(u8 a) SetBgTilemapBuffer(2, AllocZeroed(0x800)); SetBgTilemapBuffer(1, AllocZeroed(0x800)); SetBgTilemapBuffer(0, AllocZeroed(0x800)); - copy_decompressed_tile_data_to_vram_autofree(3, gPokedexMenu_Gfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0); CopyToBgTilemapBuffer(1, gUnknown_08DC2C5C, 0, 0); CopyToBgTilemapBuffer(3, gUnknown_08DC2DAC, 0, 0); if (a == 0) @@ -1467,7 +1467,7 @@ void sub_80BC844(u8 a) void sub_80BC890(void) { void* tilemapBuffer; - + FreeAllWindowBuffers(); tilemapBuffer = GetBgTilemapBuffer(0); if (tilemapBuffer) @@ -1487,7 +1487,7 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode) { u16 vars[3]; //I have no idea why three regular variables are stored in an array, but whatever. s16 i; - + gUnknown_02039B4C->pokemonListCount = 0; switch (dexMode) @@ -1633,7 +1633,7 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode) void sub_80BCE2C(u8 windowId, u8 fontId, const u8* str, u8 left, u8 top) { u8 color[3]; - + color[0] = 0; color[1] = 15; color[2] = 3; @@ -1731,7 +1731,7 @@ void sub_80BD154(u16 a, u8 left, u8 top, u16 unused) { u8 text[6]; u16 r6; - + memcpy(text, gUnknown_0855D2B8, 6); r6 = gUnknown_02039B4C->unk0[a].dexNum; if (gUnknown_02039B4C->dexMode == DEX_MODE_HOENN) @@ -1753,7 +1753,7 @@ void sub_80BD1F4(u16 a, u8 x, u8 y, u16 unused) u8 sub_80BD23C(u16 num, u8 left, u8 top) { const u8* str; - + num = NationalPokedexNumToSpecies(num); if (num) str = gSpeciesNames[num]; @@ -1773,7 +1773,7 @@ void sub_80BD2B4(u16 a, u16 b) u8 i; u16 unk; u8 spriteId; - + gPaletteFade.bufferTransferDisabled = TRUE; for (i = 0; i < 4; i++) @@ -1803,13 +1803,13 @@ void sub_80BD2B4(u16 a, u16 b) gSprites[spriteId].callback = sub_80BE4E0; gSprites[spriteId].data[5] = 32; } - + sub_80BCE84(0, a, b); SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_02039B4C->unk62D); gUnknown_02039B4C->unk630 = 0; gUnknown_02039B4C->unk632 = 0; - + gPaletteFade.bufferTransferDisabled = FALSE; } @@ -1897,7 +1897,7 @@ u16 sub_80BD69C(u16 a, u16 b) u8 i; u16 r6; u8 r10 = 0; - + if ((gMain.heldKeys & DPAD_UP) && (a > 0)) { r10 = 1; @@ -1917,7 +1917,7 @@ u16 sub_80BD69C(u16 a, u16 b) else if ((gMain.newKeys & DPAD_LEFT) && (a > 0)) { r6 = a; - + for (i = 0; i < 7; i++) a = sub_80C0E0C(1, a, 0, gUnknown_02039B4C->pokemonListCount - 1); gUnknown_02039B4C->unk62C += 16 * (a - r6); @@ -1935,13 +1935,13 @@ u16 sub_80BD69C(u16 a, u16 b) sub_80BD2B4(a, 0xE); PlaySE(SE_Z_PAGE); } - + if (r10 == 0) { gUnknown_02039B4C->unk638 = 0; return a; } - + r5 = gUnknown_0855D28C[gUnknown_02039B4C->unk638 / 4]; r3 = gUnknown_0855D291[gUnknown_02039B4C->unk638 / 4]; gUnknown_02039B4C->unk62E = r3; @@ -2030,7 +2030,7 @@ u8 sub_80BDA40(void) { if (gUnknown_02039B4C->unk61E[i] != 0xFFFF) { - sub_818D820(gUnknown_02039B4C->unk61E[i]); + FreeAndDestroyMonPicSprite(gUnknown_02039B4C->unk61E[i]); gUnknown_02039B4C->unk61E[i] |= 0xFFFF; } } @@ -2109,7 +2109,7 @@ void sub_80BDB7C(u8 a) if (a == 0) { u32 _a; - + if (!IsNationalPokedexEnabled()) { CreateSprite(&gUnknown_0855D1F4, 32, 40, 1); @@ -2160,22 +2160,22 @@ void sub_80BDB7C(u8 a) else { u16 r6; - + CreateSprite(&gUnknown_0855D1F4, 32, 40, 1); spriteId = CreateSprite(&gUnknown_0855D1F4, 32, 76, 1); StartSpriteAnim(&gSprites[spriteId], 1); CreateSprite(&gUnknown_0855D20C, 17, 45, 1); - + spriteId = CreateSprite(&gUnknown_0855D20C, 17, 55, 1); StartSpriteAnim(&gSprites[spriteId], 1); CreateSprite(&gUnknown_0855D20C, 17, 81, 1); - + spriteId = CreateSprite(&gUnknown_0855D20C, 17, 91, 1); StartSpriteAnim(&gSprites[spriteId], 1); - + r6 = GetHoennPokedexCount(0); _a = 0; @@ -2197,9 +2197,9 @@ void sub_80BDB7C(u8 a) spriteId = CreateSprite(&gUnknown_0855D23C, 56, 45, 1); r5 = (r6 % 100) % 10; StartSpriteAnim(&gSprites[spriteId], r5); - + _a = 0; - + spriteId = CreateSprite(&gUnknown_0855D23C, 40, 55, 1); r5 = gUnknown_02039B4C->unk61A / 100; StartSpriteAnim(&gSprites[spriteId], r5); @@ -2207,21 +2207,21 @@ void sub_80BDB7C(u8 a) _a = 1; else gSprites[spriteId].invisible = TRUE; - + spriteId = CreateSprite(&gUnknown_0855D23C, 48, 55, 1); r5 = (gUnknown_02039B4C->unk61A % 100) / 10; if (r5 != 0 || _a != 0) StartSpriteAnim(&gSprites[spriteId], r5); else gSprites[spriteId].invisible = TRUE; - + spriteId = CreateSprite(&gUnknown_0855D23C, 56, 55, 1); r5 = (gUnknown_02039B4C->unk61A % 100) % 10; StartSpriteAnim(&gSprites[spriteId], r5); - + r6 = GetHoennPokedexCount(1); _a = 0; - + spriteId = CreateSprite(&gUnknown_0855D23C, 40, 81, 1); r5 = r6 / 100; StartSpriteAnim(&gSprites[spriteId], r5); @@ -2229,20 +2229,20 @@ void sub_80BDB7C(u8 a) _a = 1; else gSprites[spriteId].invisible = TRUE; - + spriteId = CreateSprite(&gUnknown_0855D23C, 48, 81, 1); r5 = (r6 % 100) / 10; if (r5 != 0 || _a != 0) StartSpriteAnim(&gSprites[spriteId], r5); else gSprites[spriteId].invisible = TRUE; - + spriteId = CreateSprite(&gUnknown_0855D23C, 56, 81, 1); r5 = (r6 % 100) % 10; StartSpriteAnim(&gSprites[spriteId], r5); - + _a = 0; - + spriteId = CreateSprite(&gUnknown_0855D23C, 40, 91, 1); r5 = gUnknown_02039B4C->unk61C / 100; StartSpriteAnim(&gSprites[spriteId], r5); @@ -2250,14 +2250,14 @@ void sub_80BDB7C(u8 a) _a = 1; else gSprites[spriteId].invisible = TRUE; - + spriteId = CreateSprite(&gUnknown_0855D23C, 48, 91, 1); r5 = (gUnknown_02039B4C->unk61C % 100) / 10; if (r5 != 0 || _a != 0) StartSpriteAnim(&gSprites[spriteId], r5); else gSprites[spriteId].invisible = TRUE; - + spriteId = CreateSprite(&gUnknown_0855D23C, 56, 91, 1); r5 = (gUnknown_02039B4C->unk61C % 100) % 10; StartSpriteAnim(&gSprites[spriteId], r5); @@ -2313,7 +2313,7 @@ void sub_80BE4E0(struct Sprite *sprite) if (gUnknown_02039B4C->unk64A != 0 && gUnknown_02039B4C->unk64A != 3) { - sub_818D820(gUnknown_02039B4C->unk61E[data1]); + FreeAndDestroyMonPicSprite(gUnknown_02039B4C->unk61E[data1]); gUnknown_02039B4C->unk61E[data1] = 0xFFFF; } else @@ -2339,7 +2339,7 @@ void sub_80BE4E0(struct Sprite *sprite) if ((sprite->data[5] <= -64 || sprite->data[5] >= 64) && sprite->data[0] != 0) { - sub_818D820(gUnknown_02039B4C->unk61E[data1]); + FreeAndDestroyMonPicSprite(gUnknown_02039B4C->unk61E[data1]); gUnknown_02039B4C->unk61E[data1] = 0xFFFF; } } @@ -2449,14 +2449,14 @@ void sub_80BE8DC(const u8* str, u8 left, u8 top) color[0] = 0; color[1] = 15; color[2] = 3; - + AddTextPrinterParameterized2(0, 1, left, top, 0, 0, color, -1, str); } u8 sub_80BE91C(struct PokedexListItem* item, u8 b) { u8 taskId; - + gUnknown_02039B54 = item; taskId = CreateTask(sub_80BEA24, 0); gTasks[taskId].data[0] = 0; @@ -2473,7 +2473,7 @@ u8 sub_80BE91C(struct PokedexListItem* item, u8 b) SetBgTilemapBuffer(0, AllocZeroed(0x800)); InitWindows(gUnknown_0856E640); DeactivateAllTextPrinters(); - + return taskId; } @@ -2518,7 +2518,7 @@ void sub_80BEA24(u8 taskId) } break; case 1: - copy_decompressed_tile_data_to_vram_autofree(3, gPokedexMenu_Gfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0); CopyToBgTilemapBuffer(3, gUnknown_08DC3080, 0, 0); FillWindowPixelBuffer(0, 0); PutWindowTilemap(0); @@ -2703,7 +2703,7 @@ void sub_80BEFD0(u8 taskId) { if (!gPaletteFade.active) { - sub_818D820(gTasks[taskId].data[4]); + FreeAndDestroyMonPicSprite(gTasks[taskId].data[4]); switch (gUnknown_02039B4C->unk64E) { case 1: @@ -2724,7 +2724,7 @@ void sub_80BF038(u8 taskId) { if (!gPaletteFade.active) { - sub_818D820(gTasks[taskId].data[4]); + FreeAndDestroyMonPicSprite(gTasks[taskId].data[4]); gTasks[taskId].func = sub_80BEA24; } } @@ -2733,7 +2733,7 @@ void sub_80BF070(u8 taskId) { if (!gPaletteFade.active) { - sub_818D820(gTasks[taskId].data[4]); + FreeAndDestroyMonPicSprite(gTasks[taskId].data[4]); sub_80BEDB0(); DestroyTask(taskId); } @@ -2813,7 +2813,7 @@ void sub_80BF250(u8 taskId) } break; case 1: - copy_decompressed_tile_data_to_vram_autofree(3, &gPokedexMenu_Gfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, &gPokedexMenu_Gfx, 0x2000, 0, 0); CopyToBgTilemapBuffer(3, &gUnknown_08DC3198, 0, 0); FillWindowPixelBuffer(0, 0); PutWindowTilemap(0); @@ -2960,7 +2960,7 @@ void sub_80BF790(u8 taskId) if (!gPaletteFade.active) { sub_8145914(); - sub_818D820(gTasks[taskId].data[4]); + FreeAndDestroyMonPicSprite(gTasks[taskId].data[4]); switch (gUnknown_02039B4C->unk64E) { default: @@ -3007,7 +3007,7 @@ void sub_80BF82C(u8 taskId) } break; case 1: - copy_decompressed_tile_data_to_vram_autofree(3, gPokedexMenu_Gfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0); CopyToBgTilemapBuffer(3, gUnknown_08DC2E6C, 0, 0); FillWindowPixelBuffer(0, 0); PutWindowTilemap(0); @@ -3109,8 +3109,8 @@ void sub_80BFC78(u8 taskId) { if (!gPaletteFade.active) { - sub_818D820(gTasks[taskId].data[4]); - sub_818D8F0(gTasks[taskId].data[5]); + FreeAndDestroyMonPicSprite(gTasks[taskId].data[4]); + FreeAndDestroyTrainerPicSprite(gTasks[taskId].data[5]); switch (gUnknown_02039B4C->unk64E) { default: @@ -3334,7 +3334,7 @@ void sub_80BFE38(u8 taskId) { u8 spriteId; u16 dexNum = gTasks[taskId].data[1]; - + switch (gTasks[taskId].data[0]) { case 0: @@ -3354,7 +3354,7 @@ void sub_80BFE38(u8 taskId) } break; case 1: - copy_decompressed_tile_data_to_vram_autofree(3, gPokedexMenu_Gfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0); CopyToBgTilemapBuffer(3, gUnknown_08DC3080, 0, 0); FillWindowPixelBuffer(0, 0); PutWindowTilemap(0); @@ -3440,7 +3440,7 @@ void blockset_load_palette_to_gpu(u8 taskId) buffer = GetBgTilemapBuffer(3); if (buffer) Free(buffer); - + species = NationalPokedexNumToSpecies(gTasks[taskId].data[1]); otId = ((u16)gTasks[taskId].data[13] << 16) | (u16)gTasks[taskId].data[12]; personality = ((u16)gTasks[taskId].data[15] << 16) | (u16)gTasks[taskId].data[14]; @@ -3472,7 +3472,7 @@ void sub_80C020C(u32 num, u32 value, u32 c, u32 d) const u8 *text; const u8 *text2; const u8 *text3; - + if (d) sub_80BE8DC(gText_PokedexRegistration, GetStringCenterAlignXOffset(1, gText_PokedexRegistration, 0xF0), 0); if (value == 0) @@ -4064,7 +4064,7 @@ void sub_80C0A88(u8 windowId, const u8 *str, u8 left, u8 top) color[0] = 0; color[1] = 15; color[2] = 3; - + AddTextPrinterParameterized2(windowId, 1, left, top, 0, 0, color, -1, str); } @@ -4107,7 +4107,7 @@ void sub_80C0BF0(u8 windowId, const u8* str, u8 left, u8 top) u8 str2[11]; u8 i; u8 count; - + for (i = 0; i < 11; i++) str2[i] = CHAR_SPACE; for (count = 0; str[count] != CHAR_SPACE && count < 11; count++) @@ -4232,12 +4232,12 @@ u32 sub_80C0E68(u16 a) u16 sub_80C0E9C(u16 num, s16 x, s16 y, u16 paletteSlot) { num = NationalPokedexNumToSpecies(num); - return sub_818D7D8(num, 8, sub_80C0E68(num), TRUE, x, y, paletteSlot, 0xFFFF); + return CreateMonPicSprite_HandleDeoxys(num, 8, sub_80C0E68(num), TRUE, x, y, paletteSlot, 0xFFFF); } u16 sub_80C0EF8(u16 species, s16 x, s16 y, s8 paletteSlot) { - return sub_818D8AC(species, TRUE, x, y, paletteSlot, 0xFFFF); + return CreateTrainerPicSprite(species, TRUE, x, y, paletteSlot, 0xFFFF); } int sub_80C0F30(u8 dexMode, u8 sortMode, u8 abcGroup, u8 bodyColor, u8 type1, u8 type2) @@ -4364,7 +4364,7 @@ u8 sub_80C1258(void) void sub_80C1270(const u8 *str, u32 left, u32 top) { u8 color[3]; - + color[0] = 0; color[1] = 15; color[2] = 2; @@ -4397,8 +4397,8 @@ void sub_80C12E0(u8 taskId) InitWindows(gUnknown_0856F008); DeactivateAllTextPrinters(); PutWindowTilemap(0); - copy_decompressed_tile_data_to_vram_autofree(3, gPokedexSearchMenu_Gfx, 0x2000, 0, 0); - + DecompressAndLoadBgGfxUsingHeap(3, gPokedexSearchMenu_Gfx, 0x2000, 0, 0); + if (!IsNationalPokedexEnabled()) CopyToBgTilemapBuffer(3, gPokedexSearch2_Tilemap, 0, 0); else @@ -4450,7 +4450,7 @@ void sub_80C12E0(u8 taskId) void sub_80C152C(void) { void* tilemapBuffer; - + FreeAllWindowBuffers(); tilemapBuffer = GetBgTilemapBuffer(0); if (tilemapBuffer) @@ -4992,12 +4992,12 @@ void sub_80C2064(u8 a, u8 b) void sub_80C20F8(u8 taskId) { u16 var; - + sub_80C12B0(0x28, 0x10, 0x60, 0x50); var = gTasks[taskId].data[6] + gTasks[taskId].data[7]; sub_80C1270(gUnknown_0856EE5C[var].text2, 0x2D, 0x11); - + var = gTasks[taskId].data[8] + gTasks[taskId].data[9]; sub_80C1270(gUnknown_0856EEB4[var].text2, 0x2D, 0x21); diff --git a/src/pokemon.c b/src/pokemon.c index cd7e45758..292254985 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -13,6 +13,7 @@ #include "constants/hold_effects.h" #include "constants/battle_move_effects.h" #include "constants/songs.h" +#include "constants/battle_frontier.h" #include "string_util.h" #include "text.h" #include "link.h" @@ -80,8 +81,7 @@ extern void set_unknown_box_id(u8); extern void sub_803FA70(u8 battlerId); extern u8 sav1_map_get_name(void); extern const u8 *sub_81A1650(u8, u8 language); -extern u8 BattleFrontierGetOpponentLvl(u8); -extern u16 FacilityClassToPicIndex(u16); +extern u8 GetFrontierEnemyMonLevel(u8); extern bool8 InBattlePyramid(void); extern bool8 InBattlePike(void); extern bool8 sub_806F104(void); @@ -89,7 +89,7 @@ extern u8 GetTrainerEncounterMusicIdInBattlePyramind(u16 trainerOpponentId); extern u8 sub_81D63C8(u16 trainerOpponentId); extern u8 GetFrontierOpponentClass(u16 trainerId); extern void GetFrontierTrainerName(u8* dest, u16 trainerId); -extern void sub_81C488C(u8); +extern void SummaryScreen_SetUnknownTaskId(u8); // this file's functions static u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon); @@ -112,9 +112,1253 @@ EWRAM_DATA struct Unknown_806F160_Struct *gUnknown_020249B4[2] = {NULL}; #include "data/battle_moves.h" static const u8 sUnreferencedData[] = {0x34, 0x00, 0x10, 0x00, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00}; -const u16 gSpeciesToHoennPokedexNum[] = {203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 156, 157, 112, 113, 227, 228, 229, 230, 231, 232, 233, 234, 153, 154, 138, 139, 63, 64, 88, 89, 90, 235, 236, 237, 238, 239, 240, 241, 242, 158, 159, 243, 244, 245, 246, 247, 248, 249, 39, 40, 41, 73, 74, 75, 250, 251, 252, 66, 67, 57, 58, 59, 253, 254, 255, 256, 82, 83, 257, 92, 93, 258, 259, 106, 107, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 84, 85, 270, 271, 272, 273, 274, 275, 276, 108, 109, 169, 170, 277, 278, 279, 184, 185, 50, 51, 143, 144, 280, 281, 282, 283, 284, 167, 285, 52, 53, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 65, 181, 182, 155, 324, 137, 325, 326, 162, 163, 327, 328, 329, 91, 55, 56, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 161, 164, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 168, 357, 358, 359, 103, 104, 360, 361, 180, 362, 363, 364, 365, 115, 366, 367, 186, 165, 166, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 42, 43, 44, 25, 26, 34, 35, 114, 27, 28, 32, 33, 99, 100, 61, 62, 145, 131, 132, 60, 105, 68, 127, 128, 183, 129, 130, 140, 141, 97, 98, 116, 117, 118, 48, 49, 78, 79, 101, 102, 173, 174, 175, 119, 120, 171, 172, 125, 126, 54, 110, 111, 80, 81, 69, 76, 77, 121, 122, 160, 148, 149, 94, 36, 37, 38, 95, 96, 150, 45, 46, 47, 176, 177, 178, 152, 146, 147, 124, 123, 179, 70, 71, 72, 142, 86, 87, 133, 134, 135, 136, 29, 30, 31, 187, 188, 189, 190, 191, 192, 193, 194, 195, 198, 199, 200, 196, 197, 201, 202, 151}; -const u16 gSpeciesToNationalPokedexNum[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 290, 291, 292, 276, 277, 285, 286, 327, 278, 279, 283, 284, 320, 321, 300, 301, 352, 343, 344, 299, 324, 302, 339, 340, 370, 341, 342, 349, 350, 318, 319, 328, 329, 330, 296, 297, 309, 310, 322, 323, 363, 364, 365, 331, 332, 361, 362, 337, 338, 298, 325, 326, 311, 312, 303, 307, 308, 333, 334, 360, 355, 356, 315, 287, 288, 289, 316, 317, 357, 293, 294, 295, 366, 367, 368, 359, 353, 354, 336, 335, 369, 304, 305, 306, 351, 313, 314, 345, 346, 347, 348, 280, 281, 282, 371, 372, 373, 374, 375, 376, 377, 378, 379, 382, 383, 384, 380, 381, 385, 386, 358}; -const u16 gHoennToNationalOrder[] = {252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 63, 64, 65, 290, 291, 292, 293, 294, 295, 296, 297, 118, 119, 129, 130, 298, 183, 184, 74, 75, 76, 299, 300, 301, 41, 42, 169, 72, 73, 302, 303, 304, 305, 306, 66, 67, 68, 307, 308, 309, 310, 311, 312, 81, 82, 100, 101, 313, 314, 43, 44, 45, 182, 84, 85, 315, 316, 317, 318, 319, 320, 321, 322, 323, 218, 219, 324, 88, 89, 109, 110, 325, 326, 27, 28, 327, 227, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 174, 39, 40, 349, 350, 351, 120, 121, 352, 353, 354, 355, 356, 357, 358, 359, 37, 38, 172, 25, 26, 54, 55, 360, 202, 177, 178, 203, 231, 232, 127, 214, 111, 112, 361, 362, 363, 364, 365, 366, 367, 368, 369, 222, 170, 171, 370, 116, 117, 230, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 29, 30, 31, 32, 33, 34, 35, 36, 46, 47, 48, 49, 50, 51, 52, 53, 56, 57, 58, 59, 60, 61, 62, 69, 70, 71, 77, 78, 79, 80, 83, 86, 87, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 102, 103, 104, 105, 106, 107, 108, 113, 114, 115, 122, 123, 124, 125, 126, 128, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 173, 175, 176, 179, 180, 181, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 220, 221, 223, 224, 225, 226, 228, 229, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411}; +const u16 gSpeciesToHoennPokedexNum[] = // Assigns all species to the Hoenn Dex Index (Summary No. for Hoenn Dex) +{ + // SPECIES_NONE + HOENN_DEX_BULBASAUR, // SPECIES_BULBASAUR + HOENN_DEX_IVYSAUR, // SPECIES_IVYSAUR + HOENN_DEX_VENUSAUR, // SPECIES_VENUSAUR + HOENN_DEX_CHARMANDER, // SPECIES_CHARMANDER + HOENN_DEX_CHARMELEON, // SPECIES_CHARMELEON + HOENN_DEX_CHARIZARD, // SPECIES_CHARIZARD + HOENN_DEX_SQUIRTLE, // SPECIES_SQUIRTLE + HOENN_DEX_WARTORTLE, // SPECIES_WARTORTLE + HOENN_DEX_BLASTOISE, // SPECIES_BLASTOISE + HOENN_DEX_CATERPIE, // SPECIES_CATERPIE + HOENN_DEX_METAPOD, // SPECIES_METAPOD + HOENN_DEX_BUTTERFREE, // SPECIES_BUTTERFREE + HOENN_DEX_WEEDLE, // SPECIES_WEEDLE + HOENN_DEX_KAKUNA, // SPECIES_KAKUNA + HOENN_DEX_BEEDRILL, // SPECIES_BEEDRILL + HOENN_DEX_PIDGEY, // SPECIES_PIDGEY + HOENN_DEX_PIDGEOTTO, // SPECIES_PIDGEOTTO + HOENN_DEX_PIDGEOT, // SPECIES_PIDGEOT + HOENN_DEX_RATTATA, // SPECIES_RATTATA + HOENN_DEX_RATICATE, // SPECIES_RATICATE + HOENN_DEX_SPEAROW, // SPECIES_SPEAROW + HOENN_DEX_FEAROW, // SPECIES_FEAROW + HOENN_DEX_EKANS, // SPECIES_EKANS + HOENN_DEX_ARBOK, // SPECIES_ARBOK + HOENN_DEX_PIKACHU, // SPECIES_PIKACHU + HOENN_DEX_RAICHU, // SPECIES_RAICHU + HOENN_DEX_SANDSHREW, // SPECIES_SANDSHREW + HOENN_DEX_SANDSLASH, // SPECIES_SANDSLASH + HOENN_DEX_NIDORAN_F, // SPECIES_NIDORAN_F + HOENN_DEX_NIDORINA, // SPECIES_NIDORINA + HOENN_DEX_NIDOQUEEN, // SPECIES_NIDOQUEEN + HOENN_DEX_NIDORAN_M, // SPECIES_NIDORAN_M + HOENN_DEX_NIDORINO, // SPECIES_NIDORINO + HOENN_DEX_NIDOKING, // SPECIES_NIDOKING + HOENN_DEX_CLEFAIRY, // SPECIES_CLEFAIRY + HOENN_DEX_CLEFABLE, // SPECIES_CLEFABLE + HOENN_DEX_VULPIX, // SPECIES_VULPIX + HOENN_DEX_NINETALES, // SPECIES_NINETALES + HOENN_DEX_JIGGLYPUFF, // SPECIES_JIGGLYPUFF + HOENN_DEX_WIGGLYTUFF, // SPECIES_WIGGLYTUFF + HOENN_DEX_ZUBAT, // SPECIES_ZUBAT + HOENN_DEX_GOLBAT, // SPECIES_GOLBAT + HOENN_DEX_ODDISH, // SPECIES_ODDISH + HOENN_DEX_GLOOM, // SPECIES_GLOOM + HOENN_DEX_VILEPLUME, // SPECIES_VILEPLUME + HOENN_DEX_PARAS, // SPECIES_PARAS + HOENN_DEX_PARASECT, // SPECIES_PARASECT + HOENN_DEX_VENONAT, // SPECIES_VENONAT + HOENN_DEX_VENOMOTH, // SPECIES_VENOMOTH + HOENN_DEX_DIGLETT, // SPECIES_DIGLETT + HOENN_DEX_DUGTRIO, // SPECIES_DUGTRIO + HOENN_DEX_MEOWTH, // SPECIES_MEOWTH + HOENN_DEX_PERSIAN, // SPECIES_PERSIAN + HOENN_DEX_PSYDUCK, // SPECIES_PSYDUCK + HOENN_DEX_GOLDUCK, // SPECIES_GOLDUCK + HOENN_DEX_MANKEY, // SPECIES_MANKEY + HOENN_DEX_PRIMEAPE, // SPECIES_PRIMEAPE + HOENN_DEX_GROWLITHE, // SPECIES_GROWLITHE + HOENN_DEX_ARCANINE, // SPECIES_ARCANINE + HOENN_DEX_POLIWAG, // SPECIES_POLIWAG + HOENN_DEX_POLIWHIRL, // SPECIES_POLIWHIRL + HOENN_DEX_POLIWRATH, // SPECIES_POLIWRATH + HOENN_DEX_ABRA, // SPECIES_ABRA + HOENN_DEX_KADABRA, // SPECIES_KADABRA + HOENN_DEX_ALAKAZAM, // SPECIES_ALAKAZAM + HOENN_DEX_MACHOP, // SPECIES_MACHOP + HOENN_DEX_MACHOKE, // SPECIES_MACHOKE + HOENN_DEX_MACHAMP, // SPECIES_MACHAMP + HOENN_DEX_BELLSPROUT, // SPECIES_BELLSPROUT + HOENN_DEX_WEEPINBELL, // SPECIES_WEEPINBELL + HOENN_DEX_VICTREEBEL, // SPECIES_VICTREEBEL + HOENN_DEX_TENTACOOL, // SPECIES_TENTACOOL + HOENN_DEX_TENTACRUEL, // SPECIES_TENTACRUEL + HOENN_DEX_GEODUDE, // SPECIES_GEODUDE + HOENN_DEX_GRAVELER, // SPECIES_GRAVELER + HOENN_DEX_GOLEM, // SPECIES_GOLEM + HOENN_DEX_PONYTA, // SPECIES_PONYTA + HOENN_DEX_RAPIDASH, // SPECIES_RAPIDASH + HOENN_DEX_SLOWPOKE, // SPECIES_SLOWPOKE + HOENN_DEX_SLOWBRO, // SPECIES_SLOWBRO + HOENN_DEX_MAGNEMITE, // SPECIES_MAGNEMITE + HOENN_DEX_MAGNETON, // SPECIES_MAGNETON + HOENN_DEX_FARFETCHD, // SPECIES_FARFETCHD + HOENN_DEX_DODUO, // SPECIES_DODUO + HOENN_DEX_DODRIO, // SPECIES_DODRIO + HOENN_DEX_SEEL, // SPECIES_SEEL + HOENN_DEX_DEWGONG, // SPECIES_DEWGONG + HOENN_DEX_GRIMER, // SPECIES_GRIMER + HOENN_DEX_MUK, // SPECIES_MUK + HOENN_DEX_SHELLDER, // SPECIES_SHELLDER + HOENN_DEX_CLOYSTER, // SPECIES_CLOYSTER + HOENN_DEX_GASTLY, // SPECIES_GASTLY + HOENN_DEX_HAUNTER, // SPECIES_HAUNTER + HOENN_DEX_GENGAR, // SPECIES_GENGAR + HOENN_DEX_ONIX, // SPECIES_ONIX + HOENN_DEX_DROWZEE, // SPECIES_DROWZEE + HOENN_DEX_HYPNO, // SPECIES_HYPNO + HOENN_DEX_KRABBY, // SPECIES_KRABBY + HOENN_DEX_KINGLER, // SPECIES_KINGLER + HOENN_DEX_VOLTORB, // SPECIES_VOLTORB + HOENN_DEX_ELECTRODE, // SPECIES_ELECTRODE + HOENN_DEX_EXEGGCUTE, // SPECIES_EXEGGCUTE + HOENN_DEX_EXEGGUTOR, // SPECIES_EXEGGUTOR + HOENN_DEX_CUBONE, // SPECIES_CUBONE + HOENN_DEX_MAROWAK, // SPECIES_MAROWAK + HOENN_DEX_HITMONLEE, // SPECIES_HITMONLEE + HOENN_DEX_HITMONCHAN, // SPECIES_HITMONCHAN + HOENN_DEX_LICKITUNG, // SPECIES_LICKITUNG + HOENN_DEX_KOFFING, // SPECIES_KOFFING + HOENN_DEX_WEEZING, // SPECIES_WEEZING + HOENN_DEX_RHYHORN, // SPECIES_RHYHORN + HOENN_DEX_RHYDON, // SPECIES_RHYDON + HOENN_DEX_CHANSEY, // SPECIES_CHANSEY + HOENN_DEX_TANGELA, // SPECIES_TANGELA + HOENN_DEX_KANGASKHAN, // SPECIES_KANGASKHAN + HOENN_DEX_HORSEA, // SPECIES_HORSEA + HOENN_DEX_SEADRA, // SPECIES_SEADRA + HOENN_DEX_GOLDEEN, // SPECIES_GOLDEEN + HOENN_DEX_SEAKING, // SPECIES_SEAKING + HOENN_DEX_STARYU, // SPECIES_STARYU + HOENN_DEX_STARMIE, // SPECIES_STARMIE + HOENN_DEX_MR_MIME, // SPECIES_MR_MIME + HOENN_DEX_SCYTHER, // SPECIES_SCYTHER + HOENN_DEX_JYNX, // SPECIES_JYNX + HOENN_DEX_ELECTABUZZ, // SPECIES_ELECTABUZZ + HOENN_DEX_MAGMAR, // SPECIES_MAGMAR + HOENN_DEX_PINSIR, // SPECIES_PINSIR + HOENN_DEX_TAUROS, // SPECIES_TAUROS + HOENN_DEX_MAGIKARP, // SPECIES_MAGIKARP + HOENN_DEX_GYARADOS, // SPECIES_GYARADOS + HOENN_DEX_LAPRAS, // SPECIES_LAPRAS + HOENN_DEX_DITTO, // SPECIES_DITTO + HOENN_DEX_EEVEE, // SPECIES_EEVEE + HOENN_DEX_VAPOREON, // SPECIES_VAPOREON + HOENN_DEX_JOLTEON, // SPECIES_JOLTEON + HOENN_DEX_FLAREON, // SPECIES_FLAREON + HOENN_DEX_PORYGON, // SPECIES_PORYGON + HOENN_DEX_OMANYTE, // SPECIES_OMANYTE + HOENN_DEX_OMASTAR, // SPECIES_OMASTAR + HOENN_DEX_KABUTO, // SPECIES_KABUTO + HOENN_DEX_KABUTOPS, // SPECIES_KABUTOPS + HOENN_DEX_AERODACTYL, // SPECIES_AERODACTYL + HOENN_DEX_SNORLAX, // SPECIES_SNORLAX + HOENN_DEX_ARTICUNO, // SPECIES_ARTICUNO + HOENN_DEX_ZAPDOS, // SPECIES_ZAPDOS + HOENN_DEX_MOLTRES, // SPECIES_MOLTRES + HOENN_DEX_DRATINI, // SPECIES_DRATINI + HOENN_DEX_DRAGONAIR, // SPECIES_DRAGONAIR + HOENN_DEX_DRAGONITE, // SPECIES_DRAGONITE + HOENN_DEX_MEWTWO, // SPECIES_MEWTWO + HOENN_DEX_MEW, // SPECIES_MEW + HOENN_DEX_CHIKORITA, // SPECIES_CHIKORITA + HOENN_DEX_BAYLEEF, // SPECIES_BAYLEEF + HOENN_DEX_MEGANIUM, // SPECIES_MEGANIUM + HOENN_DEX_CYNDAQUIL, // SPECIES_CYNDAQUIL + HOENN_DEX_QUILAVA, // SPECIES_QUILAVA + HOENN_DEX_TYPHLOSION, // SPECIES_TYPHLOSION + HOENN_DEX_TOTODILE, // SPECIES_TOTODILE + HOENN_DEX_CROCONAW, // SPECIES_CROCONAW + HOENN_DEX_FERALIGATR, // SPECIES_FERALIGATR + HOENN_DEX_SENTRET, // SPECIES_SENTRET + HOENN_DEX_FURRET, // SPECIES_FURRET + HOENN_DEX_HOOTHOOT, // SPECIES_HOOTHOOT + HOENN_DEX_NOCTOWL, // SPECIES_NOCTOWL + HOENN_DEX_LEDYBA, // SPECIES_LEDYBA + HOENN_DEX_LEDIAN, // SPECIES_LEDIAN + HOENN_DEX_SPINARAK, // SPECIES_SPINARAK + HOENN_DEX_ARIADOS, // SPECIES_ARIADOS + HOENN_DEX_CROBAT, // SPECIES_CROBAT + HOENN_DEX_CHINCHOU, // SPECIES_CHINCHOU + HOENN_DEX_LANTURN, // SPECIES_LANTURN + HOENN_DEX_PICHU, // SPECIES_PICHU + HOENN_DEX_CLEFFA, // SPECIES_CLEFFA + HOENN_DEX_IGGLYBUFF, // SPECIES_IGGLYBUFF + HOENN_DEX_TOGEPI, // SPECIES_TOGEPI + HOENN_DEX_TOGETIC, // SPECIES_TOGETIC + HOENN_DEX_NATU, // SPECIES_NATU + HOENN_DEX_XATU, // SPECIES_XATU + HOENN_DEX_MAREEP, // SPECIES_MAREEP + HOENN_DEX_FLAAFFY, // SPECIES_FLAAFFY + HOENN_DEX_AMPHAROS, // SPECIES_AMPHAROS + HOENN_DEX_BELLOSSOM, // SPECIES_BELLOSSOM + HOENN_DEX_MARILL, // SPECIES_MARILL + HOENN_DEX_AZUMARILL, // SPECIES_AZUMARILL + HOENN_DEX_SUDOWOODO, // SPECIES_SUDOWOODO + HOENN_DEX_POLITOED, // SPECIES_POLITOED + HOENN_DEX_HOPPIP, // SPECIES_HOPPIP + HOENN_DEX_SKIPLOOM, // SPECIES_SKIPLOOM + HOENN_DEX_JUMPLUFF, // SPECIES_JUMPLUFF + HOENN_DEX_AIPOM, // SPECIES_AIPOM + HOENN_DEX_SUNKERN, // SPECIES_SUNKERN + HOENN_DEX_SUNFLORA, // SPECIES_SUNFLORA + HOENN_DEX_YANMA, // SPECIES_YANMA + HOENN_DEX_WOOPER, // SPECIES_WOOPER + HOENN_DEX_QUAGSIRE, // SPECIES_QUAGSIRE + HOENN_DEX_ESPEON, // SPECIES_ESPEON + HOENN_DEX_UMBREON, // SPECIES_UMBREON + HOENN_DEX_MURKROW, // SPECIES_MURKROW + HOENN_DEX_SLOWKING, // SPECIES_SLOWKING + HOENN_DEX_MISDREAVUS, // SPECIES_MISDREAVUS + HOENN_DEX_UNOWN, // SPECIES_UNOWN + HOENN_DEX_WOBBUFFET, // SPECIES_WOBBUFFET + HOENN_DEX_GIRAFARIG, // SPECIES_GIRAFARIG + HOENN_DEX_PINECO, // SPECIES_PINECO + HOENN_DEX_FORRETRESS, // SPECIES_FORRETRESS + HOENN_DEX_DUNSPARCE, // SPECIES_DUNSPARCE + HOENN_DEX_GLIGAR, // SPECIES_GLIGAR + HOENN_DEX_STEELIX, // SPECIES_STEELIX + HOENN_DEX_SNUBBULL, // SPECIES_SNUBBULL + HOENN_DEX_GRANBULL, // SPECIES_GRANBULL + HOENN_DEX_QWILFISH, // SPECIES_QWILFISH + HOENN_DEX_SCIZOR, // SPECIES_SCIZOR + HOENN_DEX_SHUCKLE, // SPECIES_SHUCKLE + HOENN_DEX_HERACROSS, // SPECIES_HERACROSS + HOENN_DEX_SNEASEL, // SPECIES_SNEASEL + HOENN_DEX_TEDDIURSA, // SPECIES_TEDDIURSA + HOENN_DEX_URSARING, // SPECIES_URSARING + HOENN_DEX_SLUGMA, // SPECIES_SLUGMA + HOENN_DEX_MAGCARGO, // SPECIES_MAGCARGO + HOENN_DEX_SWINUB, // SPECIES_SWINUB + HOENN_DEX_PILOSWINE, // SPECIES_PILOSWINE + HOENN_DEX_CORSOLA, // SPECIES_CORSOLA + HOENN_DEX_REMORAID, // SPECIES_REMORAID + HOENN_DEX_OCTILLERY, // SPECIES_OCTILLERY + HOENN_DEX_DELIBIRD, // SPECIES_DELIBIRD + HOENN_DEX_MANTINE, // SPECIES_MANTINE + HOENN_DEX_SKARMORY, // SPECIES_SKARMORY + HOENN_DEX_HOUNDOUR, // SPECIES_HOUNDOUR + HOENN_DEX_HOUNDOOM, // SPECIES_HOUNDOOM + HOENN_DEX_KINGDRA, // SPECIES_KINGDRA + HOENN_DEX_PHANPY, // SPECIES_PHANPY + HOENN_DEX_DONPHAN, // SPECIES_DONPHAN + HOENN_DEX_PORYGON2, // SPECIES_PORYGON2 + HOENN_DEX_STANTLER, // SPECIES_STANTLER + HOENN_DEX_SMEARGLE, // SPECIES_SMEARGLE + HOENN_DEX_TYROGUE, // SPECIES_TYROGUE + HOENN_DEX_HITMONTOP, // SPECIES_HITMONTOP + HOENN_DEX_SMOOCHUM, // SPECIES_SMOOCHUM + HOENN_DEX_ELEKID, // SPECIES_ELEKID + HOENN_DEX_MAGBY, // SPECIES_MAGBY + HOENN_DEX_MILTANK, // SPECIES_MILTANK + HOENN_DEX_BLISSEY, // SPECIES_BLISSEY + HOENN_DEX_RAIKOU, // SPECIES_RAIKOU + HOENN_DEX_ENTEI, // SPECIES_ENTEI + HOENN_DEX_SUICUNE, // SPECIES_SUICUNE + HOENN_DEX_LARVITAR, // SPECIES_LARVITAR + HOENN_DEX_PUPITAR, // SPECIES_PUPITAR + HOENN_DEX_TYRANITAR, // SPECIES_TYRANITAR + HOENN_DEX_LUGIA, // SPECIES_LUGIA + HOENN_DEX_HO_OH, // SPECIES_HO-OH + HOENN_DEX_CELEBI, // SPECIES_CELEBI + HOENN_DEX_OLD_UNOWN_B, // SPECIES_OLD_UNOWN_B + HOENN_DEX_OLD_UNOWN_C, // SPECIES_OLD_UNOWN_C + HOENN_DEX_OLD_UNOWN_D, // SPECIES_OLD_UNOWN_D + HOENN_DEX_OLD_UNOWN_E, // SPECIES_OLD_UNOWN_E + HOENN_DEX_OLD_UNOWN_F, // SPECIES_OLD_UNOWN_F + HOENN_DEX_OLD_UNOWN_G, // SPECIES_OLD_UNOWN_G + HOENN_DEX_OLD_UNOWN_H, // SPECIES_OLD_UNOWN_H + HOENN_DEX_OLD_UNOWN_I, // SPECIES_OLD_UNOWN_I + HOENN_DEX_OLD_UNOWN_J, // SPECIES_OLD_UNOWN_J + HOENN_DEX_OLD_UNOWN_K, // SPECIES_OLD_UNOWN_K + HOENN_DEX_OLD_UNOWN_L, // SPECIES_OLD_UNOWN_L + HOENN_DEX_OLD_UNOWN_M, // SPECIES_OLD_UNOWN_M + HOENN_DEX_OLD_UNOWN_N, // SPECIES_OLD_UNOWN_N + HOENN_DEX_OLD_UNOWN_O, // SPECIES_OLD_UNOWN_O + HOENN_DEX_OLD_UNOWN_P, // SPECIES_OLD_UNOWN_P + HOENN_DEX_OLD_UNOWN_Q, // SPECIES_OLD_UNOWN_Q + HOENN_DEX_OLD_UNOWN_R, // SPECIES_OLD_UNOWN_R + HOENN_DEX_OLD_UNOWN_S, // SPECIES_OLD_UNOWN_S + HOENN_DEX_OLD_UNOWN_T, // SPECIES_OLD_UNOWN_T + HOENN_DEX_OLD_UNOWN_U, // SPECIES_OLD_UNOWN_U + HOENN_DEX_OLD_UNOWN_V, // SPECIES_OLD_UNOWN_V + HOENN_DEX_OLD_UNOWN_W, // SPECIES_OLD_UNOWN_W + HOENN_DEX_OLD_UNOWN_X, // SPECIES_OLD_UNOWN_X + HOENN_DEX_OLD_UNOWN_Y, // SPECIES_OLD_UNOWN_Y + HOENN_DEX_OLD_UNOWN_Z, // SPECIES_OLD_UNOWN_Z + HOENN_DEX_TREECKO, // SPECIES_TREECKO + HOENN_DEX_GROVYLE, // SPECIES_GROVYLE + HOENN_DEX_SCEPTILE, // SPECIES_SCEPTILE + HOENN_DEX_TORCHIC, // SPECIES_TORCHIC + HOENN_DEX_COMBUSKEN, // SPECIES_COMBUSKEN + HOENN_DEX_BLAZIKEN, // SPECIES_BLAZIKEN + HOENN_DEX_MUDKIP, // SPECIES_MUDKIP + HOENN_DEX_MARSHTOMP, // SPECIES_MARSHTOMP + HOENN_DEX_SWAMPERT, // SPECIES_SWAMPERT + HOENN_DEX_POOCHYENA, // SPECIES_POOCHYENA + HOENN_DEX_MIGHTYENA, // SPECIES_MIGHTYENA + HOENN_DEX_ZIGZAGOON, // SPECIES_ZIGZAGOON + HOENN_DEX_LINOONE, // SPECIES_LINOONE + HOENN_DEX_WURMPLE, // SPECIES_WURMPLE + HOENN_DEX_SILCOON, // SPECIES_SILCOON + HOENN_DEX_BEAUTIFLY, // SPECIES_BEAUTIFLY + HOENN_DEX_CASCOON, // SPECIES_CASCOON + HOENN_DEX_DUSTOX, // SPECIES_DUSTOX + HOENN_DEX_LOTAD, // SPECIES_LOTAD + HOENN_DEX_LOMBRE, // SPECIES_LOMBRE + HOENN_DEX_LUDICOLO, // SPECIES_LUDICOLO + HOENN_DEX_SEEDOT, // SPECIES_SEEDOT + HOENN_DEX_NUZLEAF, // SPECIES_NUZLEAF + HOENN_DEX_SHIFTRY, // SPECIES_SHIFTRY + HOENN_DEX_NINCADA, // SPECIES_NINCADA + HOENN_DEX_NINJASK, // SPECIES_NINJASK + HOENN_DEX_SHEDINJA, // SPECIES_SHEDINJA + HOENN_DEX_TAILLOW, // SPECIES_TAILLOW + HOENN_DEX_SWELLOW, // SPECIES_SWELLOW + HOENN_DEX_SHROOMISH, // SPECIES_SHROOMISH + HOENN_DEX_BRELOOM, // SPECIES_BRELOOM + HOENN_DEX_SPINDA, // SPECIES_SPINDA + HOENN_DEX_WINGULL, // SPECIES_WINGULL + HOENN_DEX_PELIPPER, // SPECIES_PELIPPER + HOENN_DEX_SURSKIT, // SPECIES_SURSKIT + HOENN_DEX_MASQUERAIN, // SPECIES_MASQUERAIN + HOENN_DEX_WAILMER, // SPECIES_WAILMER + HOENN_DEX_WAILORD, // SPECIES_WAILORD + HOENN_DEX_SKITTY, // SPECIES_SKITTY + HOENN_DEX_DELCATTY, // SPECIES_DELCATTY + HOENN_DEX_KECLEON, // SPECIES_KECLEON + HOENN_DEX_BALTOY, // SPECIES_BALTOY + HOENN_DEX_CLAYDOL, // SPECIES_CLAYDOL + HOENN_DEX_NOSEPASS, // SPECIES_NOSEPASS + HOENN_DEX_TORKOAL, // SPECIES_TORKOAL + HOENN_DEX_SABLEYE, // SPECIES_SABLEYE + HOENN_DEX_BARBOACH, // SPECIES_BARBOACH + HOENN_DEX_WHISCASH, // SPECIES_WHISCASH + HOENN_DEX_LUVDISC, // SPECIES_LUVDISC + HOENN_DEX_CORPHISH, // SPECIES_CORPHISH + HOENN_DEX_CRAWDAUNT, // SPECIES_CRAWDAUNT + HOENN_DEX_FEEBAS, // SPECIES_FEEBAS + HOENN_DEX_MILOTIC, // SPECIES_MILOTIC + HOENN_DEX_CARVANHA, // SPECIES_CARVANHA + HOENN_DEX_SHARPEDO, // SPECIES_SHARPEDO + HOENN_DEX_TRAPINCH, // SPECIES_TRAPINCH + HOENN_DEX_VIBRAVA, // SPECIES_VIBRAVA + HOENN_DEX_FLYGON, // SPECIES_FLYGON + HOENN_DEX_MAKUHITA, // SPECIES_MAKUHITA + HOENN_DEX_HARIYAMA, // SPECIES_HARIYAMA + HOENN_DEX_ELECTRIKE, // SPECIES_ELECTRIKE + HOENN_DEX_MANECTRIC, // SPECIES_MANECTRIC + HOENN_DEX_NUMEL, // SPECIES_NUMEL + HOENN_DEX_CAMERUPT, // SPECIES_CAMERUPT + HOENN_DEX_SPHEAL, // SPECIES_SPHEAL + HOENN_DEX_SEALEO, // SPECIES_SEALEO + HOENN_DEX_WALREIN, // SPECIES_WALREIN + HOENN_DEX_CACNEA, // SPECIES_CACNEA + HOENN_DEX_CACTURNE, // SPECIES_CACTURNE + HOENN_DEX_SNORUNT, // SPECIES_SNORUNT + HOENN_DEX_GLALIE, // SPECIES_GLALIE + HOENN_DEX_LUNATONE, // SPECIES_LUNATONE + HOENN_DEX_SOLROCK, // SPECIES_SOLROCK + HOENN_DEX_AZURILL, // SPECIES_AZURILL + HOENN_DEX_SPOINK, // SPECIES_SPOINK + HOENN_DEX_GRUMPIG, // SPECIES_GRUMPIG + HOENN_DEX_PLUSLE, // SPECIES_PLUSLE + HOENN_DEX_MINUN, // SPECIES_MINUN + HOENN_DEX_MAWILE, // SPECIES_MAWILE + HOENN_DEX_MEDITITE, // SPECIES_MEDITITE + HOENN_DEX_MEDICHAM, // SPECIES_MEDICHAM + HOENN_DEX_SWABLU, // SPECIES_SWABLU + HOENN_DEX_ALTARIA, // SPECIES_ALTARIA + HOENN_DEX_WYNAUT, // SPECIES_WYNAUT + HOENN_DEX_DUSKULL, // SPECIES_DUSKULL + HOENN_DEX_DUSCLOPS, // SPECIES_DUSCLOPS + HOENN_DEX_ROSELIA, // SPECIES_ROSELIA + HOENN_DEX_SLAKOTH, // SPECIES_SLAKOTH + HOENN_DEX_VIGOROTH, // SPECIES_VIGOROTH + HOENN_DEX_SLAKING, // SPECIES_SLAKING + HOENN_DEX_GULPIN, // SPECIES_GULPIN + HOENN_DEX_SWALOT, // SPECIES_SWALOT + HOENN_DEX_TROPIUS, // SPECIES_TROPIUS + HOENN_DEX_WHISMUR, // SPECIES_WHISMUR + HOENN_DEX_LOUDRED, // SPECIES_LOUDRED + HOENN_DEX_EXPLOUD, // SPECIES_EXPLOUD + HOENN_DEX_CLAMPERL, // SPECIES_CLAMPERL + HOENN_DEX_HUNTAIL, // SPECIES_HUNTAIL + HOENN_DEX_GOREBYSS, // SPECIES_GOREBYSS + HOENN_DEX_ABSOL, // SPECIES_ABSOL + HOENN_DEX_SHUPPET, // SPECIES_SHUPPET + HOENN_DEX_BANETTE, // SPECIES_BANETTE + HOENN_DEX_SEVIPER, // SPECIES_SEVIPER + HOENN_DEX_ZANGOOSE, // SPECIES_ZANGOOSE + HOENN_DEX_RELICANTH, // SPECIES_RELICANTH + HOENN_DEX_ARON, // SPECIES_ARON + HOENN_DEX_LAIRON, // SPECIES_LAIRON + HOENN_DEX_AGGRON, // SPECIES_AGGRON + HOENN_DEX_CASTFORM, // SPECIES_CASTFORM + HOENN_DEX_VOLBEAT, // SPECIES_VOLBEAT + HOENN_DEX_ILLUMISE, // SPECIES_ILLUMISE + HOENN_DEX_LILEEP, // SPECIES_LILEEP + HOENN_DEX_CRADILY, // SPECIES_CRADILY + HOENN_DEX_ANORITH, // SPECIES_ANORITH + HOENN_DEX_ARMALDO, // SPECIES_ARMALDO + HOENN_DEX_RALTS, // SPECIES_RALTS + HOENN_DEX_KIRLIA, // SPECIES_KIRLIA + HOENN_DEX_GARDEVOIR, // SPECIES_GARDEVOIR + HOENN_DEX_BAGON, // SPECIES_BAGON + HOENN_DEX_SHELGON, // SPECIES_SHELGON + HOENN_DEX_SALAMENCE, // SPECIES_SALAMENCE + HOENN_DEX_BELDUM, // SPECIES_BELDUM + HOENN_DEX_METANG, // SPECIES_METANG + HOENN_DEX_METAGROSS, // SPECIES_METAGROSS + HOENN_DEX_REGIROCK, // SPECIES_REGIROCK + HOENN_DEX_REGICE, // SPECIES_REGICE + HOENN_DEX_REGISTEEL, // SPECIES_REGISTEEL + HOENN_DEX_KYOGRE, // SPECIES_KYOGRE + HOENN_DEX_GROUDON, // SPECIES_GROUDON + HOENN_DEX_RAYQUAZA, // SPECIES_RAYQUAZA + HOENN_DEX_LATIAS, // SPECIES_LATIAS + HOENN_DEX_LATIOS, // SPECIES_LATIOS + HOENN_DEX_JIRACHI, // SPECIES_JIRACHI + HOENN_DEX_DEOXYS, // SPECIES_DEOXYS + HOENN_DEX_CHIMECHO // SPECIES_CHIMECHO +}; + +const u16 gSpeciesToNationalPokedexNum[] = // Assigns all species to the National Dex Index (Summary No. for National Dex) +{ + // SPECIES_NONE + NATIONAL_DEX_BULBASAUR, // SPECIES_BULBASAUR + NATIONAL_DEX_IVYSAUR, // SPECIES_IVYSAUR + NATIONAL_DEX_VENUSAUR, // SPECIES_VENUSAUR + NATIONAL_DEX_CHARMANDER, // SPECIES_CHARMANDER + NATIONAL_DEX_CHARMELEON, // SPECIES_CHARMELEON + NATIONAL_DEX_CHARIZARD, // SPECIES_CHARIZARD + NATIONAL_DEX_SQUIRTLE, // SPECIES_SQUIRTLE + NATIONAL_DEX_WARTORTLE, // SPECIES_WARTORTLE + NATIONAL_DEX_BLASTOISE, // SPECIES_BLASTOISE + NATIONAL_DEX_CATERPIE, // SPECIES_CATERPIE + NATIONAL_DEX_METAPOD, // SPECIES_METAPOD + NATIONAL_DEX_BUTTERFREE, // SPECIES_BUTTERFREE + NATIONAL_DEX_WEEDLE, // SPECIES_WEEDLE + NATIONAL_DEX_KAKUNA, // SPECIES_KAKUNA + NATIONAL_DEX_BEEDRILL, // SPECIES_BEEDRILL + NATIONAL_DEX_PIDGEY, // SPECIES_PIDGEY + NATIONAL_DEX_PIDGEOTTO, // SPECIES_PIDGEOTTO + NATIONAL_DEX_PIDGEOT, // SPECIES_PIDGEOT + NATIONAL_DEX_RATTATA, // SPECIES_RATTATA + NATIONAL_DEX_RATICATE, // SPECIES_RATICATE + NATIONAL_DEX_SPEAROW, // SPECIES_SPEAROW + NATIONAL_DEX_FEAROW, // SPECIES_FEAROW + NATIONAL_DEX_EKANS, // SPECIES_EKANS + NATIONAL_DEX_ARBOK, // SPECIES_ARBOK + NATIONAL_DEX_PIKACHU, // SPECIES_PIKACHU + NATIONAL_DEX_RAICHU, // SPECIES_RAICHU + NATIONAL_DEX_SANDSHREW, // SPECIES_SANDSHREW + NATIONAL_DEX_SANDSLASH, // SPECIES_SANDSLASH + NATIONAL_DEX_NIDORAN_F, // SPECIES_NIDORAN_F + NATIONAL_DEX_NIDORINA, // SPECIES_NIDORINA + NATIONAL_DEX_NIDOQUEEN, // SPECIES_NIDOQUEEN + NATIONAL_DEX_NIDORAN_M, // SPECIES_NIDORAN_M + NATIONAL_DEX_NIDORINO, // SPECIES_NIDORINO + NATIONAL_DEX_NIDOKING, // SPECIES_NIDOKING + NATIONAL_DEX_CLEFAIRY, // SPECIES_CLEFAIRY + NATIONAL_DEX_CLEFABLE, // SPECIES_CLEFABLE + NATIONAL_DEX_VULPIX, // SPECIES_VULPIX + NATIONAL_DEX_NINETALES, // SPECIES_NINETALES + NATIONAL_DEX_JIGGLYPUFF, // SPECIES_JIGGLYPUFF + NATIONAL_DEX_WIGGLYTUFF, // SPECIES_WIGGLYTUFF + NATIONAL_DEX_ZUBAT, // SPECIES_ZUBAT + NATIONAL_DEX_GOLBAT, // SPECIES_GOLBAT + NATIONAL_DEX_ODDISH, // SPECIES_ODDISH + NATIONAL_DEX_GLOOM, // SPECIES_GLOOM + NATIONAL_DEX_VILEPLUME, // SPECIES_VILEPLUME + NATIONAL_DEX_PARAS, // SPECIES_PARAS + NATIONAL_DEX_PARASECT, // SPECIES_PARASECT + NATIONAL_DEX_VENONAT, // SPECIES_VENONAT + NATIONAL_DEX_VENOMOTH, // SPECIES_VENOMOTH + NATIONAL_DEX_DIGLETT, // SPECIES_DIGLETT + NATIONAL_DEX_DUGTRIO, // SPECIES_DUGTRIO + NATIONAL_DEX_MEOWTH, // SPECIES_MEOWTH + NATIONAL_DEX_PERSIAN, // SPECIES_PERSIAN + NATIONAL_DEX_PSYDUCK, // SPECIES_PSYDUCK + NATIONAL_DEX_GOLDUCK, // SPECIES_GOLDUCK + NATIONAL_DEX_MANKEY, // SPECIES_MANKEY + NATIONAL_DEX_PRIMEAPE, // SPECIES_PRIMEAPE + NATIONAL_DEX_GROWLITHE, // SPECIES_GROWLITHE + NATIONAL_DEX_ARCANINE, // SPECIES_ARCANINE + NATIONAL_DEX_POLIWAG, // SPECIES_POLIWAG + NATIONAL_DEX_POLIWHIRL, // SPECIES_POLIWHIRL + NATIONAL_DEX_POLIWRATH, // SPECIES_POLIWRATH + NATIONAL_DEX_ABRA, // SPECIES_ABRA + NATIONAL_DEX_KADABRA, // SPECIES_KADABRA + NATIONAL_DEX_ALAKAZAM, // SPECIES_ALAKAZAM + NATIONAL_DEX_MACHOP, // SPECIES_MACHOP + NATIONAL_DEX_MACHOKE, // SPECIES_MACHOKE + NATIONAL_DEX_MACHAMP, // SPECIES_MACHAMP + NATIONAL_DEX_BELLSPROUT, // SPECIES_BELLSPROUT + NATIONAL_DEX_WEEPINBELL, // SPECIES_WEEPINBELL + NATIONAL_DEX_VICTREEBEL, // SPECIES_VICTREEBEL + NATIONAL_DEX_TENTACOOL, // SPECIES_TENTACOOL + NATIONAL_DEX_TENTACRUEL, // SPECIES_TENTACRUEL + NATIONAL_DEX_GEODUDE, // SPECIES_GEODUDE + NATIONAL_DEX_GRAVELER, // SPECIES_GRAVELER + NATIONAL_DEX_GOLEM, // SPECIES_GOLEM + NATIONAL_DEX_PONYTA, // SPECIES_PONYTA + NATIONAL_DEX_RAPIDASH, // SPECIES_RAPIDASH + NATIONAL_DEX_SLOWPOKE, // SPECIES_SLOWPOKE + NATIONAL_DEX_SLOWBRO, // SPECIES_SLOWBRO + NATIONAL_DEX_MAGNEMITE, // SPECIES_MAGNEMITE + NATIONAL_DEX_MAGNETON, // SPECIES_MAGNETON + NATIONAL_DEX_FARFETCHD, // SPECIES_FARFETCHD + NATIONAL_DEX_DODUO, // SPECIES_DODUO + NATIONAL_DEX_DODRIO, // SPECIES_DODRIO + NATIONAL_DEX_SEEL, // SPECIES_SEEL + NATIONAL_DEX_DEWGONG, // SPECIES_DEWGONG + NATIONAL_DEX_GRIMER, // SPECIES_GRIMER + NATIONAL_DEX_MUK, // SPECIES_MUK + NATIONAL_DEX_SHELLDER, // SPECIES_SHELLDER + NATIONAL_DEX_CLOYSTER, // SPECIES_CLOYSTER + NATIONAL_DEX_GASTLY, // SPECIES_GASTLY + NATIONAL_DEX_HAUNTER, // SPECIES_HAUNTER + NATIONAL_DEX_GENGAR, // SPECIES_GENGAR + NATIONAL_DEX_ONIX, // SPECIES_ONIX + NATIONAL_DEX_DROWZEE, // SPECIES_DROWZEE + NATIONAL_DEX_HYPNO, // SPECIES_HYPNO + NATIONAL_DEX_KRABBY, // SPECIES_KRABBY + NATIONAL_DEX_KINGLER, // SPECIES_KINGLER + NATIONAL_DEX_VOLTORB, // SPECIES_VOLTORB + NATIONAL_DEX_ELECTRODE, // SPECIES_ELECTRODE + NATIONAL_DEX_EXEGGCUTE, // SPECIES_EXEGGCUTE + NATIONAL_DEX_EXEGGUTOR, // SPECIES_EXEGGUTOR + NATIONAL_DEX_CUBONE, // SPECIES_CUBONE + NATIONAL_DEX_MAROWAK, // SPECIES_MAROWAK + NATIONAL_DEX_HITMONLEE, // SPECIES_HITMONLEE + NATIONAL_DEX_HITMONCHAN, // SPECIES_HITMONCHAN + NATIONAL_DEX_LICKITUNG, // SPECIES_LICKITUNG + NATIONAL_DEX_KOFFING, // SPECIES_KOFFING + NATIONAL_DEX_WEEZING, // SPECIES_WEEZING + NATIONAL_DEX_RHYHORN, // SPECIES_RHYHORN + NATIONAL_DEX_RHYDON, // SPECIES_RHYDON + NATIONAL_DEX_CHANSEY, // SPECIES_CHANSEY + NATIONAL_DEX_TANGELA, // SPECIES_TANGELA + NATIONAL_DEX_KANGASKHAN, // SPECIES_KANGASKHAN + NATIONAL_DEX_HORSEA, // SPECIES_HORSEA + NATIONAL_DEX_SEADRA, // SPECIES_SEADRA + NATIONAL_DEX_GOLDEEN, // SPECIES_GOLDEEN + NATIONAL_DEX_SEAKING, // SPECIES_SEAKING + NATIONAL_DEX_STARYU, // SPECIES_STARYU + NATIONAL_DEX_STARMIE, // SPECIES_STARMIE + NATIONAL_DEX_MR_MIME, // SPECIES_MR_MIME + NATIONAL_DEX_SCYTHER, // SPECIES_SCYTHER + NATIONAL_DEX_JYNX, // SPECIES_JYNX + NATIONAL_DEX_ELECTABUZZ, // SPECIES_ELECTABUZZ + NATIONAL_DEX_MAGMAR, // SPECIES_MAGMAR + NATIONAL_DEX_PINSIR, // SPECIES_PINSIR + NATIONAL_DEX_TAUROS, // SPECIES_TAUROS + NATIONAL_DEX_MAGIKARP, // SPECIES_MAGIKARP + NATIONAL_DEX_GYARADOS, // SPECIES_GYARADOS + NATIONAL_DEX_LAPRAS, // SPECIES_LAPRAS + NATIONAL_DEX_DITTO, // SPECIES_DITTO + NATIONAL_DEX_EEVEE, // SPECIES_EEVEE + NATIONAL_DEX_VAPOREON, // SPECIES_VAPOREON + NATIONAL_DEX_JOLTEON, // SPECIES_JOLTEON + NATIONAL_DEX_FLAREON, // SPECIES_FLAREON + NATIONAL_DEX_PORYGON, // SPECIES_PORYGON + NATIONAL_DEX_OMANYTE, // SPECIES_OMANYTE + NATIONAL_DEX_OMASTAR, // SPECIES_OMASTAR + NATIONAL_DEX_KABUTO, // SPECIES_KABUTO + NATIONAL_DEX_KABUTOPS, // SPECIES_KABUTOPS + NATIONAL_DEX_AERODACTYL, // SPECIES_AERODACTYL + NATIONAL_DEX_SNORLAX, // SPECIES_SNORLAX + NATIONAL_DEX_ARTICUNO, // SPECIES_ARTICUNO + NATIONAL_DEX_ZAPDOS, // SPECIES_ZAPDOS + NATIONAL_DEX_MOLTRES, // SPECIES_MOLTRES + NATIONAL_DEX_DRATINI, // SPECIES_DRATINI + NATIONAL_DEX_DRAGONAIR, // SPECIES_DRAGONAIR + NATIONAL_DEX_DRAGONITE, // SPECIES_DRAGONITE + NATIONAL_DEX_MEWTWO, // SPECIES_MEWTWO + NATIONAL_DEX_MEW, // SPECIES_MEW + NATIONAL_DEX_CHIKORITA, // SPECIES_CHIKORITA + NATIONAL_DEX_BAYLEEF, // SPECIES_BAYLEEF + NATIONAL_DEX_MEGANIUM, // SPECIES_MEGANIUM + NATIONAL_DEX_CYNDAQUIL, // SPECIES_CYNDAQUIL + NATIONAL_DEX_QUILAVA, // SPECIES_QUILAVA + NATIONAL_DEX_TYPHLOSION, // SPECIES_TYPHLOSION + NATIONAL_DEX_TOTODILE, // SPECIES_TOTODILE + NATIONAL_DEX_CROCONAW, // SPECIES_CROCONAW + NATIONAL_DEX_FERALIGATR, // SPECIES_FERALIGATR + NATIONAL_DEX_SENTRET, // SPECIES_SENTRET + NATIONAL_DEX_FURRET, // SPECIES_FURRET + NATIONAL_DEX_HOOTHOOT, // SPECIES_HOOTHOOT + NATIONAL_DEX_NOCTOWL, // SPECIES_NOCTOWL + NATIONAL_DEX_LEDYBA, // SPECIES_LEDYBA + NATIONAL_DEX_LEDIAN, // SPECIES_LEDIAN + NATIONAL_DEX_SPINARAK, // SPECIES_SPINARAK + NATIONAL_DEX_ARIADOS, // SPECIES_ARIADOS + NATIONAL_DEX_CROBAT, // SPECIES_CROBAT + NATIONAL_DEX_CHINCHOU, // SPECIES_CHINCHOU + NATIONAL_DEX_LANTURN, // SPECIES_LANTURN + NATIONAL_DEX_PICHU, // SPECIES_PICHU + NATIONAL_DEX_CLEFFA, // SPECIES_CLEFFA + NATIONAL_DEX_IGGLYBUFF, // SPECIES_IGGLYBUFF + NATIONAL_DEX_TOGEPI, // SPECIES_TOGEPI + NATIONAL_DEX_TOGETIC, // SPECIES_TOGETIC + NATIONAL_DEX_NATU, // SPECIES_NATU + NATIONAL_DEX_XATU, // SPECIES_XATU + NATIONAL_DEX_MAREEP, // SPECIES_MAREEP + NATIONAL_DEX_FLAAFFY, // SPECIES_FLAAFFY + NATIONAL_DEX_AMPHAROS, // SPECIES_AMPHAROS + NATIONAL_DEX_BELLOSSOM, // SPECIES_BELLOSSOM + NATIONAL_DEX_MARILL, // SPECIES_MARILL + NATIONAL_DEX_AZUMARILL, // SPECIES_AZUMARILL + NATIONAL_DEX_SUDOWOODO, // SPECIES_SUDOWOODO + NATIONAL_DEX_POLITOED, // SPECIES_POLITOED + NATIONAL_DEX_HOPPIP, // SPECIES_HOPPIP + NATIONAL_DEX_SKIPLOOM, // SPECIES_SKIPLOOM + NATIONAL_DEX_JUMPLUFF, // SPECIES_JUMPLUFF + NATIONAL_DEX_AIPOM, // SPECIES_AIPOM + NATIONAL_DEX_SUNKERN, // SPECIES_SUNKERN + NATIONAL_DEX_SUNFLORA, // SPECIES_SUNFLORA + NATIONAL_DEX_YANMA, // SPECIES_YANMA + NATIONAL_DEX_WOOPER, // SPECIES_WOOPER + NATIONAL_DEX_QUAGSIRE, // SPECIES_QUAGSIRE + NATIONAL_DEX_ESPEON, // SPECIES_ESPEON + NATIONAL_DEX_UMBREON, // SPECIES_UMBREON + NATIONAL_DEX_MURKROW, // SPECIES_MURKROW + NATIONAL_DEX_SLOWKING, // SPECIES_SLOWKING + NATIONAL_DEX_MISDREAVUS, // SPECIES_MISDREAVUS + NATIONAL_DEX_UNOWN, // SPECIES_UNOWN + NATIONAL_DEX_WOBBUFFET, // SPECIES_WOBBUFFET + NATIONAL_DEX_GIRAFARIG, // SPECIES_GIRAFARIG + NATIONAL_DEX_PINECO, // SPECIES_PINECO + NATIONAL_DEX_FORRETRESS, // SPECIES_FORRETRESS + NATIONAL_DEX_DUNSPARCE, // SPECIES_DUNSPARCE + NATIONAL_DEX_GLIGAR, // SPECIES_GLIGAR + NATIONAL_DEX_STEELIX, // SPECIES_STEELIX + NATIONAL_DEX_SNUBBULL, // SPECIES_SNUBBULL + NATIONAL_DEX_GRANBULL, // SPECIES_GRANBULL + NATIONAL_DEX_QWILFISH, // SPECIES_QWILFISH + NATIONAL_DEX_SCIZOR, // SPECIES_SCIZOR + NATIONAL_DEX_SHUCKLE, // SPECIES_SHUCKLE + NATIONAL_DEX_HERACROSS, // SPECIES_HERACROSS + NATIONAL_DEX_SNEASEL, // SPECIES_SNEASEL + NATIONAL_DEX_TEDDIURSA, // SPECIES_TEDDIURSA + NATIONAL_DEX_URSARING, // SPECIES_URSARING + NATIONAL_DEX_SLUGMA, // SPECIES_SLUGMA + NATIONAL_DEX_MAGCARGO, // SPECIES_MAGCARGO + NATIONAL_DEX_SWINUB, // SPECIES_SWINUB + NATIONAL_DEX_PILOSWINE, // SPECIES_PILOSWINE + NATIONAL_DEX_CORSOLA, // SPECIES_CORSOLA + NATIONAL_DEX_REMORAID, // SPECIES_REMORAID + NATIONAL_DEX_OCTILLERY, // SPECIES_OCTILLERY + NATIONAL_DEX_DELIBIRD, // SPECIES_DELIBIRD + NATIONAL_DEX_MANTINE, // SPECIES_MANTINE + NATIONAL_DEX_SKARMORY, // SPECIES_SKARMORY + NATIONAL_DEX_HOUNDOUR, // SPECIES_HOUNDOUR + NATIONAL_DEX_HOUNDOOM, // SPECIES_HOUNDOOM + NATIONAL_DEX_KINGDRA, // SPECIES_KINGDRA + NATIONAL_DEX_PHANPY, // SPECIES_PHANPY + NATIONAL_DEX_DONPHAN, // SPECIES_DONPHAN + NATIONAL_DEX_PORYGON2, // SPECIES_PORYGON2 + NATIONAL_DEX_STANTLER, // SPECIES_STANTLER + NATIONAL_DEX_SMEARGLE, // SPECIES_SMEARGLE + NATIONAL_DEX_TYROGUE, // SPECIES_TYROGUE + NATIONAL_DEX_HITMONTOP, // SPECIES_HITMONTOP + NATIONAL_DEX_SMOOCHUM, // SPECIES_SMOOCHUM + NATIONAL_DEX_ELEKID, // SPECIES_ELEKID + NATIONAL_DEX_MAGBY, // SPECIES_MAGBY + NATIONAL_DEX_MILTANK, // SPECIES_MILTANK + NATIONAL_DEX_BLISSEY, // SPECIES_BLISSEY + NATIONAL_DEX_RAIKOU, // SPECIES_RAIKOU + NATIONAL_DEX_ENTEI, // SPECIES_ENTEI + NATIONAL_DEX_SUICUNE, // SPECIES_SUICUNE + NATIONAL_DEX_LARVITAR, // SPECIES_LARVITAR + NATIONAL_DEX_PUPITAR, // SPECIES_PUPITAR + NATIONAL_DEX_TYRANITAR, // SPECIES_TYRANITAR + NATIONAL_DEX_LUGIA, // SPECIES_LUGIA + NATIONAL_DEX_HO_OH, // SPECIES_HO-OH + NATIONAL_DEX_CELEBI, // SPECIES_CELEBI + NATIONAL_DEX_OLD_UNOWN_B, // SPECIES_OLD_UNOWN_B + NATIONAL_DEX_OLD_UNOWN_C, // SPECIES_OLD_UNOWN_C + NATIONAL_DEX_OLD_UNOWN_D, // SPECIES_OLD_UNOWN_D + NATIONAL_DEX_OLD_UNOWN_E, // SPECIES_OLD_UNOWN_E + NATIONAL_DEX_OLD_UNOWN_F, // SPECIES_OLD_UNOWN_F + NATIONAL_DEX_OLD_UNOWN_G, // SPECIES_OLD_UNOWN_G + NATIONAL_DEX_OLD_UNOWN_H, // SPECIES_OLD_UNOWN_H + NATIONAL_DEX_OLD_UNOWN_I, // SPECIES_OLD_UNOWN_I + NATIONAL_DEX_OLD_UNOWN_J, // SPECIES_OLD_UNOWN_J + NATIONAL_DEX_OLD_UNOWN_K, // SPECIES_OLD_UNOWN_K + NATIONAL_DEX_OLD_UNOWN_L, // SPECIES_OLD_UNOWN_L + NATIONAL_DEX_OLD_UNOWN_M, // SPECIES_OLD_UNOWN_M + NATIONAL_DEX_OLD_UNOWN_N, // SPECIES_OLD_UNOWN_N + NATIONAL_DEX_OLD_UNOWN_O, // SPECIES_OLD_UNOWN_O + NATIONAL_DEX_OLD_UNOWN_P, // SPECIES_OLD_UNOWN_P + NATIONAL_DEX_OLD_UNOWN_Q, // SPECIES_OLD_UNOWN_Q + NATIONAL_DEX_OLD_UNOWN_R, // SPECIES_OLD_UNOWN_R + NATIONAL_DEX_OLD_UNOWN_S, // SPECIES_OLD_UNOWN_S + NATIONAL_DEX_OLD_UNOWN_T, // SPECIES_OLD_UNOWN_T + NATIONAL_DEX_OLD_UNOWN_U, // SPECIES_OLD_UNOWN_U + NATIONAL_DEX_OLD_UNOWN_V, // SPECIES_OLD_UNOWN_V + NATIONAL_DEX_OLD_UNOWN_W, // SPECIES_OLD_UNOWN_W + NATIONAL_DEX_OLD_UNOWN_X, // SPECIES_OLD_UNOWN_X + NATIONAL_DEX_OLD_UNOWN_Y, // SPECIES_OLD_UNOWN_Y + NATIONAL_DEX_OLD_UNOWN_Z, // SPECIES_OLD_UNOWN_Z + NATIONAL_DEX_TREECKO, // SPECIES_TREECKO + NATIONAL_DEX_GROVYLE, // SPECIES_GROVYLE + NATIONAL_DEX_SCEPTILE, // SPECIES_SCEPTILE + NATIONAL_DEX_TORCHIC, // SPECIES_TORCHIC + NATIONAL_DEX_COMBUSKEN, // SPECIES_COMBUSKEN + NATIONAL_DEX_BLAZIKEN, // SPECIES_BLAZIKEN + NATIONAL_DEX_MUDKIP, // SPECIES_MUDKIP + NATIONAL_DEX_MARSHTOMP, // SPECIES_MARSHTOMP + NATIONAL_DEX_SWAMPERT, // SPECIES_SWAMPERT + NATIONAL_DEX_POOCHYENA, // SPECIES_POOCHYENA + NATIONAL_DEX_MIGHTYENA, // SPECIES_MIGHTYENA + NATIONAL_DEX_ZIGZAGOON, // SPECIES_ZIGZAGOON + NATIONAL_DEX_LINOONE, // SPECIES_LINOONE + NATIONAL_DEX_WURMPLE, // SPECIES_WURMPLE + NATIONAL_DEX_SILCOON, // SPECIES_SILCOON + NATIONAL_DEX_BEAUTIFLY, // SPECIES_BEAUTIFLY + NATIONAL_DEX_CASCOON, // SPECIES_CASCOON + NATIONAL_DEX_DUSTOX, // SPECIES_DUSTOX + NATIONAL_DEX_LOTAD, // SPECIES_LOTAD + NATIONAL_DEX_LOMBRE, // SPECIES_LOMBRE + NATIONAL_DEX_LUDICOLO, // SPECIES_LUDICOLO + NATIONAL_DEX_SEEDOT, // SPECIES_SEEDOT + NATIONAL_DEX_NUZLEAF, // SPECIES_NUZLEAF + NATIONAL_DEX_SHIFTRY, // SPECIES_SHIFTRY + NATIONAL_DEX_NINCADA, // SPECIES_NINCADA + NATIONAL_DEX_NINJASK, // SPECIES_NINJASK + NATIONAL_DEX_SHEDINJA, // SPECIES_SHEDINJA + NATIONAL_DEX_TAILLOW, // SPECIES_TAILLOW + NATIONAL_DEX_SWELLOW, // SPECIES_SWELLOW + NATIONAL_DEX_SHROOMISH, // SPECIES_SHROOMISH + NATIONAL_DEX_BRELOOM, // SPECIES_BRELOOM + NATIONAL_DEX_SPINDA, // SPECIES_SPINDA + NATIONAL_DEX_WINGULL, // SPECIES_WINGULL + NATIONAL_DEX_PELIPPER, // SPECIES_PELIPPER + NATIONAL_DEX_SURSKIT, // SPECIES_SURSKIT + NATIONAL_DEX_MASQUERAIN, // SPECIES_MASQUERAIN + NATIONAL_DEX_WAILMER, // SPECIES_WAILMER + NATIONAL_DEX_WAILORD, // SPECIES_WAILORD + NATIONAL_DEX_SKITTY, // SPECIES_SKITTY + NATIONAL_DEX_DELCATTY, // SPECIES_DELCATTY + NATIONAL_DEX_KECLEON, // SPECIES_KECLEON + NATIONAL_DEX_BALTOY, // SPECIES_BALTOY + NATIONAL_DEX_CLAYDOL, // SPECIES_CLAYDOL + NATIONAL_DEX_NOSEPASS, // SPECIES_NOSEPASS + NATIONAL_DEX_TORKOAL, // SPECIES_TORKOAL + NATIONAL_DEX_SABLEYE, // SPECIES_SABLEYE + NATIONAL_DEX_BARBOACH, // SPECIES_BARBOACH + NATIONAL_DEX_WHISCASH, // SPECIES_WHISCASH + NATIONAL_DEX_LUVDISC, // SPECIES_LUVDISC + NATIONAL_DEX_CORPHISH, // SPECIES_CORPHISH + NATIONAL_DEX_CRAWDAUNT, // SPECIES_CRAWDAUNT + NATIONAL_DEX_FEEBAS, // SPECIES_FEEBAS + NATIONAL_DEX_MILOTIC, // SPECIES_MILOTIC + NATIONAL_DEX_CARVANHA, // SPECIES_CARVANHA + NATIONAL_DEX_SHARPEDO, // SPECIES_SHARPEDO + NATIONAL_DEX_TRAPINCH, // SPECIES_TRAPINCH + NATIONAL_DEX_VIBRAVA, // SPECIES_VIBRAVA + NATIONAL_DEX_FLYGON, // SPECIES_FLYGON + NATIONAL_DEX_MAKUHITA, // SPECIES_MAKUHITA + NATIONAL_DEX_HARIYAMA, // SPECIES_HARIYAMA + NATIONAL_DEX_ELECTRIKE, // SPECIES_ELECTRIKE + NATIONAL_DEX_MANECTRIC, // SPECIES_MANECTRIC + NATIONAL_DEX_NUMEL, // SPECIES_NUMEL + NATIONAL_DEX_CAMERUPT, // SPECIES_CAMERUPT + NATIONAL_DEX_SPHEAL, // SPECIES_SPHEAL + NATIONAL_DEX_SEALEO, // SPECIES_SEALEO + NATIONAL_DEX_WALREIN, // SPECIES_WALREIN + NATIONAL_DEX_CACNEA, // SPECIES_CACNEA + NATIONAL_DEX_CACTURNE, // SPECIES_CACTURNE + NATIONAL_DEX_SNORUNT, // SPECIES_SNORUNT + NATIONAL_DEX_GLALIE, // SPECIES_GLALIE + NATIONAL_DEX_LUNATONE, // SPECIES_LUNATONE + NATIONAL_DEX_SOLROCK, // SPECIES_SOLROCK + NATIONAL_DEX_AZURILL, // SPECIES_AZURILL + NATIONAL_DEX_SPOINK, // SPECIES_SPOINK + NATIONAL_DEX_GRUMPIG, // SPECIES_GRUMPIG + NATIONAL_DEX_PLUSLE, // SPECIES_PLUSLE + NATIONAL_DEX_MINUN, // SPECIES_MINUN + NATIONAL_DEX_MAWILE, // SPECIES_MAWILE + NATIONAL_DEX_MEDITITE, // SPECIES_MEDITITE + NATIONAL_DEX_MEDICHAM, // SPECIES_MEDICHAM + NATIONAL_DEX_SWABLU, // SPECIES_SWABLU + NATIONAL_DEX_ALTARIA, // SPECIES_ALTARIA + NATIONAL_DEX_WYNAUT, // SPECIES_WYNAUT + NATIONAL_DEX_DUSKULL, // SPECIES_DUSKULL + NATIONAL_DEX_DUSCLOPS, // SPECIES_DUSCLOPS + NATIONAL_DEX_ROSELIA, // SPECIES_ROSELIA + NATIONAL_DEX_SLAKOTH, // SPECIES_SLAKOTH + NATIONAL_DEX_VIGOROTH, // SPECIES_VIGOROTH + NATIONAL_DEX_SLAKING, // SPECIES_SLAKING + NATIONAL_DEX_GULPIN, // SPECIES_GULPIN + NATIONAL_DEX_SWALOT, // SPECIES_SWALOT + NATIONAL_DEX_TROPIUS, // SPECIES_TROPIUS + NATIONAL_DEX_WHISMUR, // SPECIES_WHISMUR + NATIONAL_DEX_LOUDRED, // SPECIES_LOUDRED + NATIONAL_DEX_EXPLOUD, // SPECIES_EXPLOUD + NATIONAL_DEX_CLAMPERL, // SPECIES_CLAMPERL + NATIONAL_DEX_HUNTAIL, // SPECIES_HUNTAIL + NATIONAL_DEX_GOREBYSS, // SPECIES_GOREBYSS + NATIONAL_DEX_ABSOL, // SPECIES_ABSOL + NATIONAL_DEX_SHUPPET, // SPECIES_SHUPPET + NATIONAL_DEX_BANETTE, // SPECIES_BANETTE + NATIONAL_DEX_SEVIPER, // SPECIES_SEVIPER + NATIONAL_DEX_ZANGOOSE, // SPECIES_ZANGOOSE + NATIONAL_DEX_RELICANTH, // SPECIES_RELICANTH + NATIONAL_DEX_ARON, // SPECIES_ARON + NATIONAL_DEX_LAIRON, // SPECIES_LAIRON + NATIONAL_DEX_AGGRON, // SPECIES_AGGRON + NATIONAL_DEX_CASTFORM, // SPECIES_CASTFORM + NATIONAL_DEX_VOLBEAT, // SPECIES_VOLBEAT + NATIONAL_DEX_ILLUMISE, // SPECIES_ILLUMISE + NATIONAL_DEX_LILEEP, // SPECIES_LILEEP + NATIONAL_DEX_CRADILY, // SPECIES_CRADILY + NATIONAL_DEX_ANORITH, // SPECIES_ANORITH + NATIONAL_DEX_ARMALDO, // SPECIES_ARMALDO + NATIONAL_DEX_RALTS, // SPECIES_RALTS + NATIONAL_DEX_KIRLIA, // SPECIES_KIRLIA + NATIONAL_DEX_GARDEVOIR, // SPECIES_GARDEVOIR + NATIONAL_DEX_BAGON, // SPECIES_BAGON + NATIONAL_DEX_SHELGON, // SPECIES_SHELGON + NATIONAL_DEX_SALAMENCE, // SPECIES_SALAMENCE + NATIONAL_DEX_BELDUM, // SPECIES_BELDUM + NATIONAL_DEX_METANG, // SPECIES_METANG + NATIONAL_DEX_METAGROSS, // SPECIES_METAGROSS + NATIONAL_DEX_REGIROCK, // SPECIES_REGIROCK + NATIONAL_DEX_REGICE, // SPECIES_REGICE + NATIONAL_DEX_REGISTEEL, // SPECIES_REGISTEEL + NATIONAL_DEX_KYOGRE, // SPECIES_KYOGRE + NATIONAL_DEX_GROUDON, // SPECIES_GROUDON + NATIONAL_DEX_RAYQUAZA, // SPECIES_RAYQUAZA + NATIONAL_DEX_LATIAS, // SPECIES_LATIAS + NATIONAL_DEX_LATIOS, // SPECIES_LATIOS + NATIONAL_DEX_JIRACHI, // SPECIES_JIRACHI + NATIONAL_DEX_DEOXYS, // SPECIES_DEOXYS + NATIONAL_DEX_CHIMECHO // SPECIES_CHIMECHO +}; + +const u16 gHoennToNationalOrder[] = // Assigns Hoenn Dex Pokémon (Using National Dex Index) +{ + // 0 + NATIONAL_DEX_TREECKO, // HOENN_DEX_TREECKO + NATIONAL_DEX_GROVYLE, // HOENN_DEX_GROVYLE + NATIONAL_DEX_SCEPTILE, // HOENN_DEX_SCEPTILE + NATIONAL_DEX_TORCHIC, // HOENN_DEX_TORCHIC + NATIONAL_DEX_COMBUSKEN, // HOENN_DEX_COMBUSKEN + NATIONAL_DEX_BLAZIKEN, // HOENN_DEX_BLAZIKEN + NATIONAL_DEX_MUDKIP, // HOENN_DEX_MUDKIP + NATIONAL_DEX_MARSHTOMP, // HOENN_DEX_MARSHTOMP + NATIONAL_DEX_SWAMPERT, // HOENN_DEX_SWAMPERT + NATIONAL_DEX_POOCHYENA, // HOENN_DEX_POOCHYENA + NATIONAL_DEX_MIGHTYENA, // HOENN_DEX_MIGHTYENA + NATIONAL_DEX_ZIGZAGOON, // HOENN_DEX_ZIGZAGOON + NATIONAL_DEX_LINOONE, // HOENN_DEX_LINOONE + NATIONAL_DEX_WURMPLE, // HOENN_DEX_WURMPLE + NATIONAL_DEX_SILCOON, // HOENN_DEX_SILCOON + NATIONAL_DEX_BEAUTIFLY, // HOENN_DEX_BEAUTIFLY + NATIONAL_DEX_CASCOON, // HOENN_DEX_CASCOON + NATIONAL_DEX_DUSTOX, // HOENN_DEX_DUSTOX + NATIONAL_DEX_LOTAD, // HOENN_DEX_LOTAD + NATIONAL_DEX_LOMBRE, // HOENN_DEX_LOMBRE + NATIONAL_DEX_LUDICOLO, // HOENN_DEX_LUDICOLO + NATIONAL_DEX_SEEDOT, // HOENN_DEX_SEEDOT + NATIONAL_DEX_NUZLEAF, // HOENN_DEX_NUZLEAF + NATIONAL_DEX_SHIFTRY, // HOENN_DEX_SHIFTRY + NATIONAL_DEX_TAILLOW, // HOENN_DEX_TAILLOW + NATIONAL_DEX_SWELLOW, // HOENN_DEX_SWELLOW + NATIONAL_DEX_WINGULL, // HOENN_DEX_WINGULL + NATIONAL_DEX_PELIPPER, // HOENN_DEX_PELIPPER + NATIONAL_DEX_RALTS, // HOENN_DEX_RALTS + NATIONAL_DEX_KIRLIA, // HOENN_DEX_KIRLIA + NATIONAL_DEX_GARDEVOIR, // HOENN_DEX_GARDEVOIR + NATIONAL_DEX_SURSKIT, // HOENN_DEX_SURSKIT + NATIONAL_DEX_MASQUERAIN, // HOENN_DEX_MASQUERAIN + NATIONAL_DEX_SHROOMISH, // HOENN_DEX_SHROOMISH + NATIONAL_DEX_BRELOOM, // HOENN_DEX_BRELOOM + NATIONAL_DEX_SLAKOTH, // HOENN_DEX_SLAKOTH + NATIONAL_DEX_VIGOROTH, // HOENN_DEX_VIGOROTH + NATIONAL_DEX_SLAKING, // HOENN_DEX_SLAKING + NATIONAL_DEX_ABRA, // HOENN_DEX_ABRA + NATIONAL_DEX_KADABRA, // HOENN_DEX_KADABRA + NATIONAL_DEX_ALAKAZAM, // HOENN_DEX_ALAKAZAM + NATIONAL_DEX_NINCADA, // HOENN_DEX_NINCADA + NATIONAL_DEX_NINJASK, // HOENN_DEX_NINJASK + NATIONAL_DEX_SHEDINJA, // HOENN_DEX_SHEDINJA + NATIONAL_DEX_WHISMUR, // HOENN_DEX_WHISMUR + NATIONAL_DEX_LOUDRED, // HOENN_DEX_LOUDRED + NATIONAL_DEX_EXPLOUD, // HOENN_DEX_EXPLOUD + NATIONAL_DEX_MAKUHITA, // HOENN_DEX_MAKUHITA + NATIONAL_DEX_HARIYAMA, // HOENN_DEX_HARIYAMA + NATIONAL_DEX_GOLDEEN, // HOENN_DEX_GOLDEEN + NATIONAL_DEX_SEAKING, // HOENN_DEX_SEAKING + NATIONAL_DEX_MAGIKARP, // HOENN_DEX_MAGIKARP + NATIONAL_DEX_GYARADOS, // HOENN_DEX_GYARADOS + NATIONAL_DEX_AZURILL, // HOENN_DEX_AZURILL + NATIONAL_DEX_MARILL, // HOENN_DEX_MARILL + NATIONAL_DEX_AZUMARILL, // HOENN_DEX_AZUMARILL + NATIONAL_DEX_GEODUDE, // HOENN_DEX_GEODUDE + NATIONAL_DEX_GRAVELER, // HOENN_DEX_GRAVELER + NATIONAL_DEX_GOLEM, // HOENN_DEX_GOLEM + NATIONAL_DEX_NOSEPASS, // HOENN_DEX_NOSEPASS + NATIONAL_DEX_SKITTY, // HOENN_DEX_SKITTY + NATIONAL_DEX_DELCATTY, // HOENN_DEX_DELCATTY + NATIONAL_DEX_ZUBAT, // HOENN_DEX_ZUBAT + NATIONAL_DEX_GOLBAT, // HOENN_DEX_GOLBAT + NATIONAL_DEX_CROBAT, // HOENN_DEX_CROBAT + NATIONAL_DEX_TENTACOOL, // HOENN_DEX_TENTACOOL + NATIONAL_DEX_TENTACRUEL, // HOENN_DEX_TENTACRUEL + NATIONAL_DEX_SABLEYE, // HOENN_DEX_SABLEYE + NATIONAL_DEX_MAWILE, // HOENN_DEX_MAWILE + NATIONAL_DEX_ARON, // HOENN_DEX_ARON + NATIONAL_DEX_LAIRON, // HOENN_DEX_LAIRON + NATIONAL_DEX_AGGRON, // HOENN_DEX_AGGRON + NATIONAL_DEX_MACHOP, // HOENN_DEX_MACHOP + NATIONAL_DEX_MACHOKE, // HOENN_DEX_MACHOKE + NATIONAL_DEX_MACHAMP, // HOENN_DEX_MACHAMP + NATIONAL_DEX_MEDITITE, // HOENN_DEX_MEDITITE + NATIONAL_DEX_MEDICHAM, // HOENN_DEX_MEDICHAM + NATIONAL_DEX_ELECTRIKE, // HOENN_DEX_ELECTRIKE + NATIONAL_DEX_MANECTRIC, // HOENN_DEX_MANECTRIC + NATIONAL_DEX_PLUSLE, // HOENN_DEX_PLUSLE + NATIONAL_DEX_MINUN, // HOENN_DEX_MINUN + NATIONAL_DEX_MAGNEMITE, // HOENN_DEX_MAGNEMITE + NATIONAL_DEX_MAGNETON, // HOENN_DEX_MAGNETON + NATIONAL_DEX_VOLTORB, // HOENN_DEX_VOLTORB + NATIONAL_DEX_ELECTRODE, // HOENN_DEX_ELECTRODE + NATIONAL_DEX_VOLBEAT, // HOENN_DEX_VOLBEAT + NATIONAL_DEX_ILLUMISE, // HOENN_DEX_ILLUMISE + NATIONAL_DEX_ODDISH, // HOENN_DEX_ODDISH + NATIONAL_DEX_GLOOM, // HOENN_DEX_GLOOM + NATIONAL_DEX_VILEPLUME, // HOENN_DEX_VILEPLUME + NATIONAL_DEX_BELLOSSOM, // HOENN_DEX_BELLOSSOM + NATIONAL_DEX_DODUO, // HOENN_DEX_DODUO + NATIONAL_DEX_DODRIO, // HOENN_DEX_DODRIO + NATIONAL_DEX_ROSELIA, // HOENN_DEX_ROSELIA + NATIONAL_DEX_GULPIN, // HOENN_DEX_GULPIN + NATIONAL_DEX_SWALOT, // HOENN_DEX_SWALOT + NATIONAL_DEX_CARVANHA, // HOENN_DEX_CARVANHA + NATIONAL_DEX_SHARPEDO, // HOENN_DEX_SHARPEDO + NATIONAL_DEX_WAILMER, // HOENN_DEX_WAILMER + NATIONAL_DEX_WAILORD, // HOENN_DEX_WAILORD + NATIONAL_DEX_NUMEL, // HOENN_DEX_NUMEL + NATIONAL_DEX_CAMERUPT, // HOENN_DEX_CAMERUPT + NATIONAL_DEX_SLUGMA, // HOENN_DEX_SLUGMA + NATIONAL_DEX_MAGCARGO, // HOENN_DEX_MAGCARGO + NATIONAL_DEX_TORKOAL, // HOENN_DEX_TORKOAL + NATIONAL_DEX_GRIMER, // HOENN_DEX_GRIMER + NATIONAL_DEX_MUK, // HOENN_DEX_MUK + NATIONAL_DEX_KOFFING, // HOENN_DEX_KOFFING + NATIONAL_DEX_WEEZING, // HOENN_DEX_WEEZING + NATIONAL_DEX_SPOINK, // HOENN_DEX_SPOINK + NATIONAL_DEX_GRUMPIG, // HOENN_DEX_GRUMPIG + NATIONAL_DEX_SANDSHREW, // HOENN_DEX_SANDSHREW + NATIONAL_DEX_SANDSLASH, // HOENN_DEX_SANDSLASH + NATIONAL_DEX_SPINDA, // HOENN_DEX_SPINDA + NATIONAL_DEX_SKARMORY, // HOENN_DEX_SKARMORY + NATIONAL_DEX_TRAPINCH, // HOENN_DEX_TRAPINCH + NATIONAL_DEX_VIBRAVA, // HOENN_DEX_VIBRAVA + NATIONAL_DEX_FLYGON, // HOENN_DEX_FLYGON + NATIONAL_DEX_CACNEA, // HOENN_DEX_CACNEA + NATIONAL_DEX_CACTURNE, // HOENN_DEX_CACTURNE + NATIONAL_DEX_SWABLU, // HOENN_DEX_SWABLU + NATIONAL_DEX_ALTARIA, // HOENN_DEX_ALTARIA + NATIONAL_DEX_ZANGOOSE, // HOENN_DEX_ZANGOOSE + NATIONAL_DEX_SEVIPER, // HOENN_DEX_SEVIPER + NATIONAL_DEX_LUNATONE, // HOENN_DEX_LUNATONE + NATIONAL_DEX_SOLROCK, // HOENN_DEX_SOLROCK + NATIONAL_DEX_BARBOACH, // HOENN_DEX_BARBOACH + NATIONAL_DEX_WHISCASH, // HOENN_DEX_WHISCASH + NATIONAL_DEX_CORPHISH, // HOENN_DEX_CORPHISH + NATIONAL_DEX_CRAWDAUNT, // HOENN_DEX_CRAWDAUNT + NATIONAL_DEX_BALTOY, // HOENN_DEX_BALTOY + NATIONAL_DEX_CLAYDOL, // HOENN_DEX_CLAYDOL + NATIONAL_DEX_LILEEP, // HOENN_DEX_LILEEP + NATIONAL_DEX_CRADILY, // HOENN_DEX_CRADILY + NATIONAL_DEX_ANORITH, // HOENN_DEX_ANORITH + NATIONAL_DEX_ARMALDO, // HOENN_DEX_ARMALDO + NATIONAL_DEX_IGGLYBUFF, // HOENN_DEX_IGGLYBUFF + NATIONAL_DEX_JIGGLYPUFF, // HOENN_DEX_JIGGLYPUFF + NATIONAL_DEX_WIGGLYTUFF, // HOENN_DEX_WIGGLYTUFF + NATIONAL_DEX_FEEBAS, // HOENN_DEX_FEEBAS + NATIONAL_DEX_MILOTIC, // HOENN_DEX_MILOTIC + NATIONAL_DEX_CASTFORM, // HOENN_DEX_CASTFORM + NATIONAL_DEX_STARYU, // HOENN_DEX_STARYU + NATIONAL_DEX_STARMIE, // HOENN_DEX_STARMIE + NATIONAL_DEX_KECLEON, // HOENN_DEX_KECLEON + NATIONAL_DEX_SHUPPET, // HOENN_DEX_SHUPPET + NATIONAL_DEX_BANETTE, // HOENN_DEX_BANETTE + NATIONAL_DEX_DUSKULL, // HOENN_DEX_DUSKULL + NATIONAL_DEX_DUSCLOPS, // HOENN_DEX_DUSCLOPS + NATIONAL_DEX_TROPIUS, // HOENN_DEX_TROPIUS + NATIONAL_DEX_CHIMECHO, // HOENN_DEX_CHIMECHO + NATIONAL_DEX_ABSOL, // HOENN_DEX_ABSOL + NATIONAL_DEX_VULPIX, // HOENN_DEX_VULPIX + NATIONAL_DEX_NINETALES, // HOENN_DEX_NINETALES + NATIONAL_DEX_PICHU, // HOENN_DEX_PICHU + NATIONAL_DEX_PIKACHU, // HOENN_DEX_PIKACHU + NATIONAL_DEX_RAICHU, // HOENN_DEX_RAICHU + NATIONAL_DEX_PSYDUCK, // HOENN_DEX_PSYDUCK + NATIONAL_DEX_GOLDUCK, // HOENN_DEX_GOLDUCK + NATIONAL_DEX_WYNAUT, // HOENN_DEX_WYNAUT + NATIONAL_DEX_WOBBUFFET, // HOENN_DEX_WOBBUFFET + NATIONAL_DEX_NATU, // HOENN_DEX_NATU + NATIONAL_DEX_XATU, // HOENN_DEX_XATU + NATIONAL_DEX_GIRAFARIG, // HOENN_DEX_GIRAFARIG + NATIONAL_DEX_PHANPY, // HOENN_DEX_PHANPY + NATIONAL_DEX_DONPHAN, // HOENN_DEX_DONPHAN + NATIONAL_DEX_PINSIR, // HOENN_DEX_PINSIR + NATIONAL_DEX_HERACROSS, // HOENN_DEX_HERACROSS + NATIONAL_DEX_RHYHORN, // HOENN_DEX_RHYHORN + NATIONAL_DEX_RHYDON, // HOENN_DEX_RHYDON + NATIONAL_DEX_SNORUNT, // HOENN_DEX_SNORUNT + NATIONAL_DEX_GLALIE, // HOENN_DEX_GLALIE + NATIONAL_DEX_SPHEAL, // HOENN_DEX_SPHEAL + NATIONAL_DEX_SEALEO, // HOENN_DEX_SEALEO + NATIONAL_DEX_WALREIN, // HOENN_DEX_WALREIN + NATIONAL_DEX_CLAMPERL, // HOENN_DEX_CLAMPERL + NATIONAL_DEX_HUNTAIL, // HOENN_DEX_HUNTAIL + NATIONAL_DEX_GOREBYSS, // HOENN_DEX_GOREBYSS + NATIONAL_DEX_RELICANTH, // HOENN_DEX_RELICANTH + NATIONAL_DEX_CORSOLA, // HOENN_DEX_CORSOLA + NATIONAL_DEX_CHINCHOU, // HOENN_DEX_CHINCHOU + NATIONAL_DEX_LANTURN, // HOENN_DEX_LANTURN + NATIONAL_DEX_LUVDISC, // HOENN_DEX_LUVDISC + NATIONAL_DEX_HORSEA, // HOENN_DEX_HORSEA + NATIONAL_DEX_SEADRA, // HOENN_DEX_SEADRA + NATIONAL_DEX_KINGDRA, // HOENN_DEX_KINGDRA + NATIONAL_DEX_BAGON, // HOENN_DEX_BAGON + NATIONAL_DEX_SHELGON, // HOENN_DEX_SHELGON + NATIONAL_DEX_SALAMENCE, // HOENN_DEX_SALAMENCE + NATIONAL_DEX_BELDUM, // HOENN_DEX_BELDUM + NATIONAL_DEX_METANG, // HOENN_DEX_METANG + NATIONAL_DEX_METAGROSS, // HOENN_DEX_METAGROSS + NATIONAL_DEX_REGIROCK, // HOENN_DEX_REGIROCK + NATIONAL_DEX_REGICE, // HOENN_DEX_REGICE + NATIONAL_DEX_REGISTEEL, // HOENN_DEX_REGISTEEL + NATIONAL_DEX_LATIAS, // HOENN_DEX_LATIAS + NATIONAL_DEX_LATIOS, // HOENN_DEX_LATIOS + NATIONAL_DEX_KYOGRE, // HOENN_DEX_KYOGRE + NATIONAL_DEX_GROUDON, // HOENN_DEX_GROUDON + NATIONAL_DEX_RAYQUAZA, // HOENN_DEX_RAYQUAZA + NATIONAL_DEX_JIRACHI, // HOENN_DEX_JIRACHI + NATIONAL_DEX_DEOXYS, // HOENN_DEX_DEOXYS + NATIONAL_DEX_BULBASAUR, // HOENN_DEX_BULBASAUR - Pokémon from here onwards are UNSEEN in the Hoenn Dex. + NATIONAL_DEX_IVYSAUR, // HOENN_DEX_IVYSAUR + NATIONAL_DEX_VENUSAUR, // HOENN_DEX_VENUSAUR + NATIONAL_DEX_CHARMANDER, // HOENN_DEX_CHARMANDER + NATIONAL_DEX_CHARMELEON, // HOENN_DEX_CHARMELEON + NATIONAL_DEX_CHARIZARD, // HOENN_DEX_CHARIZARD + NATIONAL_DEX_SQUIRTLE, // HOENN_DEX_SQUIRTLE + NATIONAL_DEX_WARTORTLE, // HOENN_DEX_WARTORTLE + NATIONAL_DEX_BLASTOISE, // HOENN_DEX_BLASTOISE + NATIONAL_DEX_CATERPIE, // HOENN_DEX_CATERPIE + NATIONAL_DEX_METAPOD, // HOENN_DEX_METAPOD + NATIONAL_DEX_BUTTERFREE, // HOENN_DEX_BUTTERFREE + NATIONAL_DEX_WEEDLE, // HOENN_DEX_WEEDLE + NATIONAL_DEX_KAKUNA, // HOENN_DEX_KAKUNA + NATIONAL_DEX_BEEDRILL, // HOENN_DEX_BEEDRILL + NATIONAL_DEX_PIDGEY, // HOENN_DEX_PIDGEY + NATIONAL_DEX_PIDGEOTTO, // HOENN_DEX_PIDGEOTTO + NATIONAL_DEX_PIDGEOT, // HOENN_DEX_PIDGEOT + NATIONAL_DEX_RATTATA, // HOENN_DEX_RATTATA + NATIONAL_DEX_RATICATE, // HOENN_DEX_RATICATE + NATIONAL_DEX_SPEAROW, // HOENN_DEX_SPEAROW + NATIONAL_DEX_FEAROW, // HOENN_DEX_FEAROW + NATIONAL_DEX_EKANS, // HOENN_DEX_EKANS + NATIONAL_DEX_ARBOK, // HOENN_DEX_ARBOK + NATIONAL_DEX_NIDORAN_F, // HOENN_DEX_NIDORAN♀ + NATIONAL_DEX_NIDORINA, // HOENN_DEX_NIDORINA + NATIONAL_DEX_NIDOQUEEN, // HOENN_DEX_NIDOQUEEN + NATIONAL_DEX_NIDORAN_M, // HOENN_DEX_NIDORAN♂ + NATIONAL_DEX_NIDORINO, // HOENN_DEX_NIDORINO + NATIONAL_DEX_NIDOKING, // HOENN_DEX_NIDOKING + NATIONAL_DEX_CLEFAIRY, // HOENN_DEX_CLEFAIRY + NATIONAL_DEX_CLEFABLE, // HOENN_DEX_CLEFABLE + NATIONAL_DEX_PARAS, // HOENN_DEX_PARAS + NATIONAL_DEX_PARASECT, // HOENN_DEX_PARASECT + NATIONAL_DEX_VENONAT, // HOENN_DEX_VENONAT + NATIONAL_DEX_VENOMOTH, // HOENN_DEX_VENOMOTH + NATIONAL_DEX_DIGLETT, // HOENN_DEX_DIGLETT + NATIONAL_DEX_DUGTRIO, // HOENN_DEX_DUGTRIO + NATIONAL_DEX_MEOWTH, // HOENN_DEX_MEOWTH + NATIONAL_DEX_PERSIAN, // HOENN_DEX_PERSIAN + NATIONAL_DEX_MANKEY, // HOENN_DEX_MANKEY + NATIONAL_DEX_PRIMEAPE, // HOENN_DEX_PRIMEAPE + NATIONAL_DEX_GROWLITHE, // HOENN_DEX_GROWLITHE + NATIONAL_DEX_ARCANINE, // HOENN_DEX_ARCANINE + NATIONAL_DEX_POLIWAG, // HOENN_DEX_POLIWAG + NATIONAL_DEX_POLIWHIRL, // HOENN_DEX_POLIWHIRL + NATIONAL_DEX_POLIWRATH, // HOENN_DEX_POLIWRATH + NATIONAL_DEX_BELLSPROUT, // HOENN_DEX_BELLSPROUT + NATIONAL_DEX_WEEPINBELL, // HOENN_DEX_WEEPINBELL + NATIONAL_DEX_VICTREEBEL, // HOENN_DEX_VICTREEBEL + NATIONAL_DEX_PONYTA, // HOENN_DEX_PONYTA + NATIONAL_DEX_RAPIDASH, // HOENN_DEX_RAPIDASH + NATIONAL_DEX_SLOWPOKE, // HOENN_DEX_SLOWPOKE + NATIONAL_DEX_SLOWBRO, // HOENN_DEX_SLOWBRO + NATIONAL_DEX_FARFETCHD, // HOENN_DEX_FARFETCH'D + NATIONAL_DEX_SEEL, // HOENN_DEX_SEEL + NATIONAL_DEX_DEWGONG, // HOENN_DEX_DEWGONG + NATIONAL_DEX_SHELLDER, // HOENN_DEX_SHELLDER + NATIONAL_DEX_CLOYSTER, // HOENN_DEX_CLOYSTER + NATIONAL_DEX_GASTLY, // HOENN_DEX_GASTLY + NATIONAL_DEX_HAUNTER, // HOENN_DEX_HAUNTER + NATIONAL_DEX_GENGAR, // HOENN_DEX_GENGAR + NATIONAL_DEX_ONIX, // HOENN_DEX_ONIX + NATIONAL_DEX_DROWZEE, // HOENN_DEX_DROWZEE + NATIONAL_DEX_HYPNO, // HOENN_DEX_HYPNO + NATIONAL_DEX_KRABBY, // HOENN_DEX_KRABBY + NATIONAL_DEX_KINGLER, // HOENN_DEX_KINGLER + NATIONAL_DEX_EXEGGCUTE, // HOENN_DEX_EXEGGCUTE + NATIONAL_DEX_EXEGGUTOR, // HOENN_DEX_EXEGGUTOR + NATIONAL_DEX_CUBONE, // HOENN_DEX_CUBONE + NATIONAL_DEX_MAROWAK, // HOENN_DEX_MAROWAK + NATIONAL_DEX_HITMONLEE, // HOENN_DEX_HITMONLEE + NATIONAL_DEX_HITMONCHAN, // HOENN_DEX_HITMONCHAN + NATIONAL_DEX_LICKITUNG, // HOENN_DEX_LICKITUNG + NATIONAL_DEX_CHANSEY, // HOENN_DEX_CHANSEY + NATIONAL_DEX_TANGELA, // HOENN_DEX_TANGELA + NATIONAL_DEX_KANGASKHAN, // HOENN_DEX_KANGASKHAN + NATIONAL_DEX_MR_MIME, // HOENN_DEX_MR. MIME + NATIONAL_DEX_SCYTHER, // HOENN_DEX_SCYTHER + NATIONAL_DEX_JYNX, // HOENN_DEX_JYNX + NATIONAL_DEX_ELECTABUZZ, // HOENN_DEX_ELECTABUZZ + NATIONAL_DEX_MAGMAR, // HOENN_DEX_MAGMAR + NATIONAL_DEX_TAUROS, // HOENN_DEX_TAUROS + NATIONAL_DEX_LAPRAS, // HOENN_DEX_LAPRAS + NATIONAL_DEX_DITTO, // HOENN_DEX_DITTO + NATIONAL_DEX_EEVEE, // HOENN_DEX_EEVEE + NATIONAL_DEX_VAPOREON, // HOENN_DEX_VAPOREON + NATIONAL_DEX_JOLTEON, // HOENN_DEX_JOLTEON + NATIONAL_DEX_FLAREON, // HOENN_DEX_FLAREON + NATIONAL_DEX_PORYGON, // HOENN_DEX_PORYGON + NATIONAL_DEX_OMANYTE, // HOENN_DEX_OMANYTE + NATIONAL_DEX_OMASTAR, // HOENN_DEX_OMASTAR + NATIONAL_DEX_KABUTO, // HOENN_DEX_KABUTO + NATIONAL_DEX_KABUTOPS, // HOENN_DEX_KABUTOPS + NATIONAL_DEX_AERODACTYL, // HOENN_DEX_AERODACTYL + NATIONAL_DEX_SNORLAX, // HOENN_DEX_SNORLAX + NATIONAL_DEX_ARTICUNO, // HOENN_DEX_ARTICUNO + NATIONAL_DEX_ZAPDOS, // HOENN_DEX_ZAPDOS + NATIONAL_DEX_MOLTRES, // HOENN_DEX_MOLTRES + NATIONAL_DEX_DRATINI, // HOENN_DEX_DRATINI + NATIONAL_DEX_DRAGONAIR, // HOENN_DEX_DRAGONAIR + NATIONAL_DEX_DRAGONITE, // HOENN_DEX_DRAGONITE + NATIONAL_DEX_MEWTWO, // HOENN_DEX_MEWTWO + NATIONAL_DEX_MEW, // HOENN_DEX_MEW + NATIONAL_DEX_CHIKORITA, // HOENN_DEX_CHIKORITA + NATIONAL_DEX_BAYLEEF, // HOENN_DEX_BAYLEEF + NATIONAL_DEX_MEGANIUM, // HOENN_DEX_MEGANIUM + NATIONAL_DEX_CYNDAQUIL, // HOENN_DEX_CYNDAQUIL + NATIONAL_DEX_QUILAVA, // HOENN_DEX_QUILAVA + NATIONAL_DEX_TYPHLOSION, // HOENN_DEX_TYPHLOSION + NATIONAL_DEX_TOTODILE, // HOENN_DEX_TOTODILE + NATIONAL_DEX_CROCONAW, // HOENN_DEX_CROCONAW + NATIONAL_DEX_FERALIGATR, // HOENN_DEX_FERALIGATR + NATIONAL_DEX_SENTRET, // HOENN_DEX_SENTRET + NATIONAL_DEX_FURRET, // HOENN_DEX_FURRET + NATIONAL_DEX_HOOTHOOT, // HOENN_DEX_HOOTHOOT + NATIONAL_DEX_NOCTOWL, // HOENN_DEX_NOCTOWL + NATIONAL_DEX_LEDYBA, // HOENN_DEX_LEDYBA + NATIONAL_DEX_LEDIAN, // HOENN_DEX_LEDIAN + NATIONAL_DEX_SPINARAK, // HOENN_DEX_SPINARAK + NATIONAL_DEX_ARIADOS, // HOENN_DEX_ARIADOS + NATIONAL_DEX_CLEFFA, // HOENN_DEX_CLEFFA + NATIONAL_DEX_TOGEPI, // HOENN_DEX_TOGEPI + NATIONAL_DEX_TOGETIC, // HOENN_DEX_TOGETIC + NATIONAL_DEX_MAREEP, // HOENN_DEX_MAREEP + NATIONAL_DEX_FLAAFFY, // HOENN_DEX_FLAAFFY + NATIONAL_DEX_AMPHAROS, // HOENN_DEX_AMPHAROS + NATIONAL_DEX_SUDOWOODO, // HOENN_DEX_SUDOWOODO + NATIONAL_DEX_POLITOED, // HOENN_DEX_POLITOED + NATIONAL_DEX_HOPPIP, // HOENN_DEX_HOPPIP + NATIONAL_DEX_SKIPLOOM, // HOENN_DEX_SKIPLOOM + NATIONAL_DEX_JUMPLUFF, // HOENN_DEX_JUMPLUFF + NATIONAL_DEX_AIPOM, // HOENN_DEX_AIPOM + NATIONAL_DEX_SUNKERN, // HOENN_DEX_SUNKERN + NATIONAL_DEX_SUNFLORA, // HOENN_DEX_SUNFLORA + NATIONAL_DEX_YANMA, // HOENN_DEX_YANMA + NATIONAL_DEX_WOOPER, // HOENN_DEX_WOOPER + NATIONAL_DEX_QUAGSIRE, // HOENN_DEX_QUAGSIRE + NATIONAL_DEX_ESPEON, // HOENN_DEX_ESPEON + NATIONAL_DEX_UMBREON, // HOENN_DEX_UMBREON + NATIONAL_DEX_MURKROW, // HOENN_DEX_MURKROW + NATIONAL_DEX_SLOWKING, // HOENN_DEX_SLOWKING + NATIONAL_DEX_MISDREAVUS, // HOENN_DEX_MISDREAVUS + NATIONAL_DEX_UNOWN, // HOENN_DEX_UNOWN + NATIONAL_DEX_PINECO, // HOENN_DEX_PINECO + NATIONAL_DEX_FORRETRESS, // HOENN_DEX_FORRETRESS + NATIONAL_DEX_DUNSPARCE, // HOENN_DEX_DUNSPARCE + NATIONAL_DEX_GLIGAR, // HOENN_DEX_GLIGAR + NATIONAL_DEX_STEELIX, // HOENN_DEX_STEELIX + NATIONAL_DEX_SNUBBULL, // HOENN_DEX_SNUBBULL + NATIONAL_DEX_GRANBULL, // HOENN_DEX_GRANBULL + NATIONAL_DEX_QWILFISH, // HOENN_DEX_QWILFISH + NATIONAL_DEX_SCIZOR, // HOENN_DEX_SCIZOR + NATIONAL_DEX_SHUCKLE, // HOENN_DEX_SHUCKLE + NATIONAL_DEX_SNEASEL, // HOENN_DEX_SNEASEL + NATIONAL_DEX_TEDDIURSA, // HOENN_DEX_TEDDIURSA + NATIONAL_DEX_URSARING, // HOENN_DEX_URSARING + NATIONAL_DEX_SWINUB, // HOENN_DEX_SWINUB + NATIONAL_DEX_PILOSWINE, // HOENN_DEX_PILOSWINE + NATIONAL_DEX_REMORAID, // HOENN_DEX_REMORAID + NATIONAL_DEX_OCTILLERY, // HOENN_DEX_OCTILLERY + NATIONAL_DEX_DELIBIRD, // HOENN_DEX_DELIBIRD + NATIONAL_DEX_MANTINE, // HOENN_DEX_MANTINE + NATIONAL_DEX_HOUNDOUR, // HOENN_DEX_HOUNDOUR + NATIONAL_DEX_HOUNDOOM, // HOENN_DEX_HOUNDOOM + NATIONAL_DEX_PORYGON2, // HOENN_DEX_PORYGON2 + NATIONAL_DEX_STANTLER, // HOENN_DEX_STANTLER + NATIONAL_DEX_SMEARGLE, // HOENN_DEX_SMEARGLE + NATIONAL_DEX_TYROGUE, // HOENN_DEX_TYROGUE + NATIONAL_DEX_HITMONTOP, // HOENN_DEX_HITMONTOP + NATIONAL_DEX_SMOOCHUM, // HOENN_DEX_SMOOCHUM + NATIONAL_DEX_ELEKID, // HOENN_DEX_ELEKID + NATIONAL_DEX_MAGBY, // HOENN_DEX_MAGBY + NATIONAL_DEX_MILTANK, // HOENN_DEX_MILTANK + NATIONAL_DEX_BLISSEY, // HOENN_DEX_BLISSEY + NATIONAL_DEX_RAIKOU, // HOENN_DEX_RAIKOU + NATIONAL_DEX_ENTEI, // HOENN_DEX_ENTEI + NATIONAL_DEX_SUICUNE, // HOENN_DEX_SUICUNE + NATIONAL_DEX_LARVITAR, // HOENN_DEX_LARVITAR + NATIONAL_DEX_PUPITAR, // HOENN_DEX_PUPITAR + NATIONAL_DEX_TYRANITAR, // HOENN_DEX_TYRANITAR + NATIONAL_DEX_LUGIA, // HOENN_DEX_LUGIA + NATIONAL_DEX_HO_OH, // HOENN_DEX_HO-OH + NATIONAL_DEX_CELEBI, // HOENN_DEX_CELEBI + NATIONAL_DEX_OLD_UNOWN_B, // HOENN_DEX_OLD_UNOWN_B + NATIONAL_DEX_OLD_UNOWN_C, // HOENN_DEX_OLD_UNOWN_C + NATIONAL_DEX_OLD_UNOWN_D, // HOENN_DEX_OLD_UNOWN_D + NATIONAL_DEX_OLD_UNOWN_E, // HOENN_DEX_OLD_UNOWN_E + NATIONAL_DEX_OLD_UNOWN_F, // HOENN_DEX_OLD_UNOWN_F + NATIONAL_DEX_OLD_UNOWN_G, // HOENN_DEX_OLD_UNOWN_G + NATIONAL_DEX_OLD_UNOWN_H, // HOENN_DEX_OLD_UNOWN_H + NATIONAL_DEX_OLD_UNOWN_I, // HOENN_DEX_OLD_UNOWN_I + NATIONAL_DEX_OLD_UNOWN_J, // HOENN_DEX_OLD_UNOWN_J + NATIONAL_DEX_OLD_UNOWN_K, // HOENN_DEX_OLD_UNOWN_K + NATIONAL_DEX_OLD_UNOWN_L, // HOENN_DEX_OLD_UNOWN_L + NATIONAL_DEX_OLD_UNOWN_M, // HOENN_DEX_OLD_UNOWN_M + NATIONAL_DEX_OLD_UNOWN_N, // HOENN_DEX_OLD_UNOWN_N + NATIONAL_DEX_OLD_UNOWN_O, // HOENN_DEX_OLD_UNOWN_O + NATIONAL_DEX_OLD_UNOWN_P, // HOENN_DEX_OLD_UNOWN_P + NATIONAL_DEX_OLD_UNOWN_Q, // HOENN_DEX_OLD_UNOWN_Q + NATIONAL_DEX_OLD_UNOWN_R, // HOENN_DEX_OLD_UNOWN_R + NATIONAL_DEX_OLD_UNOWN_S, // HOENN_DEX_OLD_UNOWN_S + NATIONAL_DEX_OLD_UNOWN_T, // HOENN_DEX_OLD_UNOWN_T + NATIONAL_DEX_OLD_UNOWN_U, // HOENN_DEX_OLD_UNOWN_U + NATIONAL_DEX_OLD_UNOWN_V, // HOENN_DEX_OLD_UNOWN_V + NATIONAL_DEX_OLD_UNOWN_W, // HOENN_DEX_OLD_UNOWN_W + NATIONAL_DEX_OLD_UNOWN_X, // HOENN_DEX_OLD_UNOWN_X + NATIONAL_DEX_OLD_UNOWN_Y, // HOENN_DEX_OLD_UNOWN_Y + NATIONAL_DEX_OLD_UNOWN_Z // HOENN_DEX_OLD_UNOWN_Z +}; const struct SpindaSpot gSpindaSpotGraphics[] = { @@ -1575,8 +2819,8 @@ void sub_8068338(struct Pokemon *mon, struct UnknownPokemonStruct *src, bool8 lv u8 language; u8 value; - if (gSaveBlock2Ptr->frontier.chosenLvl != 0) - level = BattleFrontierGetOpponentLvl(gSaveBlock2Ptr->frontier.chosenLvl); + if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_50) + level = GetFrontierEnemyMonLevel(gSaveBlock2Ptr->frontier.lvlMode); else if (lvl50) level = 50; else @@ -1640,7 +2884,7 @@ void sub_8068528(struct Pokemon *mon, const struct UnknownPokemonStruct2 *src, u CreateMon(mon, src->mons[monId].species, - BattleFrontierGetOpponentLvl(src->field_0_1 - 1), + GetFrontierEnemyMonLevel(src->field_0_1 - 1), 0x1F, TRUE, personality, @@ -2089,7 +3333,7 @@ void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon) s32 level = GetLevelFromBoxMonExp(boxMon); s32 i; - for (i = 0; gLevelUpLearnsets[species][i] != (u16)-1; i++) + for (i = 0; gLevelUpLearnsets[species][i] != LEVEL_UP_END; i++) { u16 moveLevel; u16 move; @@ -2101,7 +3345,7 @@ void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon) move = (gLevelUpLearnsets[species][i] & 0x1FF); - if (GiveMoveToBoxMon(boxMon, move) == (u16)-1) + if (GiveMoveToBoxMon(boxMon, move) == 0xFFFF) DeleteFirstMoveAndGiveMoveToBoxMon(boxMon, move); } } @@ -2123,7 +3367,7 @@ u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove) while ((gLevelUpLearnsets[species][sLearningMoveTableID] & 0xFE00) != (level << 9)) { sLearningMoveTableID++; - if (gLevelUpLearnsets[species][sLearningMoveTableID] == 0xFFFF) + if (gLevelUpLearnsets[species][sLearningMoveTableID] == LEVEL_UP_END) return 0; } } @@ -2868,7 +4112,7 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data) { retVal = 0; - while (retVal < OT_NAME_LENGTH) + while (retVal < PLAYER_NAME_LENGTH) { data[retVal] = boxMon->otName[retVal]; retVal++; @@ -3236,7 +4480,7 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg) case MON_DATA_OT_NAME: { s32 i; - for (i = 0; i < OT_NAME_LENGTH; i++) + for (i = 0; i < PLAYER_NAME_LENGTH; i++) boxMon->otName[i] = data[i]; break; } @@ -5534,7 +6778,7 @@ s8 GetFlavorRelationByPersonality(u32 personality, u8 flavor) bool8 IsTradedMon(struct Pokemon *mon) { - u8 otName[OT_NAME_LENGTH + 1]; + u8 otName[PLAYER_NAME_LENGTH + 1]; u32 otId; GetMonData(mon, MON_DATA_OT_NAME, otName); otId = GetMonData(mon, MON_DATA_OT_ID, 0); @@ -5723,7 +6967,7 @@ static void Task_PokemonSummaryAnimateAfterDelay(u8 taskId) if (--gTasks[taskId].data[3] == 0) { StartMonSummaryAnimation(READ_PTR_FROM_TASK(taskId, 0), gTasks[taskId].data[2]); - sub_81C488C(0xFF); + SummaryScreen_SetUnknownTaskId(0xFF); DestroyTask(taskId); } } @@ -5790,7 +7034,7 @@ void PokemonSummaryDoMonAnimation(struct Sprite* sprite, u16 species, bool8 oneF STORE_PTR_IN_TASK(sprite, taskId, 0); gTasks[taskId].data[2] = sMonFrontAnimIdsTable[species - 1]; gTasks[taskId].data[3] = sMonAnimationDelayTable[species - 1]; - sub_81C488C(taskId); + SummaryScreen_SetUnknownTaskId(taskId); SetSpriteCB_MonAnimDummy(sprite); } else @@ -5874,9 +7118,9 @@ u16 FacilityClassToPicIndex(u16 facilityClass) u16 PlayerGenderToFrontTrainerPicId(u8 playerGender) { if (playerGender != MALE) - return FacilityClassToPicIndex(FACILITY_CLASS_PKMN_TRAINER_BRENDAN); - else return FacilityClassToPicIndex(FACILITY_CLASS_PKMN_TRAINER_MAY); + else + return FacilityClassToPicIndex(FACILITY_CLASS_PKMN_TRAINER_BRENDAN); } void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality) diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c index c50aa4a75..9c307f7f8 100644 --- a/src/pokemon_animation.c +++ b/src/pokemon_animation.c @@ -938,14 +938,14 @@ void StartMonSummaryAnimation(struct Sprite *sprite, u8 frontAnimId) void LaunchAnimationTaskForBackSprite(struct Sprite *sprite, u8 backAnimSet) { - u8 nature, taskId, animId, bank; + u8 nature, taskId, animId, battlerId; taskId = CreateTask(Task_HandleMonAnimation, 128); gTasks[taskId].tPtrLO = (u32)(sprite) >> 0x10; gTasks[taskId].tPtrHI = (u32)(sprite); - bank = sprite->data[0]; - nature = GetNature(&gPlayerParty[gBattlerPartyIndexes[bank]]); + battlerId = sprite->data[0]; + nature = GetNature(&gPlayerParty[gBattlerPartyIndexes[battlerId]]); animId = 3 * backAnimSet + sBackAnimNatureModTable[nature]; gTasks[taskId].tAnimId = sBackAnimationIds[animId]; diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index 7f8c24ab7..7c622c223 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -7,17 +7,49 @@ #include "text.h" #include "strings.h" #include "window.h" +#include "menu.h" +#include "bg.h" +#include "main.h" +#include "palette.h" +#include "overworld.h" +#include "field_screen.h" +#include "field_weather.h" +#include "script.h" +#include "international_string_util.h" +#include "walda_phrase.h" +#include "sound.h" +#include "gpu_regs.h" +#include "constants/songs.h" IWRAM_DATA u8 gUnknown_03000F78[0x188]; -struct OptionAndDescription -{ - const u8 *optionTxt; - const u8 *descriptionTxt; -}; +extern const u8 gText_PartyFull[]; +extern const u8 gText_Box[]; +extern const u8 gText_JustOnePkmn[]; + +extern u8 gUnknown_02039D00; + +// This file's functions. +void StorageSystemCreatePrimaryMenu(u8 whichMenu, s16 *windowIdPtr); +void sub_80C7D74(u8); +u8 sub_80CAEA0(void); +void SetBoxWallpaper(u8 boxId, u8 wallpaperId); +void SetCurrentBox(u8 boxId); +void ClearMonInBox(u8 boxId, u8 boxPos); +void ResetWaldaWallpaper(void); +void sub_80C7958(u8 curBox); +void sub_80C7B14(void); +void sub_80C7BB4(void); +void sub_80CA028(void); +void sub_80C7B80(void); +void sub_80D2AA4(void); +void sub_80C7BE4(void); +void sub_80CAA14(void); +void sub_80C7CF4(struct Sprite *sprite); +struct Sprite *sub_80CD2E8(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority); // const rom data -const struct OptionAndDescription gUnknown_085716C0[] = +const struct PSS_MenuStringPtrs gUnknown_085716C0[] = { {gText_WithdrawPokemon, gText_WithdrawMonDescription}, {gText_DepositPokemon, gText_DepositMonDescription}, @@ -74,6 +106,10 @@ static const union AffineAnimCmd *const sSpriteAffineAnimTable_8571730[] = const u8 gUnknown_08571734[] = {4, 0xF, 0xE}; const u8 gUnknown_08571737[] = _("/30"); +const u16 gBoxSelectionPopupPalette[] = INCBIN_U16("graphics/unknown/unknown_57173C.gbapal"); +const u8 gBoxSelectionPopupCenterTiles[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_center.4bpp"); +const u8 gBoxSelectionPopupSidesTiles[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_sides.4bpp"); + // code u8 CountMonsInBox(u8 boxId) { @@ -166,24 +202,473 @@ static u8 *StringCopyAndFillWithSpaces(u8 *dst, const u8 *src, u16 n) return str; } -/* can't match -static void sub_80C7128(u16 *dst, u16 dstToAdd, u16 dstToMul, const u16 *src, u16 srcToAdd, u16 srcToMul, u32 size, u16 count, u16 srcBy) +static void sub_80C7128(u16 *dest, u16 dest_left, u16 dest_top, const u16 *src, u16 src_left, u16 src_top, u16 dest_width, u16 dest_height, u16 src_width) +{ + u16 i; + + dest_width *= 2; + dest += dest_top * 0x20 + dest_left; + src += src_top * src_width + src_left; + for (i = 0; i < dest_height; i++) + { + CpuCopy16(src, dest, dest_width); + dest += 0x20; + src += src_width; + } +} + +#define MAX_DMA_BLOCK_SIZE 0x1000 +#define Dma3FillLarge_(value, dest, size, bit) \ +{ \ + void *_dest = dest; \ + u32 _size = size; \ + while (1) \ + { \ + if (_size <= MAX_DMA_BLOCK_SIZE) \ + { \ + DmaFill##bit(3, value, _dest, _size); \ + break; \ + } \ + DmaFill##bit(3, value, _dest, MAX_DMA_BLOCK_SIZE); \ + _dest += MAX_DMA_BLOCK_SIZE; \ + _size -= MAX_DMA_BLOCK_SIZE; \ + } \ +} + +#define Dma3FillLarge16_(value, dest, size) Dma3FillLarge_(value, dest, size, 16) +#define Dma3FillLarge32_(value, dest, size) Dma3FillLarge_(value, dest, size, 32) + +void sub_80C71A4(u16 *dest, u16 dest_left, u16 dest_top, u16 width, u16 height) +{ + u16 i; + + dest += dest_top * 0x20 + dest_left; + width *= 2; + for (i = 0; i < height; dest += 0x20, i++) + Dma3FillLarge16_(0, dest, width); +} + +void Task_PokemonStorageSystem(u8 taskId) +{ + struct Task *task = gTasks + taskId; + switch (task->data[0]) + { + case 0: + StorageSystemCreatePrimaryMenu(task->data[1], &task->data[15]); + sub_81973A4(); + NewMenuHelpers_DrawDialogueFrame(0, 0); + FillWindowPixelBuffer(0, 0x11); + AddTextPrinterParameterized(0, 1, gUnknown_085716C0[task->data[1]].desc, TEXT_SPEED_FF, NULL, 2, 1, 3); + CopyWindowToVram(0, 3); + CopyWindowToVram(task->data[15], 3); + task->data[0]++; + break; + case 1: + if (IsWeatherNotFadingIn()) + { + task->data[0]++; + } + break; + case 2: + task->data[2] = ProcessMenuInput(); + switch(task->data[2]) + { + case -2: + task->data[3] = task->data[1]; + if (gMain.newKeys & DPAD_UP && --task->data[3] < 0) + task->data[3] = 4; + + if (gMain.newKeys & DPAD_DOWN && ++task->data[3] > 4) + task->data[3] = 0; + if (task->data[1] != task->data[3]) + { + task->data[1] = task->data[3]; + FillWindowPixelBuffer(0, 0x11); + AddTextPrinterParameterized(0, 1, gUnknown_085716C0[task->data[1]].desc, 0, NULL, 2, 1, 3); + } + break; + case -1: + case 4: + sub_819746C(task->data[15], TRUE); + ScriptContext2_Disable(); + EnableBothScriptContexts(); + RemoveWindow(task->data[15]); + DestroyTask(taskId); + break; + default: + if (task->data[2] == 0 && CountPartyMons() == PARTY_SIZE) + { + FillWindowPixelBuffer(0, 0x11); + AddTextPrinterParameterized(0, 1, gText_PartyFull, 0, NULL, 2, 1, 3); + task->data[0] = 3; + } + else if (task->data[2] == 1 && CountPartyMons() == 1) + { + FillWindowPixelBuffer(0, 0x11); + AddTextPrinterParameterized(0, 1, gText_JustOnePkmn, 0, NULL, 2, 1, 3); + task->data[0] = 3; + } + else + { + FadeScreen(1, 0); + task->data[0] = 4; + } + break; + } + break; + case 3: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + FillWindowPixelBuffer(0, 0x11); + AddTextPrinterParameterized(0, 1, gUnknown_085716C0[task->data[1]].desc, 0, NULL, 2, 1, 3); + task->data[0] = 2; + } + else if (gMain.newKeys & DPAD_UP) + { + if (--task->data[1] < 0) + task->data[1] = 4; + MoveMenuCursor(-1); + task->data[1] = GetMenuCursorPos(); + FillWindowPixelBuffer(0, 0x11); + AddTextPrinterParameterized(0, 1, gUnknown_085716C0[task->data[1]].desc, 0, NULL, 2, 1, 3); + task->data[0] = 2; + } + else if (gMain.newKeys & DPAD_DOWN) + { + if (++task->data[1] > 3) + task->data[1] = 0; + MoveMenuCursor(1); + task->data[1] = GetMenuCursorPos(); + FillWindowPixelBuffer(0, 0x11); + AddTextPrinterParameterized(0, 1, gUnknown_085716C0[task->data[1]].desc, 0, NULL, 2, 1, 3); + task->data[0] = 2; + } + break; + case 4: + if (!gPaletteFade.active) + { + overworld_free_bg_tilemaps(); + sub_80C7D74(task->data[2]); + RemoveWindow(task->data[15]); + DestroyTask(taskId); + } + break; + } +} + +void ShowPokemonStorageSystem(void) +{ + u8 taskId = CreateTask(Task_PokemonStorageSystem, 80); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + ScriptContext2_Enable(); +} + +void mapldr_0808C6D8(void) +{ + u8 taskId; + MainCallback vblankCb = gMain.vblankCallback; + + SetVBlankCallback(NULL); + taskId = CreateTask(Task_PokemonStorageSystem, 80); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = gUnknown_02039D00; + Task_PokemonStorageSystem(taskId); + SetVBlankCallback(vblankCb); + pal_fill_black(); +} + +void StorageSystemCreatePrimaryMenu(u8 whichMenu, s16 *windowIdPtr) +{ + s16 windowId; + struct WindowTemplate winTemplate = gUnknown_085716E8; + winTemplate.width = GetMaxWidthInMenuTable((void *)gUnknown_085716C0, ARRAY_COUNT(gUnknown_085716C0)); + windowId = AddWindow(&winTemplate); + + NewMenuHelpers_DrawStdWindowFrame(windowId, FALSE); + PrintMenuTable(windowId, ARRAY_COUNT(gUnknown_085716C0), (void *)gUnknown_085716C0); + InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, ARRAY_COUNT(gUnknown_085716C0), whichMenu); + *windowIdPtr = windowId; +} + +void sub_80C7678(void) +{ + gUnknown_02039D00 = sub_80CAEA0(); + gFieldCallback = mapldr_0808C6D8; + SetMainCallback2(CB2_ReturnToField); +} + +s16 StorageSystemGetNextMonIndex(struct BoxPokemon *box, s8 startIdx, u8 stopIdx, u8 mode) +{ + s16 i; + s16 direction; + if (mode == 0 || mode == 1) + { + direction = 1; + } + else + { + direction = -1; + } + if (mode == 1 || mode == 3) + { + for (i = startIdx + direction; i >= 0 && i <= stopIdx; i += direction) + { + if (GetBoxMonData(box + i, MON_DATA_SPECIES) != 0) + return i; + } + } + else + { + for (i = startIdx + direction; i >= 0 && i <= stopIdx; i += direction) + { + if (GetBoxMonData(box + i, MON_DATA_SPECIES) != 0 && !GetBoxMonData(box + i, MON_DATA_IS_EGG)) + return i; + } + } + return -1; +} + +void ResetPokemonStorageSystem(void) +{ + u16 boxId; + u16 boxMon; + + SetCurrentBox(0); + for (boxId = 0; boxId < TOTAL_BOXES_COUNT; boxId++) + { + for (boxMon = 0; boxMon < IN_BOX_COUNT; boxMon++) + ClearMonInBox(boxId, boxMon); + } + for (boxId = 0; boxId < TOTAL_BOXES_COUNT; boxId++) + { + u8 *dest = StringCopy(GetBoxNamePtr(boxId), gText_Box); + ConvertIntToDecimalStringN(dest, boxId + 1, STR_CONV_MODE_LEFT_ALIGN, 2); + } + for (boxId = 0; boxId < TOTAL_BOXES_COUNT; boxId++) + { + SetBoxWallpaper(boxId, boxId % 4); + } + ResetWaldaWallpaper(); +} + +void sub_80C77E8(struct UnkPSSStruct_2002370 *a0, u16 tileTag, u16 palTag, u8 a3, bool32 loadPal) +{ + struct SpritePalette palette = + { + gBoxSelectionPopupPalette, palTag + }; + struct SpriteSheet sheets[] = + { + {gBoxSelectionPopupCenterTiles, 0x800, tileTag}, + {gBoxSelectionPopupSidesTiles, 0x180, tileTag + 1}, + {} + }; + + if (loadPal) + LoadSpritePalette(&palette); + + LoadSpriteSheets(sheets); + gUnknown_02039D04 = a0; + a0->unk_0240 = tileTag; + a0->unk_0242 = palTag; + a0->unk_0246 = a3; + a0->unk_023c = loadPal; +} + +void sub_80C7890(void) +{ + if (gUnknown_02039D04->unk_023c) + FreeSpritePaletteByTag(gUnknown_02039D04->unk_0242); + FreeSpriteTilesByTag(gUnknown_02039D04->unk_0240); + FreeSpriteTilesByTag(gUnknown_02039D04->unk_0240 + 1); +} + +void sub_80C78D4(u8 curBox) +{ + sub_80C7958(curBox); +} + +void sub_80C78E4(void) +{ + sub_80C7B14(); +} + +u8 sub_80C78F0(void) +{ + if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + return 201; + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + return gUnknown_02039D04->curBox; + } + if (gMain.newKeys & DPAD_LEFT) + { + PlaySE(SE_SELECT); + sub_80C7BB4(); + } + else if (gMain.newKeys & DPAD_RIGHT) + { + PlaySE(SE_SELECT); + sub_80C7B80(); + } + return 200; +} + +void sub_80C7958(u8 curBox) { u16 i; + u8 spriteId; + struct SpriteTemplate template; + struct OamData oamData = {}; + oamData.size = 3; + oamData.paletteNum = 1; + template = (struct SpriteTemplate){ + 0, 0, &oamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + }; + + gUnknown_02039D04->curBox = curBox; + template.tileTag = gUnknown_02039D04->unk_0240; + template.paletteTag = gUnknown_02039D04->unk_0242; + + spriteId = CreateSprite(&template, 0xA0, 0x60, 0); + gUnknown_02039D04->unk_0000 = gSprites + spriteId; + + oamData.shape = ST_OAM_V_RECTANGLE; + oamData.size = 1; + template.tileTag = gUnknown_02039D04->unk_0240 + 1; + template.anims = sSpriteAnimTable_8571710; + for (i = 0; i < 4; i++) + { + u16 r5; + spriteId = CreateSprite(&template, 0x7c, 0x50, gUnknown_02039D04->unk_0246); + gUnknown_02039D04->unk_0004[i] = gSprites + spriteId; + r5 = 0; + if (i & 2) + { + gUnknown_02039D04->unk_0004[i]->pos1.x = 0xc4; + r5 = 2; + } + if (i & 1) + { + gUnknown_02039D04->unk_0004[i]->pos1.y = 0x70; + gUnknown_02039D04->unk_0004[i]->oam.size = 0; + r5++; + } + StartSpriteAnim(gUnknown_02039D04->unk_0004[i], r5); + } + for (i = 0; i < 2; i++) + { + gUnknown_02039D04->unk_0020[i] = sub_80CD2E8(72 * i + 0x7c, 0x58, i, 0, gUnknown_02039D04->unk_0246); + if (gUnknown_02039D04->unk_0020[i]) + { + gUnknown_02039D04->unk_0020[i]->data[0] = (i == 0 ? -1 : 1); + gUnknown_02039D04->unk_0020[i]->callback = sub_80C7CF4; + } + } + sub_80C7BE4(); +} + +void sub_80C7B14(void) +{ + u16 i; + if (gUnknown_02039D04->unk_0000) + { + DestroySprite(gUnknown_02039D04->unk_0000); + gUnknown_02039D04->unk_0000 = NULL; + } + for (i = 0; i < 4; i++) + { + if (gUnknown_02039D04->unk_0004[i]) + { + DestroySprite(gUnknown_02039D04->unk_0004[i]); + gUnknown_02039D04->unk_0004[i] = NULL; + } + } + for (i = 0; i < 2; i++) + { + if (gUnknown_02039D04->unk_0020[i]) + DestroySprite(gUnknown_02039D04->unk_0020[i]); + } +} - size <<= 0x11; - dst += (dstToMul * 32) + dstToAdd; - src += (srcToMul * srcBy) + srcToAdd; +void sub_80C7B80(void) +{ + if (++gUnknown_02039D04->curBox >= TOTAL_BOXES_COUNT) + gUnknown_02039D04->curBox = 0; + sub_80C7BE4(); +} + +void sub_80C7BB4(void) +{ + gUnknown_02039D04->curBox = (gUnknown_02039D04->curBox == 0 ? TOTAL_BOXES_COUNT - 1 : gUnknown_02039D04->curBox - 1); + sub_80C7BE4(); +} - i = 0; - if (i < count) +void sub_80C7BE4(void) +{ + u8 text[16]; + struct WindowTemplate winTemplate; + u8 windowId; + u8 *boxName = GetBoxNamePtr(gUnknown_02039D04->curBox); + u8 nPokemonInBox = CountMonsInBox(gUnknown_02039D04->curBox); + u32 winTileData; + s32 center; + + memset(&winTemplate, 0, sizeof(winTemplate)); + winTemplate.width = 8; + winTemplate.height = 4; + + windowId = AddWindow(&winTemplate); + FillWindowPixelBuffer(windowId, 0x44); + + center = GetStringCenterAlignXOffset(1, boxName, 0x40); + box_print(windowId, 1, center, 1, gUnknown_08571734, TEXT_SPEED_FF, boxName); + + ConvertIntToDecimalStringN(text, nPokemonInBox, 1, 2); + StringAppend(text, gUnknown_08571737); + center = GetStringCenterAlignXOffset(1, text, 0x40); + box_print(windowId, 1, center, 0x11, gUnknown_08571734, TEXT_SPEED_FF, text); + + winTileData = GetWindowAttribute(windowId, WINDOW_TILE_DATA); + CpuCopy32((void *)winTileData, (void *)OBJ_VRAM0 + 0x100 + (GetSpriteTileStartByTag(gUnknown_02039D04->unk_0240) * 32), 0x400); + + RemoveWindow(windowId); +} + +void sub_80C7CF4(struct Sprite *sprite) +{ + if (++sprite->data[1] > 3) { - size >>= 1; - for (i = 0; i < count; i++) + sprite->data[1] = 0; + sprite->pos2.x += sprite->data[0]; + if (++sprite->data[2] > 5) { - CpuSet(src, dst, size >> 0x10); - dst += 0x20; - src += srcBy; + sprite->data[2] = 0; + sprite->pos2.x = 0; } } -}*/ +} + +void sub_80C7D28(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + sub_80D2AA4(); + TransferPlttBuffer(); + SetGpuReg(REG_OFFSET_BG2HOFS, gUnknown_02039D08->bg2_X); +} + +void c2_Box(void) +{ + RunTasks(); + do_scheduled_bg_tilemap_copies_to_vram(); + sub_80CA028(); + sub_80CAA14(); + AnimateSprites(); + BuildOamBuffer(); +} diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 32d2bde4f..6b51c6e07 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -1,399 +1,1054 @@ #include "global.h" +#include "main.h" #include "battle.h" +#include "battle_anim.h" +#include "battle_frontier_2.h" +#include "battle_message.h" +#include "battle_tent.h" #include "bg.h" +#include "contest.h" +#include "contest_effect.h" +#include "data2.h" +#include "daycare.h" #include "decompress.h" +#include "dynamic_placeholder_text_util.h" +#include "event_data.h" +#include "gpu_regs.h" +#include "graphics.h" +#include "international_string_util.h" #include "item.h" -#include "constants/items.h" #include "link.h" #include "m4a.h" -#include "main.h" #include "malloc.h" -#include "constants/moves.h" +#include "menu.h" +#include "menu_helpers.h" +#include "mon_markings.h" +#include "party_menu.h" #include "palette.h" +#include "pokeball.h" #include "pokemon.h" -#include "constants/songs.h" +#include "pokemon_storage_system.h" +#include "pokemon_summary_screen.h" +#include "region_map.h" +#include "scanline_effect.h" #include "sound.h" -#include "constants/species.h" #include "sprite.h" -#include "dynamic_placeholder_text_util.h" #include "string_util.h" +#include "strings.h" #include "task.h" #include "text.h" +#include "tv.h" #include "window.h" -#include "event_data.h" -#include "gpu_regs.h" -#include "menu.h" -#include "international_string_util.h" -#include "scanline_effect.h" -#include "menu_helpers.h" -#include "daycare.h" -#include "data2.h" -#include "contest.h" +#include "constants/items.h" +#include "constants/moves.h" +#include "constants/region_map_sections.h" +#include "constants/songs.h" +#include "constants/species.h" -extern struct UnkSummaryStruct* gUnknown_0203CF1C; -extern struct BgTemplate gUnknown_0861CBB4; -extern u8 gUnknown_0203CF20; -extern struct MusicPlayerInfo gMPlayInfo_BGM; -extern s8 gUnknown_0861CC1C[]; -extern u8 gUnknown_0203CF21; -extern struct UnkStruct_61CC04 gUnknown_0861CC04; -extern struct UnkStruct_61CC04 gUnknown_0861CC10; -extern struct UnkStruct_61CC04 gUnknown_0861CBEC; -extern struct UnkStruct_61CC04 gUnknown_0861CBF8; -extern u16 gSummaryScreenWindow_Tilemap[]; -extern struct ContestMove gContestMoves[]; -extern struct ContestEffect gContestEffects[]; -extern struct WindowTemplate gUnknown_0861CC24; -extern u8 gUnknown_0861CD2C[][3]; -extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; -extern u8 gText_MaleSymbol[]; -extern u8 gText_FemaleSymbol[]; -extern u8 gUnknown_0861CDD3[]; -extern void (*const gUnknown_0861CE54[])(); -extern void (*const gUnknown_0861CE64[])(u8 taskId); -extern struct WindowTemplate gUnknown_0861CCCC; -extern u8 gUnknown_0861CE74[]; -extern u8 gUnknown_0861CE7B[]; -extern struct WindowTemplate gUnknown_0861CCEC; -extern struct WindowTemplate gUnknown_0861CD14; -extern const u8 *const gContestEffectDescriptionPointers[]; -extern const u8 *const gMoveDescriptionPointers[]; - -void sub_81C488C(u8 a); -extern u8 sub_81221EC(); -extern u8 sub_81221AC(); -extern u8 gUnknown_08D9862C; -extern u8 gUnknown_08D98CC8; -extern u8 gUnknown_08D987FC; -extern u8 gUnknown_08D9898C; -extern u8 gUnknown_08D98B28; -extern u8 gUnknown_08D9853C; -extern u8 gUnknown_08D85620; -extern struct CompressedSpriteSheet gUnknown_0861CFBC; -extern struct CompressedSpriteSheet gUnknown_0861D074; -extern struct CompressedSpriteSheet gUnknown_0861D0F8; -extern struct CompressedSpritePalette gUnknown_0861D100; -extern struct CompressedSpritePalette gUnknown_0861D07C; -extern u8 gMoveTypes_Pal; -extern u8 gUnknown_08D97D0C; -extern void sub_81C1E20(u8 taskId); -extern u8 *GetMonNickname(struct Pokemon *mon, u8 *dest); -extern u16 SpeciesToPokedexNum(u16 species); -extern u8 gText_UnkCtrlF908Clear01[]; -extern u8 gText_LevelSymbol[]; -extern u8 gText_PkmnInfo[]; -extern u8 gText_PkmnSkills[]; -extern u8 gText_BattleMoves[]; -extern u8 gText_ContestMoves[]; -extern u8 gText_HMMovesCantBeForgotten2[]; -extern u8 gText_Cancel2[]; -extern u8 gText_Info[]; -extern u8 gText_Switch[]; -extern u8 gText_RentalPkmn[]; -extern u8 gText_TypeSlash[]; -extern u8 gText_HP4[]; -extern u8 gText_Attack3[]; -extern u8 gText_Defense3[]; -extern u8 gText_SpAtk4[]; -extern u8 gText_SpDef4[]; -extern u8 gText_Speed2[]; -extern u8 gText_ExpPoints[]; -extern u8 gText_NextLv[]; -extern u8 gText_Status[]; -extern u8 gText_Power[]; -extern u8 gText_Accuracy2[]; -extern u8 gText_Appeal[]; -extern u8 gText_Jam[]; -extern u8 gText_OTSlash[]; -extern u8 gText_UnkCtrlF907F908[]; -extern u8 gText_XNature[]; -extern u8 gText_XNatureHatchedAtYZ[]; -extern u8 gText_XNatureHatchedSomewhereAt[]; -extern u8 gText_XNatureMetAtYZ[]; -extern u8 gText_XNatureMetSomewhereAt[]; -extern u8 gText_XNatureFatefulEncounter[]; -extern u8 gText_XNatureProbablyMetAt[]; -extern u8 gText_XNatureObtainedInTrade[]; -extern u8 *gNatureNamePointers[]; -extern u8 gText_EmptyString5[]; -extern u32 gBattleTypeFlags; -extern u8 gText_FiveMarks[]; -extern u8 gText_EggWillTakeALongTime[]; -extern u8 gText_EggAboutToHatch[]; -extern u8 gText_EggWillHatchSoon[]; -extern u8 gText_EggWillTakeSomeTime[]; -extern u8 gText_PeculiarEggNicePlace[]; -extern u8 gText_PeculiarEggTrade[]; -extern u8 gText_EggFromTraveler[]; -extern u8 gText_EggFromHotSprings[]; -extern u8 gText_OddEggFoundByCouple[]; -extern u8 gText_None[]; -extern u8 gText_RibbonsVar1[]; -extern u8 gUnknown_0861CE82[]; -extern u8 gUnknown_0861CE8E[]; -extern u8 gText_OneDash[]; -extern u8 gText_TwoDashes[]; -extern u8 gText_ThreeDashes[]; -extern u8 gText_Cancel[]; -extern u8 gUnknown_0861CE97[]; -extern const struct SpriteTemplate gUnknown_0861CFC4; - -extern void sub_8199C30(u8 a, u8 b, u8 c, u8 d, u8 e, u8 f); -extern bool8 sub_81A6BF4(); -extern bool8 sub_81B9E94(); -extern void DynamicPlaceholderTextUtil_Reset(); -extern void sub_8124610(u8 *a, u8 b); -extern int GetPlayerIDAsU32(); -extern u8 GetCurrentPpToMaxPpState(u8 a, u8 b); - -void sub_81BFAE4(void); -void sub_81BFE24(); -u8 sub_81BFEB0(); -void sub_81C2554(); -void sub_81C1BA0(); -void sub_81C0098(struct Pokemon* a); -bool8 sub_81C00F0(struct Pokemon* a); -void sub_81C25E8(); -void sub_81C286C(); -void sub_81C2D9C(u8 a); -void sub_81C0348(); -void sub_81C2AFC(u8 a); -void sub_81C4190(); -void sub_81C42C8(); -u8 sub_81C45F4(void* a, u16* b); -void sub_81C4984(); -void sub_81C4A08(); -void sub_81C4A88(); -void sub_81C4280(); -void sub_81C43A0(); -void sub_81C4484(); -void sub_81C4420(); -void sub_81C0510(u8 taskId); -void sub_81C171C(u8 taskId); -void ResetAllBgsCoordinates(); -u8 sub_81B205C(struct Pokemon* a); -void sub_81C1DA4(u16 a, s16 b); -void sub_81C1EFC(u16 a, s16 b, u16 c); -void sub_81C240C(u16 a); -void sub_81C2194(u16 *a, u16 b, u8 c); -void sub_81C2074(u16 a, s16 b); -void sub_81C2524(); -void sub_81C2228(struct Pokemon* mon); -void sub_81C0484(u8 taskId); -void sub_81C4898(); -void sub_806F47C(u8 a); -u8 GetLRKeysState(); -void sub_81C0604(u8 taskId, s8 a); -void sub_81C0A8C(u8 taskId, s8 a); -void sub_81C48F0(); -void sub_81C0E48(u8 taskId); -void sub_81C0704(u8 taskId); -s8 sub_81C09B4(s8 a); -s8 sub_81C08F8(s8 a); -void sub_81C4204(u8 a, u8 b); -void sub_81C20F0(u8 taskId); -bool8 sub_81C0A50(struct Pokemon* mon); -void sub_81C49E0(); -void sub_81C0E24(); -void sub_81C2C38(u8 a); -void sub_81C0B8C(u8 taskId); -void sub_81C0CC4(u8 taskId); -void sub_81C2DE4(u8 a); -void sub_81C424C(); -void sub_81C0C68(u8 taskId); -void sub_81C0D44(u8 taskId); -void sub_81C22CC(struct Pokemon* mon); -void sub_81C0F44(u8 taskId); -void sub_81C3E9C(u16 a); -void sub_81C3F44(); -void sub_81C44F0(); -void sub_81C4AF8(u8 a); -void sub_81C1070(s16* a, s8 b, u8* c); -void sub_81C11F4(u8 a); -void sub_81C129C(u8 a); -bool8 sub_81C1040(); -void sub_81C4064(); -void sub_81C4C60(u8 a); -void sub_81C12E4(u8 taskId); -void sub_81C4C84(u8 a); -void sub_81C13B0(u8 a, u8 b); -void sub_81C14BC(struct Pokemon *mon, u8 a, u8 b); -void sub_81C15EC(struct BoxPokemon *mon, u8 a, u8 b); -void sub_81C40A0(u8 a, u8 b); -void sub_81C4568(u8 a, u8 b); -void sub_81C174C(u8 taskId); -bool8 sub_81C18A8(); -void sub_81C18F4(u8 a); -u8 sub_81B6D14(u16 a); -void sub_81C1940(u8 taskId); -void sub_81C4154(); -void sub_81C1F80(u8 taskId); -void sub_81C2628(); -void sub_81C2794(); -void sub_81C27DC(struct Pokemon *mon, u16 a); -void sub_81C2D68(u8 a); -void sub_81C335C(); -void sub_81C33CC(); -void sub_81C3428(); -void sub_81C349C(); -void sub_81C2EC4(); -void sub_81C2F5C(); -void sub_81C2FD8(); -void sub_81C302C(); -void sub_81C307C(); -void sub_81C3194(); -void sub_81C31C0(); -bool8 sub_81C3304(); -void sub_81C31F0(u8 *a); -u8 sub_81C3220(); -bool8 sub_81C32BC(); -void sub_81C35E4(); -void sub_81C3690(); -void sub_81C3710(); -void sub_81C37D8(); -void sub_81C3808(); -void sub_81C3890(); -void sub_81C38C0(); -void sub_81C3B08(u8 a); -void sub_81C3E2C(u8 a); -void sub_81C4D18(); - -void SetBgAttribute(u8 bg, u8 attributeId, u8 value); - -bool8 sub_81BFB10(); -u8 sub_81B1250(); - -union UnkUnion -{ - struct Pokemon mon[6]; - struct BoxPokemon boxMon[6]; -}; - - -u8 sub_80D214C(union UnkUnion* a, u8 b, u8 c, u8 d); - -struct PokeSummary -{ - u16 species; // 0x0 - u16 species2; // 0x2 - u8 isEgg; // 0x4 - u8 level; // 0x5 - u8 ribbons; // 0x6 - u8 unk7; // 0x7 - u8 altAbility; // 0x8 - u8 metLocation; // 0x9 - u8 metLevel; // 0xA - u8 metGame; // 0xB - u32 pid; // 0xC - u32 exp; // 0x10 - u16 moves[4]; // 0x14 - u8 pp[4]; // 0x1C - u16 currentHP; // 0x20 - u16 maxHP; // 0x22 - u16 atk; // 0x24 - u16 def; // 0x26 - u16 spatk; // 0x28 - u16 spdef; // 0x2A - u16 speed; // 0x2C - u16 item; // 0x2E - u16 friendship; // 0x30 - u8 OTGender; // 0x32 - u8 nature; // 0x33 - u8 ppBonuses; // 0x34 - u8 sanity; // 0x35 - u8 OTName[8]; // 0x36 - u8 unk3E[9]; // 0x3E - u32 OTID; // 0x48 -}; - -struct UnkSummaryStruct -{ - /*0x00*/ union UnkUnion *unk0; - /*0x04*/ void *unk4; - /*0x08*/ void *unk8; +static EWRAM_DATA struct UnkSummaryStruct +{ + /*0x00*/ union { + struct Pokemon *mons; + struct BoxPokemon *boxMons; + } monList; + /*0x04*/ MainCallback callback; + /*0x08*/ struct Sprite *markingsSprite; /*0x0C*/ struct Pokemon currentMon; - /*0x70*/ struct PokeSummary summary; - u16 unkTilemap0[0x400]; - u16 unkTilemap0_1[0x400]; - u16 unkTilemap1[0x400]; - u16 unkTilemap1_1[0x400]; - u16 unkTilemap2[0x400]; - u16 unkTilemap2_1[0x400]; - u16 unkTilemap3[0x400]; - u16 unkTilemap3_1[0x400]; - u8 unk40BC; - u8 unk40BD; - u8 unk40BE; - u8 unk40BF; - u8 unk40C0; - u8 unk40C1; - u8 unk40C2; - u8 unk40C3; - u16 unk40C4; - u8 unk40C6; - u8 unk40C7; - u8 unk40C8; + /*0x70*/ struct PokeSummary + { + u16 species; // 0x0 + u16 species2; // 0x2 + u8 isEgg; // 0x4 + u8 level; // 0x5 + u8 ribbonCount; // 0x6 + u8 unk7; // 0x7 + u8 altAbility; // 0x8 + u8 metLocation; // 0x9 + u8 metLevel; // 0xA + u8 metGame; // 0xB + u32 pid; // 0xC + u32 exp; // 0x10 + u16 moves[4]; // 0x14 + u8 pp[4]; // 0x1C + u16 currentHP; // 0x20 + u16 maxHP; // 0x22 + u16 atk; // 0x24 + u16 def; // 0x26 + u16 spatk; // 0x28 + u16 spdef; // 0x2A + u16 speed; // 0x2C + u16 item; // 0x2E + u16 friendship; // 0x30 + u8 OTGender; // 0x32 + u8 nature; // 0x33 + u8 ppBonuses; // 0x34 + u8 sanity; // 0x35 + u8 OTName[8]; // 0x36 + u8 unk3E[9]; // 0x3E + u32 OTID; // 0x48 + } summary; + u16 bgTilemapBuffers[4][2][0x400]; + u8 mode; + bool8 isBoxMon; + u8 curMonIndex; + u8 maxMonIndex; + u8 currPageIndex; + u8 minPageIndex; + u8 maxPageIndex; + bool8 unk40C3; + u16 newMove; + u8 firstMoveIndex; + u8 secondMoveIndex; + bool8 unk40C8; u8 unk40C9; - u8 unk40CA; - u8 unk40CB[8]; - u8 unk40D3[0x1C]; - u8 unk40EF; + u8 filler40CA; + u8 windowIds[8]; + u8 spriteIds[28]; + bool8 unk40EF; s16 unk40F0; u8 unk_filler4[6]; +} *pssData = NULL; +EWRAM_DATA u8 gUnknown_0203CF20 = 0; +static EWRAM_DATA u8 gUnknown_0203CF21 = 0; +static EWRAM_DATA u8 gFiller_0203CF22[2] = {0}; +static EWRAM_DATA u8 sUnknownTaskId = 0; +static EWRAM_DATA u8 gFiller_0203CF25[3] = {0}; + +extern const struct CompressedSpriteSheet gMonFrontPicTable[]; + +struct UnkStruct_61CC04 +{ + const u16 *ptr; + u16 field_4; + u8 field_6; + u8 field_7; + u8 field_8; + u8 field_9; }; -void sub_81BF8EC(u8 a, void *b, u8 c, u8 d, void *e) +// forward declarations +bool8 sub_81B1250(void); +static bool8 SummaryScreen_LoadGraphics(void); +static void SummaryScreen_LoadingCB2(void); +static void InitBGs(void); +static bool8 SummaryScreen_DecompressGraphics(void); +static void CopyMonToSummaryStruct(struct Pokemon* a); +static bool8 ExtractMonDataToSummaryStruct(struct Pokemon* a); +static void sub_81C0348(void); +static void sub_81C0484(u8 taskId); +static void sub_81C0510(u8 taskId); +static void sub_81C0604(u8 taskId, s8 a); +static void sub_81C0704(u8 taskId); +static s8 sub_81C08F8(s8 a); +static s8 sub_81C09B4(s8 a); +static bool8 sub_81C0A50(struct Pokemon* mon); +static void sub_81C0A8C(u8 taskId, s8 a); +static void sub_81C0B8C(u8 taskId); +static void sub_81C0C68(u8 taskId); +static void sub_81C0CC4(u8 taskId); +static void sub_81C0D44(u8 taskId); +static void sub_81C0E24(void); +static void sub_81C0E48(u8 taskId); +static void sub_81C0F44(u8 taskId); +static bool8 sub_81C1040(void); +static void sub_81C1070(s16* a, s8 b, u8* c); +static void sub_81C11F4(u8 a); +static void sub_81C129C(u8 a); +static void sub_81C12E4(u8 taskId); +static void sub_81C13B0(u8 taskId, bool8 b); +static void SwapMonMoves(struct Pokemon *mon, u8 moveIndex1, u8 moveIndex2); +static void SwapBoxMonMoves(struct BoxPokemon *mon, u8 moveIndex1, u8 moveIndex2); +static void sub_81C171C(u8 taskId); +static void sub_81C174C(u8 taskId); +static bool8 sub_81C18A8(void); +static void sub_81C18F4(u8 a); +static void sub_81C1940(u8 taskId); +static void sub_81C1BA0(void); +static void sub_81C1DA4(u16 a, s16 b); +static void sub_81C1E20(u8 taskId); +static void sub_81C1EFC(u16 a, s16 b, u16 c); +static void sub_81C1F80(u8 taskId); +static void sub_81C2074(u16 a, s16 b); +static void sub_81C20F0(u8 taskId); +static void sub_81C2194(u16 *a, u16 b, u8 c); +static void sub_81C2228(struct Pokemon* mon); +static void DrawExperienceProgressBar(struct Pokemon* mon); +static void sub_81C240C(u16 a); +static void sub_81C2524(void); +static void sub_81C2554(void); +static void sub_81C25E8(void); +static void sub_81C2628(void); +static void sub_81C2794(void); +static void sub_81C27DC(struct Pokemon *mon, u16 a); +static void PrintPageNamesAndStatsPageToWindows(void); +static void sub_81C2AFC(u8 a); +static void sub_81C2C38(u8 a); +static void SummaryScreen_RemoveWindowByIndex(u8 a); +static void sub_81C2D9C(u8 a); +static void sub_81C2DE4(u8 a); +static void sub_81C2E00(void); +static void sub_81C2E40(u8 taskId); +static void PrintMonOTName(void); +static void PrintMonOTID(void); +static void PrintMonAbilityName(void); +static void PrintMonAbilityDescription(void); +static void BufferMonTrainerMemo(void); +static void PrintMonTrainerMemo(void); +static void BufferNatureString(void); +static void GetMetLevelString(u8 *a); +static bool8 DoesMonOTMatchOwner(void); +static bool8 DidMonComeFromGBAGames(void); +static bool8 IsInGamePartnerMon(void); +static void PrintEggOTName(void); +static void PrintEggOTID(void); +static void PrintEggState(void); +static void PrintEggMemo(void); +static void sub_81C3554(u8 taskId); +static void PrintHeldItemName(void); +static void sub_81C3530(void); +static void PrintRibbonCount(void); +static void BufferLeftColumnStats(void); +static void PrintLeftColumnStats(void); +static void BufferRightColumnStats(void); +static void PrintRightColumnStats(void); +static void PrintExpPointsNextLevel(void); +static void sub_81C3984(void); +static void sub_81C39F0(u8 taskId); +static void PrintMoveNameAndPP(u8 a); +static void sub_81C3D08(void); +static void sub_81C3D54(u8 taskId); +static void PrintContestMoveDescription(u8 a); +static void PrintMoveDetails(u16 a); +static void PrintNewMoveDetailsOrCancelText(void); +static void sub_81C4064(void); +static void sub_81C40A0(u8 a, u8 b); +static void PrintHMMovesCantBeForgotten(void); +static void sub_81C4190(void); +static void sub_81C4204(u8 a, u8 b); +static void sub_81C424C(void); +static void sub_81C4280(void); +static void sub_81C42C8(void); +static void sub_81C43A0(void); +static void sub_81C4420(void); +static void sub_81C4484(void); +static void sub_81C44F0(void); +static void sub_81C4568(u8 a, u8 b); +static u8 sub_81C45F4(struct Pokemon *a, s16 *b); +static u8 sub_81C47B4(struct Pokemon *unused); +static void sub_81C4844(struct Sprite *); +void SummaryScreen_SetUnknownTaskId(u8 a); +void SummaryScreen_DestroyUnknownTask(void); +static void sub_81C48F0(void); +static void CreateMonMarkingsSprite(struct Pokemon *mon); +static void RemoveAndCreateMonMarkingsSprite(struct Pokemon *mon); +static void CreateCaughtBallSprite(struct Pokemon *mon); +static void CreateSetStatusSprite(void); +static void sub_81C4AF8(u8 a); +static void sub_81C4BE4(struct Sprite *sprite); +static void sub_81C4C60(u8 a); +static void sub_81C4C84(u8 a); +static void sub_81C4D18(u8 a); + +// const rom data +#include "data/text/move_descriptions.h" +#include "data/text/nature_names.h" + +static const struct BgTemplate gUnknown_0861CBB4[] = +{ + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0, + }, + { + .bg = 1, + .charBaseIndex = 2, + .mapBaseIndex = 27, + .screenSize = 1, + .paletteMode = 0, + .priority = 1, + .baseTile = 0, + }, + { + .bg = 2, + .charBaseIndex = 2, + .mapBaseIndex = 25, + .screenSize = 1, + .paletteMode = 0, + .priority = 2, + .baseTile = 0, + }, + { + .bg = 3, + .charBaseIndex = 2, + .mapBaseIndex = 29, + .screenSize = 1, + .paletteMode = 0, + .priority = 3, + .baseTile = 0, + }, +}; + +static const u16 gUnknown_0861CBC4[] = INCBIN_U16("graphics/interface/unk_tilemap2.bin"); +static const struct UnkStruct_61CC04 gUnknown_0861CBEC = +{ + gUnknown_0861CBC4, 1, 10, 2, 0, 18 +}; +static const struct UnkStruct_61CC04 gUnknown_0861CBF8 = +{ + gUnknown_0861CBC4, 1, 10, 2, 0, 50 +}; +static const struct UnkStruct_61CC04 gUnknown_0861CC04 = { - u8 byte; - gUnknown_0203CF1C = AllocZeroed(sizeof(struct UnkSummaryStruct)); - gUnknown_0203CF1C->unk40BC = a; - gUnknown_0203CF1C->unk0 = b; - gUnknown_0203CF1C->unk40BE = c; - gUnknown_0203CF1C->unk40BF = d; - gUnknown_0203CF1C->unk4 = e; - if (a == 2) - gUnknown_0203CF1C->unk40BD = 1; + gSummaryScreenPowAcc_Tilemap, 0, 10, 7, 0, 45 +}; +static const struct UnkStruct_61CC04 gUnknown_0861CC10 = +{ + gUnknown_08DC3C34, 0, 10, 7, 0, 45 +}; +static const s8 gUnknown_0861CC1C[] = {0, 2, 3, 1, 4, 5}; +static const struct WindowTemplate gUnknown_0861CC24[] = +{ + { + .priority = 0, + .tilemapLeft = 0, + .tilemapTop = 0, + .width = 11, + .height = 2, + .paletteNum = 6, + .baseBlock = 1, + }, + { + .priority = 0, + .tilemapLeft = 0, + .tilemapTop = 0, + .width = 11, + .height = 2, + .paletteNum = 6, + .baseBlock = 23, + }, + { + .priority = 0, + .tilemapLeft = 0, + .tilemapTop = 0, + .width = 11, + .height = 2, + .paletteNum = 6, + .baseBlock = 45, + }, + { + .priority = 0, + .tilemapLeft = 0, + .tilemapTop = 0, + .width = 11, + .height = 2, + .paletteNum = 6, + .baseBlock = 67, + }, + { + .priority = 0, + .tilemapLeft = 22, + .tilemapTop = 0, + .width = 8, + .height = 2, + .paletteNum = 7, + .baseBlock = 89, + }, + { + .priority = 0, + .tilemapLeft = 22, + .tilemapTop = 0, + .width = 8, + .height = 2, + .paletteNum = 7, + .baseBlock = 105, + }, + { + .priority = 0, + .tilemapLeft = 22, + .tilemapTop = 0, + .width = 8, + .height = 2, + .paletteNum = 7, + .baseBlock = 121, + }, + { + .priority = 0, + .tilemapLeft = 11, + .tilemapTop = 4, + .width = 0, + .height = 2, + .paletteNum = 6, + .baseBlock = 137, + }, + { + .priority = 0, + .tilemapLeft = 11, + .tilemapTop = 4, + .width = 18, + .height = 2, + .paletteNum = 6, + .baseBlock = 137, + }, + { + .priority = 0, + .tilemapLeft = 11, + .tilemapTop = 6, + .width = 18, + .height = 2, + .paletteNum = 6, + .baseBlock = 173, + }, + { + .priority = 0, + .tilemapLeft = 10, + .tilemapTop = 7, + .width = 6, + .height = 6, + .paletteNum = 6, + .baseBlock = 209, + }, + { + .priority = 0, + .tilemapLeft = 22, + .tilemapTop = 7, + .width = 5, + .height = 6, + .paletteNum = 6, + .baseBlock = 245, + }, + { + .priority = 0, + .tilemapLeft = 10, + .tilemapTop = 14, + .width = 11, + .height = 4, + .paletteNum = 6, + .baseBlock = 275, + }, + { + .priority = 0, + .tilemapLeft = 0, + .tilemapTop = 18, + .width = 6, + .height = 2, + .paletteNum = 6, + .baseBlock = 319, + }, + { + .priority = 0, + .tilemapLeft = 1, + .tilemapTop = 15, + .width = 9, + .height = 4, + .paletteNum = 6, + .baseBlock = 331, + }, + { + .priority = 0, + .tilemapLeft = 1, + .tilemapTop = 15, + .width = 5, + .height = 4, + .paletteNum = 6, + .baseBlock = 367, + }, + { + .priority = 0, + .tilemapLeft = 22, + .tilemapTop = 4, + .width = 0, + .height = 2, + .paletteNum = 6, + .baseBlock = 387, + }, + { + .priority = 0, + .tilemapLeft = 1, + .tilemapTop = 2, + .width = 4, + .height = 2, + .paletteNum = 7, + .baseBlock = 387, + }, + { + .priority = 0, + .tilemapLeft = 1, + .tilemapTop = 12, + .width = 9, + .height = 2, + .paletteNum = 6, + .baseBlock = 395, + }, + { + .priority = 0, + .tilemapLeft = 1, + .tilemapTop = 14, + .width = 9, + .height = 4, + .paletteNum = 6, + .baseBlock = 413, + }, + DUMMY_WIN_TEMPLATE +}; +static const struct WindowTemplate gUnknown_0861CCCC[] = +{ + { + .priority = 0, + .tilemapLeft = 11, + .tilemapTop = 4, + .width = 11, + .height = 2, + .paletteNum = 6, + .baseBlock = 449, + }, + { + .priority = 0, + .tilemapLeft = 22, + .tilemapTop = 4, + .width = 7, + .height = 2, + .paletteNum = 6, + .baseBlock = 471, + }, + { + .priority = 0, + .tilemapLeft = 11, + .tilemapTop = 9, + .width = 18, + .height = 4, + .paletteNum = 6, + .baseBlock = 485, + }, + { + .priority = 0, + .tilemapLeft = 11, + .tilemapTop = 14, + .width = 18, + .height = 6, + .paletteNum = 6, + .baseBlock = 557, + }, +}; +static const struct WindowTemplate gUnknown_0861CCEC[] = +{ + { + .priority = 0, + .tilemapLeft = 10, + .tilemapTop = 4, + .width = 10, + .height = 2, + .paletteNum = 6, + .baseBlock = 449, + }, + { + .priority = 0, + .tilemapLeft = 20, + .tilemapTop = 4, + .width = 10, + .height = 2, + .paletteNum = 6, + .baseBlock = 469, + }, + { + .priority = 0, + .tilemapLeft = 16, + .tilemapTop = 7, + .width = 6, + .height = 6, + .paletteNum = 6, + .baseBlock = 489, + }, + { + .priority = 0, + .tilemapLeft = 27, + .tilemapTop = 7, + .width = 3, + .height = 6, + .paletteNum = 6, + .baseBlock = 525, + }, + { + .priority = 0, + .tilemapLeft = 24, + .tilemapTop = 14, + .width = 6, + .height = 4, + .paletteNum = 6, + .baseBlock = 543, + }, +}; +static const struct WindowTemplate gUnknown_0861CD14[] = +{ + { + .priority = 0, + .tilemapLeft = 15, + .tilemapTop = 4, + .width = 9, + .height = 10, + .paletteNum = 6, + .baseBlock = 449, + }, + { + .priority = 0, + .tilemapLeft = 24, + .tilemapTop = 4, + .width = 6, + .height = 10, + .paletteNum = 8, + .baseBlock = 539, + }, + { + .priority = 0, + .tilemapLeft = 10, + .tilemapTop = 15, + .width = 20, + .height = 4, + .paletteNum = 6, + .baseBlock = 599, + }, +}; +static const u8 sTextColors_861CD2C[][3] = +{ + {0, 1, 2}, + {0, 3, 4}, + {0, 5, 6}, + {0, 7, 8}, + {0, 9, 10}, + {0, 11, 12}, + {0, 13, 14}, + {0, 7, 8}, + {13, 15, 14}, + {0, 1, 2}, + {0, 3, 4}, + {0, 5, 6}, + {0, 7, 8} +}; +static const u8 gUnknown_0861CD53[] = INCBIN_U8("graphics/interface/summary_a_button.4bpp"); +static const u8 gUnknown_0861CDD3[] = INCBIN_U8("graphics/interface/summary_b_button.4bpp"); +static void (*const gUnknown_0861CE54[])(void) = +{ + sub_81C2E00, + sub_81C3530, + sub_81C3984, + sub_81C3D08 +}; +static void (*const gUnknown_0861CE64[])(u8 taskId) = +{ + sub_81C2E40, + sub_81C3554, + sub_81C39F0, + sub_81C3D54 +}; +static const u8 gUnknown_0861CE74[] = _("{COLOR LIGHT_RED}{SHADOW GREEN}"); +static const u8 gUnknown_0861CE7B[] = _("{COLOR WHITE}{SHADOW DARK_GREY}"); +static const u8 gUnknown_0861CE82[] = _("{SPECIAL_F7 0x00}/{SPECIAL_F7 0x01}\n{SPECIAL_F7 0x02}\n{SPECIAL_F7 0x03}"); +static const u8 gUnknown_0861CE8E[] = _("{SPECIAL_F7 0x00}\n{SPECIAL_F7 0x01}\n{SPECIAL_F7 0x02}"); +static const u8 gUnknown_0861CE97[] = _("{PP}{SPECIAL_F7 0x00}/{SPECIAL_F7 0x01}"); + +#define TAG_MOVE_TYPES 30002 + +static const struct OamData sOamData_MoveTypes = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; +static const union AnimCmd sSpriteAnim_TypeNormal[] = { + ANIMCMD_FRAME(TYPE_NORMAL * 8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_TypeFighting[] = { + ANIMCMD_FRAME(TYPE_FIGHTING * 8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_TypeFlying[] = { + ANIMCMD_FRAME(TYPE_FLYING * 8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_TypePoison[] = { + ANIMCMD_FRAME(TYPE_POISON * 8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_TypeGround[] = { + ANIMCMD_FRAME(TYPE_GROUND * 8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_TypeRock[] = { + ANIMCMD_FRAME(TYPE_ROCK * 8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_TypeBug[] = { + ANIMCMD_FRAME(TYPE_BUG * 8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_TypeGhost[] = { + ANIMCMD_FRAME(TYPE_GHOST * 8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_TypeSteel[] = { + ANIMCMD_FRAME(TYPE_STEEL * 8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_TypeMystery[] = { + ANIMCMD_FRAME(TYPE_MYSTERY * 8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_TypeFire[] = { + ANIMCMD_FRAME(TYPE_FIRE * 8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_TypeWater[] = { + ANIMCMD_FRAME(TYPE_WATER * 8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_TypeGrass[] = { + ANIMCMD_FRAME(TYPE_GRASS * 8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_TypeElectric[] = { + ANIMCMD_FRAME(TYPE_ELECTRIC * 8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_TypePsychic[] = { + ANIMCMD_FRAME(TYPE_PSYCHIC * 8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_TypeIce[] = { + ANIMCMD_FRAME(TYPE_ICE * 8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_TypeDragon[] = { + ANIMCMD_FRAME(TYPE_DRAGON * 8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_TypeDark[] = { + ANIMCMD_FRAME(TYPE_DARK * 8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_CategoryCool[] = { + ANIMCMD_FRAME((CONTEST_CATEGORY_COOL + NUMBER_OF_MON_TYPES) * 8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_CategoryBeauty[] = { + ANIMCMD_FRAME((CONTEST_CATEGORY_BEAUTY + NUMBER_OF_MON_TYPES) * 8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_CategoryCute[] = { + ANIMCMD_FRAME((CONTEST_CATEGORY_CUTE + NUMBER_OF_MON_TYPES) * 8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_CategorySmart[] = { + ANIMCMD_FRAME((CONTEST_CATEGORY_SMART + NUMBER_OF_MON_TYPES) * 8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_CategoryTough[] = { + ANIMCMD_FRAME((CONTEST_CATEGORY_TOUGH + NUMBER_OF_MON_TYPES) * 8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd *const sSpriteAnimTable_MoveTypes[NUMBER_OF_MON_TYPES + CONTEST_CATEGORIES_COUNT] = { + sSpriteAnim_TypeNormal, + sSpriteAnim_TypeFighting, + sSpriteAnim_TypeFlying, + sSpriteAnim_TypePoison, + sSpriteAnim_TypeGround, + sSpriteAnim_TypeRock, + sSpriteAnim_TypeBug, + sSpriteAnim_TypeGhost, + sSpriteAnim_TypeSteel, + sSpriteAnim_TypeMystery, + sSpriteAnim_TypeFire, + sSpriteAnim_TypeWater, + sSpriteAnim_TypeGrass, + sSpriteAnim_TypeElectric, + sSpriteAnim_TypePsychic, + sSpriteAnim_TypeIce, + sSpriteAnim_TypeDragon, + sSpriteAnim_TypeDark, + sSpriteAnim_CategoryCool, + sSpriteAnim_CategoryBeauty, + sSpriteAnim_CategoryCute, + sSpriteAnim_CategorySmart, + sSpriteAnim_CategoryTough, +}; + +static const struct CompressedSpriteSheet sSpriteSheet_MoveTypes = +{ + .data = gMoveTypes_Gfx, + .size = (NUMBER_OF_MON_TYPES + CONTEST_CATEGORIES_COUNT) * 0x100, + .tag = TAG_MOVE_TYPES +}; +static const struct SpriteTemplate sSpriteTemplate_MoveTypes = +{ + .tileTag = TAG_MOVE_TYPES, + .paletteTag = TAG_MOVE_TYPES, + .oam = &sOamData_MoveTypes, + .anims = sSpriteAnimTable_MoveTypes, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; +static const u8 sMoveTypeToOamPaletteNum[NUMBER_OF_MON_TYPES + CONTEST_CATEGORIES_COUNT] = +{ + [TYPE_NORMAL] = 13, + [TYPE_FIGHTING] = 13, + [TYPE_FLYING] = 14, + [TYPE_POISON] = 14, + [TYPE_GROUND] = 13, + [TYPE_ROCK] = 13, + [TYPE_BUG] = 15, + [TYPE_GHOST] = 14, + [TYPE_STEEL] = 13, + [TYPE_MYSTERY] = 15, + [TYPE_FIRE] = 13, + [TYPE_WATER] = 14, + [TYPE_GRASS] = 15, + [TYPE_ELECTRIC] = 13, + [TYPE_PSYCHIC] = 14, + [TYPE_ICE] = 14, + [TYPE_DRAGON] = 15, + [TYPE_DARK] = 13, + [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_COOL] = 13, + [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_BEAUTY] = 14, + [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_CUTE] = 14, + [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_SMART] = 15, + [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_TOUGH] = 13, +}; +static const struct OamData gOamData_861CFF4 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; +static const union AnimCmd gSpriteAnim_861CFFC[] = { + ANIMCMD_FRAME(0, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861D004[] = { + ANIMCMD_FRAME(4, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861D00C[] = { + ANIMCMD_FRAME(8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861D014[] = { + ANIMCMD_FRAME(12, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861D01C[] = { + ANIMCMD_FRAME(16, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861D024[] = { + ANIMCMD_FRAME(16, 0, TRUE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861D02C[] = { + ANIMCMD_FRAME(20, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861D034[] = { + ANIMCMD_FRAME(24, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861D03C[] = { + ANIMCMD_FRAME(24, 0, TRUE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd gSpriteAnim_861D044[] = { + ANIMCMD_FRAME(28, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd *const gSpriteAnimTable_861D04C[] = { + gSpriteAnim_861CFFC, + gSpriteAnim_861D004, + gSpriteAnim_861D00C, + gSpriteAnim_861D014, + gSpriteAnim_861D01C, + gSpriteAnim_861D024, + gSpriteAnim_861D02C, + gSpriteAnim_861D034, + gSpriteAnim_861D03C, + gSpriteAnim_861D044, +}; +static const struct CompressedSpriteSheet gUnknown_0861D074 = +{ + .data = gUnknown_08D97BEC, + .size = 0x400, + .tag = 30000 +}; +static const struct CompressedSpritePalette gUnknown_0861D07C = +{ + .data = gUnknown_08D97CF4, + .tag = 30000 +}; +static const struct SpriteTemplate gUnknown_0861D084 = +{ + .tileTag = 30000, + .paletteTag = 30000, + .oam = &gOamData_861CFF4, + .anims = gSpriteAnimTable_861D04C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; +static const struct OamData sOamData_StatusCondition = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 3, + .paletteNum = 0, + .affineParam = 0, +}; +static const union AnimCmd sSpriteAnim_StatusPoison[] = { + ANIMCMD_FRAME(0, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_StatusParalyzed[] = { + ANIMCMD_FRAME(4, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_StatusSleep[] = { + ANIMCMD_FRAME(8, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_StatusFrozen[] = { + ANIMCMD_FRAME(12, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_StatusBurn[] = { + ANIMCMD_FRAME(16, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_StatusPokerus[] = { + ANIMCMD_FRAME(20, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_StatusFaint[] = { + ANIMCMD_FRAME(24, 0, FALSE, FALSE), + ANIMCMD_END +}; +static const union AnimCmd *const sSpriteAnimTable_StatusCondition[] = { + sSpriteAnim_StatusPoison, + sSpriteAnim_StatusParalyzed, + sSpriteAnim_StatusSleep, + sSpriteAnim_StatusFrozen, + sSpriteAnim_StatusBurn, + sSpriteAnim_StatusPokerus, + sSpriteAnim_StatusFaint, +}; +static const struct CompressedSpriteSheet gUnknown_0861D0F8 = +{ + .data = gStatusGfx_Icons, + .size = 0x380, + .tag = 30001 +}; +static const struct CompressedSpritePalette gUnknown_0861D100 = +{ + .data = gStatusPal_Icons, + .tag = 30001 +}; +static const struct SpriteTemplate sSpriteTemplate_StatusCondition = +{ + .tileTag = 30001, + .paletteTag = 30001, + .oam = &sOamData_StatusCondition, + .anims = sSpriteAnimTable_StatusCondition, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; +static const u16 gUnknown_0861D120[] = INCBIN_U16("graphics/interface/summary_markings.gbapal"); + +// code +void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)) +{ + pssData = AllocZeroed(sizeof(*pssData)); + pssData->mode = mode; + pssData->monList.mons = mons; + pssData->curMonIndex = monIndex; + pssData->maxMonIndex = maxMonIndex; + pssData->callback = callback; + + if (mode == PSS_MODE_UNK2) + pssData->isBoxMon = TRUE; else - gUnknown_0203CF1C->unk40BD = 0; - switch (a) + pssData->isBoxMon = FALSE; + + switch (mode) { - case 0: - case 2: - gUnknown_0203CF1C->unk40C1 = 0; - gUnknown_0203CF1C->unk40C2 = 3; + case PSS_MODE_NORMAL: + case PSS_MODE_UNK2: + pssData->minPageIndex = 0; + pssData->maxPageIndex = 3; break; - case 1: - gUnknown_0203CF1C->unk40C1 = 0; - gUnknown_0203CF1C->unk40C2 = 3; - gUnknown_0203CF1C->unk40C8 = 1; + case PSS_MODE_UNK1: + pssData->minPageIndex = 0; + pssData->maxPageIndex = 3; + pssData->unk40C8 = TRUE; break; - case 3: - gUnknown_0203CF1C->unk40C1 = 2; - gUnknown_0203CF1C->unk40C2 = 3; - gUnknown_0203CF1C->unk40C3 = 1; + case PSS_MODE_SELECT_MOVE: + pssData->minPageIndex = 2; + pssData->maxPageIndex = 3; + pssData->unk40C3 = TRUE; break; } - byte = gUnknown_0203CF1C->unk40C1; - gUnknown_0203CF1C->unk40C0 = byte; - sub_81C488C(0xFF); + + pssData->currPageIndex = pssData->minPageIndex; + SummaryScreen_SetUnknownTaskId(-1); + if (gMonSpritesGfxPtr == 0) sub_806F2AC(0, 0); - SetMainCallback2(sub_81BFAE4); + + SetMainCallback2(SummaryScreen_LoadingCB2); } -void sub_81BFA38(void *a, u8 b, u8 c, void *d, u16 e) +void ShowSelectMovePokemonSummaryScreen(struct Pokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void), u16 newMove) { - sub_81BF8EC(3, a, b, c, d); - gUnknown_0203CF1C->unk40C4 = e; + ShowPokemonSummaryScreen(PSS_MODE_SELECT_MOVE, mons, monIndex, maxMonIndex, callback); + pssData->newMove = newMove; } -void sub_81BFA80(u8 a, void *b, u8 c, u8 d, void *e) +void ShowPokemonSummaryScreenSet40EF(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)) { - sub_81BF8EC(a, b, c, d, e); - gUnknown_0203CF1C->unk40EF = 1; + ShowPokemonSummaryScreen(mode, mons, monIndex, maxMonIndex, callback); + pssData->unk40EF = TRUE; } -void sub_81BFAB4(void) +static void SummaryScreen_MainCB2(void) { RunTasks(); AnimateSprites(); @@ -402,23 +1057,19 @@ void sub_81BFAB4(void) UpdatePaletteFade(); } -void sub_81BFAD0(void) +static void SummaryScreen_VBlank(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -void sub_81BFAE4() +static void SummaryScreen_LoadingCB2(void) { - while (1) - { - if (sub_81221EC() == 1 || sub_81BFB10() == TRUE || sub_81221AC() == 1) - break; - } + while (sub_81221EC() != TRUE && SummaryScreen_LoadGraphics() != TRUE && sub_81221AC() != TRUE); } -bool8 sub_81BFB10(void) +static bool8 SummaryScreen_LoadGraphics(void) { switch (gMain.state) { @@ -446,12 +1097,12 @@ bool8 sub_81BFB10(void) gMain.state++; break; case 5: - sub_81BFE24(); - gUnknown_0203CF1C->unk40F0 = 0; + InitBGs(); + pssData->unk40F0 = 0; gMain.state++; break; case 6: - if (sub_81BFEB0() != 0) + if (SummaryScreen_DecompressGraphics() != FALSE) gMain.state++; break; case 7: @@ -463,12 +1114,12 @@ bool8 sub_81BFB10(void) gMain.state++; break; case 9: - sub_81C0098(&gUnknown_0203CF1C->currentMon); - gUnknown_0203CF1C->unk40F0 = 0; + CopyMonToSummaryStruct(&pssData->currentMon); + pssData->unk40F0 = 0; gMain.state++; break; case 10: - if (sub_81C00F0(&gUnknown_0203CF1C->currentMon) != 0) + if (ExtractMonDataToSummaryStruct(&pssData->currentMon) != 0) gMain.state++; break; case 11: @@ -476,11 +1127,11 @@ bool8 sub_81BFB10(void) gMain.state++; break; case 12: - sub_81C286C(); + PrintPageNamesAndStatsPageToWindows(); gMain.state++; break; case 13: - sub_81C2D9C(gUnknown_0203CF1C->unk40C0); + sub_81C2D9C(pssData->currPageIndex); gMain.state++; break; case 14: @@ -488,33 +1139,33 @@ bool8 sub_81BFB10(void) gMain.state++; break; case 15: - sub_81C2AFC(gUnknown_0203CF1C->unk40C0); + sub_81C2AFC(pssData->currPageIndex); gMain.state++; break; case 16: sub_81C4190(); sub_81C42C8(); - gUnknown_0203CF1C->unk40F0 = 0; + pssData->unk40F0 = 0; gMain.state++; break; case 17: - gUnknown_0203CF1C->unk40D3[0] = sub_81C45F4(&gUnknown_0203CF1C->currentMon, &gUnknown_0203CF1C->unk40F0); - if (gUnknown_0203CF1C->unk40D3[0] != 0xFF) + pssData->spriteIds[0] = sub_81C45F4(&pssData->currentMon, &pssData->unk40F0); + if (pssData->spriteIds[0] != 0xFF) { - gUnknown_0203CF1C->unk40F0 = 0; + pssData->unk40F0 = 0; gMain.state++; } break; case 18: - sub_81C4984(&gUnknown_0203CF1C->currentMon); + CreateMonMarkingsSprite(&pssData->currentMon); gMain.state++; break; case 19: - sub_81C4A08(&gUnknown_0203CF1C->currentMon); + CreateCaughtBallSprite(&pssData->currentMon); gMain.state++; break; case 20: - sub_81C4A88(); + CreateSetStatusSprite(); gMain.state++; break; case 21: @@ -522,7 +1173,7 @@ bool8 sub_81BFB10(void) gMain.state++; break; case 22: - if (gUnknown_0203CF1C->unk40BC != 3) + if (pssData->mode != PSS_MODE_SELECT_MOVE) CreateTask(sub_81C0510, 0); else CreateTask(sub_81C171C, 0); @@ -538,20 +1189,20 @@ bool8 sub_81BFB10(void) gMain.state++; break; default: - SetVBlankCallback(sub_81BFAD0); - SetMainCallback2(sub_81BFAB4); + SetVBlankCallback(SummaryScreen_VBlank); + SetMainCallback2(SummaryScreen_MainCB2); return TRUE; } return FALSE; } -void sub_81BFE24() +static void InitBGs(void) { ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, &gUnknown_0861CBB4, 4); - SetBgTilemapBuffer(1, &gUnknown_0203CF1C->unkTilemap2); - SetBgTilemapBuffer(2, &gUnknown_0203CF1C->unkTilemap1); - SetBgTilemapBuffer(3, &gUnknown_0203CF1C->unkTilemap0); + InitBgsFromTemplates(0, gUnknown_0861CBB4, ARRAY_COUNT(gUnknown_0861CBB4)); + SetBgTilemapBuffer(1, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0]); + SetBgTilemapBuffer(2, pssData->bgTilemapBuffers[PSS_PAGE_SKILLS][0]); + SetBgTilemapBuffer(3, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0]); ResetAllBgsCoordinates(); schedule_bg_copy_tilemap_to_vram(1); schedule_bg_copy_tilemap_to_vram(2); @@ -564,90 +1215,90 @@ void sub_81BFE24() ShowBg(3); } -u8 sub_81BFEB0() +static bool8 SummaryScreen_DecompressGraphics(void) { - switch (gUnknown_0203CF1C->unk40F0) + switch (pssData->unk40F0) { case 0: reset_temp_tile_data_buffers(); decompress_and_copy_tile_data_to_vram(1, &gUnknown_08D97D0C, 0, 0, 0); - gUnknown_0203CF1C->unk40F0++; + pssData->unk40F0++; break; case 1: if (free_temp_tile_data_buffers_if_possible() != 1) { - LZDecompressWram(&gUnknown_08D9862C, gUnknown_0203CF1C->unkTilemap0); - gUnknown_0203CF1C->unk40F0++; + LZDecompressWram(&gUnknown_08D9862C, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0]); + pssData->unk40F0++; } break; case 2: - LZDecompressWram(&gUnknown_08D98CC8, gUnknown_0203CF1C->unkTilemap0_1); - gUnknown_0203CF1C->unk40F0++; + LZDecompressWram(&gUnknown_08D98CC8, pssData->bgTilemapBuffers[PSS_PAGE_INFO][1]); + pssData->unk40F0++; break; case 3: - LZDecompressWram(&gUnknown_08D987FC, gUnknown_0203CF1C->unkTilemap1_1); - gUnknown_0203CF1C->unk40F0++; + LZDecompressWram(&gUnknown_08D987FC, pssData->bgTilemapBuffers[PSS_PAGE_SKILLS][1]); + pssData->unk40F0++; break; case 4: - LZDecompressWram(&gUnknown_08D9898C, gUnknown_0203CF1C->unkTilemap2_1); - gUnknown_0203CF1C->unk40F0++; + LZDecompressWram(&gUnknown_08D9898C, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][1]); + pssData->unk40F0++; break; case 5: - LZDecompressWram(&gUnknown_08D98B28, gUnknown_0203CF1C->unkTilemap3_1); - gUnknown_0203CF1C->unk40F0++; + LZDecompressWram(&gUnknown_08D98B28, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1]); + pssData->unk40F0++; break; case 6: LoadCompressedPalette(&gUnknown_08D9853C, 0, 0x100); LoadPalette(&gUnknown_08D85620, 0x81, 0x1E); - gUnknown_0203CF1C->unk40F0++; + pssData->unk40F0++; break; case 7: - LoadCompressedObjectPic(&gUnknown_0861CFBC); - gUnknown_0203CF1C->unk40F0++; + LoadCompressedObjectPic(&sSpriteSheet_MoveTypes); + pssData->unk40F0++; break; case 8: LoadCompressedObjectPic(&gUnknown_0861D074); - gUnknown_0203CF1C->unk40F0++; + pssData->unk40F0++; break; case 9: LoadCompressedObjectPic(&gUnknown_0861D0F8); - gUnknown_0203CF1C->unk40F0++; + pssData->unk40F0++; break; case 10: LoadCompressedObjectPalette(&gUnknown_0861D100); - gUnknown_0203CF1C->unk40F0++; + pssData->unk40F0++; break; case 11: LoadCompressedObjectPalette(&gUnknown_0861D07C); - gUnknown_0203CF1C->unk40F0++; + pssData->unk40F0++; break; case 12: LoadCompressedPalette(&gMoveTypes_Pal, 0x1D0, 0x60); - gUnknown_0203CF1C->unk40F0 = 0; - return 1; + pssData->unk40F0 = 0; + return TRUE; } - return 0; + return FALSE; } -void sub_81C0098(struct Pokemon *mon) +static void CopyMonToSummaryStruct(struct Pokemon *mon) { - if (gUnknown_0203CF1C->unk40BD == 0) + if (!pssData->isBoxMon) { - struct Pokemon *partyMon = gUnknown_0203CF1C->unk0->mon; - *mon = partyMon[gUnknown_0203CF1C->unk40BE]; + struct Pokemon *partyMon = pssData->monList.mons; + *mon = partyMon[pssData->curMonIndex]; } else { - struct BoxPokemon *boxMon = gUnknown_0203CF1C->unk0->boxMon; - BoxMonToMon(&boxMon[gUnknown_0203CF1C->unk40BE], mon); + struct BoxPokemon *boxMon = pssData->monList.boxMons; + BoxMonToMon(&boxMon[pssData->curMonIndex], mon); } } -bool8 sub_81C00F0(struct Pokemon *a) +static bool8 ExtractMonDataToSummaryStruct(struct Pokemon *a) { u32 i; - struct PokeSummary *sum = &gUnknown_0203CF1C->summary; - switch (gUnknown_0203CF1C->unk40F0) + struct PokeSummary *sum = &pssData->summary; + switch (pssData->unk40F0) { case 0: sum->species = GetMonData(a, MON_DATA_SPECIES); @@ -658,10 +1309,12 @@ bool8 sub_81C00F0(struct Pokemon *a) sum->item = GetMonData(a, MON_DATA_HELD_ITEM); sum->pid = GetMonData(a, MON_DATA_PERSONALITY); sum->sanity = GetMonData(a, MON_DATA_SANITY_BIT1); - if (sum->sanity != 0) - sum->isEgg = 1; + + if (sum->sanity) + sum->isEgg = TRUE; else sum->isEgg = GetMonData(a, MON_DATA_IS_EGG); + break; case 1: for (i = 0; i < 4; i++) @@ -672,7 +1325,7 @@ bool8 sub_81C00F0(struct Pokemon *a) sum->ppBonuses = GetMonData(a, MON_DATA_PP_BONUSES); break; case 2: - if ((struct Pokemon*)gUnknown_0203CF1C->unk0 == gPlayerParty || gUnknown_0203CF1C->unk40BC == 2 || gUnknown_0203CF1C->unk40EF == 1) + if (pssData->monList.mons == gPlayerParty || pssData->mode == PSS_MODE_UNK2 || pssData->unk40EF == TRUE) { sum->nature = GetNature(a); sum->currentHP = GetMonData(a, MON_DATA_HP); @@ -707,63 +1360,63 @@ bool8 sub_81C00F0(struct Pokemon *a) sum->friendship = GetMonData(a, MON_DATA_FRIENDSHIP); break; default: - sum->ribbons = GetMonData(a, MON_DATA_RIBBON_COUNT); + sum->ribbonCount = GetMonData(a, MON_DATA_RIBBON_COUNT); return TRUE; } - gUnknown_0203CF1C->unk40F0++; + pssData->unk40F0++; return FALSE; } -void sub_81C0348(void) +static void sub_81C0348(void) { - if (gUnknown_0203CF1C->unk40C0 != 2 && gUnknown_0203CF1C->unk40C0 != 3) + if (pssData->currPageIndex != PSS_PAGE_BATTLE_MOVES && pssData->currPageIndex != PSS_PAGE_CONTEST_MOVES) { sub_81C1DA4(0, 255); sub_81C1EFC(0, 255, 0); } else { - sub_81C240C(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]); - sub_81C2194(&gUnknown_0203CF1C->unkTilemap2[0], 3, 0); - sub_81C2194(&gUnknown_0203CF1C->unkTilemap3[0], 1, 0); - SetBgTilemapBuffer(1, &gUnknown_0203CF1C->unkTilemap3); - SetBgTilemapBuffer(2, &gUnknown_0203CF1C->unkTilemap2); + sub_81C240C(pssData->summary.moves[pssData->firstMoveIndex]); + sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 0); + sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 0); + SetBgTilemapBuffer(1, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0]); + SetBgTilemapBuffer(2, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0]); ChangeBgX(2, 0x10000, 1); - ClearWindowTilemap(0x13); - ClearWindowTilemap(0xD); + ClearWindowTilemap(19); + ClearWindowTilemap(13); } - if (gUnknown_0203CF1C->summary.unk7 == 0) + if (pssData->summary.unk7 == 0) { sub_81C2074(0, 0xFF); } else { - if (gUnknown_0203CF1C->unk40C0 != 2 && gUnknown_0203CF1C->unk40C0 != 3) - PutWindowTilemap(0xD); + if (pssData->currPageIndex != PSS_PAGE_BATTLE_MOVES && pssData->currPageIndex != PSS_PAGE_CONTEST_MOVES) + PutWindowTilemap(13); } sub_81C2524(); - sub_81C2228(&gUnknown_0203CF1C->currentMon); + sub_81C2228(&pssData->currentMon); } -void sub_81C0434() +static void sub_81C0434(void) { FreeAllWindowBuffers(); - Free(gUnknown_0203CF1C); + Free(pssData); } -void sub_81C044C(u8 taskId) +static void sub_81C044C(u8 taskId) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); gTasks[taskId].func = sub_81C0484; } -void sub_81C0484(u8 taskId) +static void sub_81C0484(u8 taskId) { - if (sub_81221EC() != 1 && !gPaletteFade.active) + if (sub_81221EC() != TRUE && !gPaletteFade.active) { - SetMainCallback2(gUnknown_0203CF1C->unk4); - gUnknown_0203CF20 = gUnknown_0203CF1C->unk40BE; - sub_81C4898(); + SetMainCallback2(pssData->callback); + gUnknown_0203CF20 = pssData->curMonIndex; + SummaryScreen_DestroyUnknownTask(); ResetSpriteData(); FreeAllSpritePalettes(); StopCryAndClearCrySongs(); @@ -775,9 +1428,9 @@ void sub_81C0484(u8 taskId) } } -void sub_81C0510(u8 taskId) +static void sub_81C0510(u8 taskId) { - if (sub_81221EC() != 1 && !gPaletteFade.active) + if (sub_81221EC() != TRUE && !gPaletteFade.active) { if (gMain.newKeys & DPAD_UP) { @@ -797,9 +1450,9 @@ void sub_81C0510(u8 taskId) } else if (gMain.newKeys & A_BUTTON) { - if (gUnknown_0203CF1C->unk40C0 != 1) + if (pssData->currPageIndex != PSS_PAGE_SKILLS) { - if (gUnknown_0203CF1C->unk40C0 == 0) + if (pssData->currPageIndex == PSS_PAGE_INFO) { sub_81C48F0(); PlaySE(SE_SELECT); @@ -821,15 +1474,15 @@ void sub_81C0510(u8 taskId) } } -void sub_81C0604(u8 taskId, s8 a) +static void sub_81C0604(u8 taskId, s8 a) { s8 r4_2; - if (gUnknown_0203CF1C->unk40C3 == 0) + if (!pssData->unk40C3) { - if (gUnknown_0203CF1C->unk40BD == 1) + if (pssData->isBoxMon == TRUE) { - if (gUnknown_0203CF1C->unk40C0 != 0) + if (pssData->currPageIndex != PSS_PAGE_INFO) { if (a == 1) a = 0; @@ -843,7 +1496,7 @@ void sub_81C0604(u8 taskId, s8 a) else a = 3; } - r4_2 = sub_80D214C(gUnknown_0203CF1C->unk0, gUnknown_0203CF1C->unk40BE, gUnknown_0203CF1C->unk40BF, a); + r4_2 = sub_80D214C(pssData->monList.boxMons, pssData->curMonIndex, pssData->maxMonIndex, a); } else if (sub_81B1250() == 1) { @@ -857,21 +1510,21 @@ void sub_81C0604(u8 taskId, s8 a) if (r4_2 != -1) { PlaySE(SE_SELECT); - if (gUnknown_0203CF1C->summary.unk7 != 0) + if (pssData->summary.unk7 != 0) { sub_81C4204(2, 1); - ClearWindowTilemap(0xD); + ClearWindowTilemap(13); schedule_bg_copy_tilemap_to_vram(0); sub_81C2074(0, 2); } - gUnknown_0203CF1C->unk40BE = r4_2; + pssData->curMonIndex = r4_2; gTasks[taskId].data[0] = 0; gTasks[taskId].func = sub_81C0704; } } } -void sub_81C0704(u8 taskId) +static void sub_81C0704(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -881,37 +1534,37 @@ void sub_81C0704(u8 taskId) StopCryAndClearCrySongs(); break; case 1: - sub_81C4898(); - DestroySpriteAndFreeResources(&gSprites[gUnknown_0203CF1C->unk40D3[0]]); + SummaryScreen_DestroyUnknownTask(); + DestroySpriteAndFreeResources(&gSprites[pssData->spriteIds[0]]); break; case 2: - DestroySpriteAndFreeResources(&gSprites[gUnknown_0203CF1C->unk40D3[1]]); + DestroySpriteAndFreeResources(&gSprites[pssData->spriteIds[1]]); break; case 3: - sub_81C0098(&gUnknown_0203CF1C->currentMon); - gUnknown_0203CF1C->unk40F0 = 0; + CopyMonToSummaryStruct(&pssData->currentMon); + pssData->unk40F0 = 0; break; case 4: - if (sub_81C00F0(&gUnknown_0203CF1C->currentMon) == FALSE) + if (ExtractMonDataToSummaryStruct(&pssData->currentMon) == FALSE) return; break; case 5: - sub_81C49E0(&gUnknown_0203CF1C->currentMon); + RemoveAndCreateMonMarkingsSprite(&pssData->currentMon); break; case 6: - sub_81C4A08(&gUnknown_0203CF1C->currentMon); + CreateCaughtBallSprite(&pssData->currentMon); break; case 7: - if (gUnknown_0203CF1C->summary.unk7) + if (pssData->summary.unk7) sub_81C2074(10, -2); - sub_81C2228(&gUnknown_0203CF1C->currentMon); + sub_81C2228(&pssData->currentMon); data[1] = 0; break; case 8: - gUnknown_0203CF1C->unk40D3[0] = sub_81C45F4(&gUnknown_0203CF1C->currentMon, &data[1]); - if (gUnknown_0203CF1C->unk40D3[0] == 0xFF) + pssData->spriteIds[0] = sub_81C45F4(&pssData->currentMon, &data[1]); + if (pssData->spriteIds[0] == 0xFF) return; - gSprites[gUnknown_0203CF1C->unk40D3[0]].data[2] = 1; + gSprites[pssData->spriteIds[0]].data[2] = 1; sub_81C0E24(); data[1] = 0; break; @@ -922,11 +1575,11 @@ void sub_81C0704(u8 taskId) sub_81C25E8(); break; case 11: - sub_81C2D9C(gUnknown_0203CF1C->unk40C0); + sub_81C2D9C(pssData->currPageIndex); sub_81C2524(); break; case 12: - gSprites[gUnknown_0203CF1C->unk40D3[0]].data[2] = 0; + gSprites[pssData->spriteIds[0]].data[2] = 0; break; default: if (sub_81221EC() == 0 && FuncIsActiveTask(sub_81C20F0) == 0) @@ -939,51 +1592,52 @@ void sub_81C0704(u8 taskId) data[0]++; } -s8 sub_81C08F8(s8 a) +static s8 sub_81C08F8(s8 a) { - struct Pokemon *mon = gUnknown_0203CF1C->unk0->mon; + struct Pokemon *mon = pssData->monList.mons; - if (gUnknown_0203CF1C->unk40C0 == 0) + if (pssData->currPageIndex == PSS_PAGE_INFO) { - if (a == -1 && gUnknown_0203CF1C->unk40BE == 0) + if (a == -1 && pssData->curMonIndex == 0) return -1; - if (a == 1 && gUnknown_0203CF1C->unk40BE >= gUnknown_0203CF1C->unk40BF) + else if (a == 1 && pssData->curMonIndex >= pssData->maxMonIndex) return -1; - return gUnknown_0203CF1C->unk40BE + a; + else + return pssData->curMonIndex + a; } else { - s8 index = gUnknown_0203CF1C->unk40BE; + s8 index = pssData->curMonIndex; do { index += a; - if (index < 0 || index > gUnknown_0203CF1C->unk40BF) + if (index < 0 || index > pssData->maxMonIndex) return -1; } while (GetMonData(&mon[index], MON_DATA_IS_EGG) != 0); return index; } } -s8 sub_81C09B4(s8 a) +static s8 sub_81C09B4(s8 a) { - struct Pokemon *mon = gUnknown_0203CF1C->unk0->mon; + struct Pokemon *mon = pssData->monList.mons; s8 r5 = 0; u8 i; for (i = 0; i < 6; i++) { - if (gUnknown_0861CC1C[i] == gUnknown_0203CF1C->unk40BE) + if (gUnknown_0861CC1C[i] == pssData->curMonIndex) { r5 = i; break; } } - while (1) + while (TRUE) { int b; - s8* c = &gUnknown_0861CC1C[0]; + const s8* c = gUnknown_0861CC1C; r5 += a; if (r5 < 0 || r5 >= 6) @@ -994,45 +1648,46 @@ s8 sub_81C09B4(s8 a) } } -bool8 sub_81C0A50(struct Pokemon* mon) +static bool8 sub_81C0A50(struct Pokemon* mon) { - if (GetMonData(mon, MON_DATA_SPECIES) == 0) + if (GetMonData(mon, MON_DATA_SPECIES) == SPECIES_NONE) return FALSE; - else if (gUnknown_0203CF1C->unk40BE != 0 || GetMonData(mon, MON_DATA_IS_EGG) == 0) + else if (pssData->curMonIndex != 0 || GetMonData(mon, MON_DATA_IS_EGG) == 0) return TRUE; else return FALSE; } -void sub_81C0A8C(u8 taskId, s8 b) +static void sub_81C0A8C(u8 taskId, s8 b) { - struct PokeSummary *summary = &gUnknown_0203CF1C->summary; + struct PokeSummary *summary = &pssData->summary; s16 *data = gTasks[taskId].data; if (summary->isEgg) return; - if (b == -1 && gUnknown_0203CF1C->unk40C0 == gUnknown_0203CF1C->unk40C1) + else if (b == -1 && pssData->currPageIndex == pssData->minPageIndex) return; - if (b == 1 && gUnknown_0203CF1C->unk40C0 == gUnknown_0203CF1C->unk40C2) + else if (b == 1 && pssData->currPageIndex == pssData->maxPageIndex) return; + PlaySE(SE_SELECT); - sub_81C2C38(gUnknown_0203CF1C->unk40C0); - gUnknown_0203CF1C->unk40C0 += b; + sub_81C2C38(pssData->currPageIndex); + pssData->currPageIndex += b; data[0] = 0; if (b == 1) SetTaskFuncWithFollowupFunc(taskId, sub_81C0B8C, gTasks[taskId].func); else SetTaskFuncWithFollowupFunc(taskId, sub_81C0CC4, gTasks[taskId].func); - sub_81C2DE4(gUnknown_0203CF1C->unk40C0); + sub_81C2DE4(pssData->currPageIndex); sub_81C424C(); } -void sub_81C0B8C(u8 taskId) +static void sub_81C0B8C(u8 taskId) { s16 *data = gTasks[taskId].data; if (data[0] == 0) { - if (gUnknown_0203CF1C->unk40C9 == 0) + if (pssData->unk40C9 == 0) { data[1] = 1; SetBgAttribute(1, 7, 1); @@ -1047,7 +1702,7 @@ void sub_81C0B8C(u8 taskId) schedule_bg_copy_tilemap_to_vram(2); } ChangeBgX(data[1], 0, 0); - SetBgTilemapBuffer(data[1], (u8*)gUnknown_0203CF1C + ((gUnknown_0203CF1C->unk40C0 << 12) + 0xBC)); + SetBgTilemapBuffer(data[1], pssData->bgTilemapBuffers[pssData->currPageIndex][0]); ShowBg(1); ShowBg(2); } @@ -1057,25 +1712,25 @@ void sub_81C0B8C(u8 taskId) gTasks[taskId].func = sub_81C0C68; } -void sub_81C0C68(u8 taskId) +static void sub_81C0C68(u8 taskId) { s16 *data = gTasks[taskId].data; - gUnknown_0203CF1C->unk40C9 ^= 1; + pssData->unk40C9 ^= 1; data[1] = 0; data[0] = 0; sub_81C1BA0(); - sub_81C2AFC(gUnknown_0203CF1C->unk40C0); + sub_81C2AFC(pssData->currPageIndex); sub_81C4280(); sub_81C0E24(); SwitchTaskToFollowupFunc(taskId); } -void sub_81C0CC4(u8 taskId) +static void sub_81C0CC4(u8 taskId) { s16 *data = gTasks[taskId].data; if (data[0] == 0) { - if (gUnknown_0203CF1C->unk40C9 == 0) + if (pssData->unk40C9 == 0) data[1] = 2; else data[1] = 1; @@ -1087,10 +1742,10 @@ void sub_81C0CC4(u8 taskId) gTasks[taskId].func = sub_81C0D44; } -void sub_81C0D44(u8 taskId) +static void sub_81C0D44(u8 taskId) { s16 *data = gTasks[taskId].data; - if (gUnknown_0203CF1C->unk40C9 == 0) + if (pssData->unk40C9 == 0) { SetBgAttribute(1, 7, 1); SetBgAttribute(2, 7, 2); @@ -1102,48 +1757,48 @@ void sub_81C0D44(u8 taskId) SetBgAttribute(1, 7, 2); schedule_bg_copy_tilemap_to_vram(1); } - if (gUnknown_0203CF1C->unk40C0 > 1) + if (pssData->currPageIndex > 1) { - SetBgTilemapBuffer(data[1], (u8*)gUnknown_0203CF1C + ((gUnknown_0203CF1C->unk40C0 << 12) + 0xFFFFF0BC)); + SetBgTilemapBuffer(data[1], (u8*)pssData + ((pssData->currPageIndex << 12) + 0xFFFFF0BC)); ChangeBgX(data[1], 0x10000, 0); } ShowBg(1); ShowBg(2); - gUnknown_0203CF1C->unk40C9 ^= 1; + pssData->unk40C9 ^= 1; data[1] = 0; data[0] = 0; sub_81C1BA0(); - sub_81C2AFC(gUnknown_0203CF1C->unk40C0); + sub_81C2AFC(pssData->currPageIndex); sub_81C4280(); sub_81C0E24(); SwitchTaskToFollowupFunc(taskId); } -void sub_81C0E24() +static void sub_81C0E24(void) { - if (gUnknown_0203CF1C->unk40C0 == 1) - sub_81C22CC(&gUnknown_0203CF1C->currentMon); + if (pssData->currPageIndex == 1) + DrawExperienceProgressBar(&pssData->currentMon); } -void sub_81C0E48(u8 taskId) +static void sub_81C0E48(u8 taskId) { u16 move; - gUnknown_0203CF1C->unk40C6 = 0; - move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]; + pssData->firstMoveIndex = 0; + move = pssData->summary.moves[pssData->firstMoveIndex]; ClearWindowTilemap(0x13); - if (gSprites[gUnknown_0203CF1C->unk40D3[2]].invisible == 0) + if (gSprites[pssData->spriteIds[2]].invisible == 0) ClearWindowTilemap(0xD); sub_81C1DA4(9, -3); sub_81C1EFC(9, -3, move); - if (gUnknown_0203CF1C->unk40C8 == 0) + if (!pssData->unk40C8) { ClearWindowTilemap(5); PutWindowTilemap(6); } - sub_81C2194(&gUnknown_0203CF1C->unkTilemap2[0], 3, 0); - sub_81C2194(&gUnknown_0203CF1C->unkTilemap3[0], 1, 0); - sub_81C3E9C(move); - sub_81C3F44(); + sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 0); + sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 0); + PrintMoveDetails(move); + PrintNewMoveDetailsOrCancelText(); sub_81C44F0(); schedule_bg_copy_tilemap_to_vram(0); schedule_bg_copy_tilemap_to_vram(1); @@ -1152,7 +1807,7 @@ void sub_81C0E48(u8 taskId) gTasks[taskId].func = sub_81C0F44; } -void sub_81C0F44(u8 taskId) +static void sub_81C0F44(u8 taskId) { u8 id = taskId; s16 *data = gTasks[taskId].data; @@ -1162,17 +1817,17 @@ void sub_81C0F44(u8 taskId) if (gMain.newKeys & DPAD_UP) { data[0] = 4; - sub_81C1070(data, -1, &gUnknown_0203CF1C->unk40C6); + sub_81C1070(data, -1, &pssData->firstMoveIndex); } else if (gMain.newKeys & DPAD_DOWN) { data[0] = 4; - sub_81C1070(data, 1, &gUnknown_0203CF1C->unk40C6); + sub_81C1070(data, 1, &pssData->firstMoveIndex); } else if (gMain.newKeys & A_BUTTON) { - if (gUnknown_0203CF1C->unk40C8 == 1 - || (gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4)) + if (pssData->unk40C8 == TRUE + || (pssData->newMove == MOVE_NONE && pssData->firstMoveIndex == MAX_MON_MOVES)) { PlaySE(SE_SELECT); sub_81C11F4(taskId); @@ -1195,18 +1850,18 @@ void sub_81C0F44(u8 taskId) } } -bool8 sub_81C1040(void) +static bool8 sub_81C1040(void) { u8 i; for (i = 1; i < 4; i++) { - if (gUnknown_0203CF1C->summary.moves[i] != 0) + if (pssData->summary.moves[i] != 0) return TRUE; } return FALSE; } -void sub_81C1070(s16 *a, s8 b, u8 *c) +static void sub_81C1070(s16 *a, s8 b, u8 *c) { s8 i; s8 moveIndex; @@ -1223,27 +1878,27 @@ void sub_81C1070(s16 *a, s8 b, u8 *c) moveIndex = a[0]; if (moveIndex == 4) { - move = gUnknown_0203CF1C->unk40C4; + move = pssData->newMove; break; } - move = gUnknown_0203CF1C->summary.moves[moveIndex]; + move = pssData->summary.moves[moveIndex]; if (move != 0) break; } sub_81C240C(move); schedule_bg_copy_tilemap_to_vram(1); schedule_bg_copy_tilemap_to_vram(2); - sub_81C3E9C(move); - if ((*c == 4 && gUnknown_0203CF1C->unk40C4 == 0) || a[1] == 1) + PrintMoveDetails(move); + if ((*c == 4 && pssData->newMove == MOVE_NONE) || a[1] == 1) { ClearWindowTilemap(19); - if (!gSprites[gUnknown_0203CF1C->unk40D3[2]].invisible) + if (!gSprites[pssData->spriteIds[2]].invisible) ClearWindowTilemap(13); schedule_bg_copy_tilemap_to_vram(0); sub_81C1DA4(9, -3); sub_81C1EFC(9, -3, move); } - if (*c != 4 && moveIndex == 4 && gUnknown_0203CF1C->unk40C4 == 0) + if (*c != 4 && moveIndex == 4 && pssData->newMove == MOVE_NONE) { ClearWindowTilemap(14); ClearWindowTilemap(15); @@ -1252,22 +1907,22 @@ void sub_81C1070(s16 *a, s8 b, u8 *c) sub_81C1EFC(0, 3, 0); } *c = moveIndex; - if (c == &gUnknown_0203CF1C->unk40C6) + if (c == &pssData->firstMoveIndex) sub_81C4D18(8); else sub_81C4D18(18); } -void sub_81C11F4(u8 taskId) +static void sub_81C11F4(u8 taskId) { sub_81C4C60(8); ClearWindowTilemap(6); PutWindowTilemap(5); - sub_81C3E9C(0); - sub_81C2194(&gUnknown_0203CF1C->unkTilemap2[0], 3, 1); - sub_81C2194(&gUnknown_0203CF1C->unkTilemap3[0], 1, 1); + PrintMoveDetails(0); + sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 1); + sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 1); sub_81C4064(); - if (gUnknown_0203CF1C->unk40C6 != 4) + if (pssData->firstMoveIndex != MAX_MON_MOVES) { ClearWindowTilemap(14); ClearWindowTilemap(15); @@ -1280,506 +1935,160 @@ void sub_81C11F4(u8 taskId) gTasks[taskId].func = sub_81C0510; } -void sub_81C129C(u8 taskId) +static void sub_81C129C(u8 taskId) { - gUnknown_0203CF1C->unk40C7 = gUnknown_0203CF1C->unk40C6; + pssData->secondMoveIndex = pssData->firstMoveIndex; sub_81C4C84(1); sub_81C4AF8(18); gTasks[taskId].func = sub_81C12E4; } -void sub_81C12E4(u8 taskId) +static void sub_81C12E4(u8 taskId) { - u8 a = taskId; s16* data = gTasks[taskId].data; - if (sub_81221EC() != 1) + + if (sub_81221EC() != TRUE) { if (gMain.newKeys & DPAD_UP) { data[0] = 3; - sub_81C1070(&data[0], -1, &gUnknown_0203CF1C->unk40C7); + sub_81C1070(&data[0], -1, &pssData->secondMoveIndex); } else if (gMain.newKeys & DPAD_DOWN) { data[0] = 3; - sub_81C1070(&data[0], 1, &gUnknown_0203CF1C->unk40C7); + sub_81C1070(&data[0], 1, &pssData->secondMoveIndex); } else if (gMain.newKeys & A_BUTTON) { - if (gUnknown_0203CF1C->unk40C6 == gUnknown_0203CF1C->unk40C7) + if (pssData->firstMoveIndex == pssData->secondMoveIndex) { sub_81C13B0(taskId, 0); } else + { sub_81C13B0(taskId, 1); + } } else if (gMain.newKeys & B_BUTTON) - sub_81C13B0(a, 0); + { + sub_81C13B0(taskId, 0); + } } } -void sub_81C13B0(u8 taskId, u8 b) +static void sub_81C13B0(u8 taskId, bool8 b) { u16 move; + PlaySE(SE_SELECT); sub_81C4C84(0); sub_81C4C60(18); - if (b == 1) + + if (b == TRUE) { - if (gUnknown_0203CF1C->unk40BD == 0) + if (!pssData->isBoxMon) { - struct Pokemon *why = gUnknown_0203CF1C->unk0->mon; - sub_81C14BC(&why[gUnknown_0203CF1C->unk40BE], gUnknown_0203CF1C->unk40C6, gUnknown_0203CF1C->unk40C7); + struct Pokemon *why = pssData->monList.mons; + SwapMonMoves(&why[pssData->curMonIndex], pssData->firstMoveIndex, pssData->secondMoveIndex); } else { - struct BoxPokemon *why = gUnknown_0203CF1C->unk0->boxMon; - sub_81C15EC(&why[gUnknown_0203CF1C->unk40BE], gUnknown_0203CF1C->unk40C6, gUnknown_0203CF1C->unk40C7); + struct BoxPokemon *why = pssData->monList.boxMons; + SwapBoxMonMoves(&why[pssData->curMonIndex], pssData->firstMoveIndex, pssData->secondMoveIndex); } - sub_81C0098(&gUnknown_0203CF1C->currentMon); - sub_81C40A0(gUnknown_0203CF1C->unk40C6, gUnknown_0203CF1C->unk40C7); - sub_81C4568(gUnknown_0203CF1C->unk40C6, gUnknown_0203CF1C->unk40C7); - gUnknown_0203CF1C->unk40C6 = gUnknown_0203CF1C->unk40C7; + CopyMonToSummaryStruct(&pssData->currentMon); + sub_81C40A0(pssData->firstMoveIndex, pssData->secondMoveIndex); + sub_81C4568(pssData->firstMoveIndex, pssData->secondMoveIndex); + pssData->firstMoveIndex = pssData->secondMoveIndex; } - move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]; - sub_81C3E9C(move); + + move = pssData->summary.moves[pssData->firstMoveIndex]; + PrintMoveDetails(move); sub_81C240C(move); schedule_bg_copy_tilemap_to_vram(1); schedule_bg_copy_tilemap_to_vram(2); gTasks[taskId].func = sub_81C0F44; } +static void SwapMonMoves(struct Pokemon *mon, u8 moveIndex1, u8 moveIndex2) +{ + struct PokeSummary* summary = &pssData->summary; + + u16 move1 = summary->moves[moveIndex1]; + u16 move2 = summary->moves[moveIndex2]; + u8 move1pp = summary->pp[moveIndex1]; + u8 move2pp = summary->pp[moveIndex2]; + u8 ppBonuses = summary->ppBonuses; + + // Calculate PP bonuses + u8 ppUpMask1 = gUnknown_08329D22[moveIndex1]; + u8 ppBonusMove1 = (ppBonuses & ppUpMask1) >> (moveIndex1 * 2); + u8 ppUpMask2 = gUnknown_08329D22[moveIndex2]; + u8 ppBonusMove2 = (ppBonuses & ppUpMask2) >> (moveIndex2 * 2); + ppBonuses &= ~ppUpMask1; + ppBonuses &= ~ppUpMask2; + ppBonuses |= (ppBonusMove1 << (moveIndex2 * 2)) + (ppBonusMove2 << (moveIndex1 * 2)); + + // Swap the moves + SetMonData(mon, MON_DATA_MOVE1 + moveIndex1, &move2); + SetMonData(mon, MON_DATA_MOVE1 + moveIndex2, &move1); + SetMonData(mon, MON_DATA_PP1 + moveIndex1, &move2pp); + SetMonData(mon, MON_DATA_PP1 + moveIndex2, &move1pp); + SetMonData(mon, MON_DATA_PP_BONUSES, &ppBonuses); + + summary->moves[moveIndex1] = move2; + summary->moves[moveIndex2] = move1; + + summary->pp[moveIndex1] = move2pp; + summary->pp[moveIndex2] = move1pp; + + summary->ppBonuses = ppBonuses; +} + +static void SwapBoxMonMoves(struct BoxPokemon *mon, u8 moveIndex1, u8 moveIndex2) +{ + struct PokeSummary* summary = &pssData->summary; + + u16 move1 = summary->moves[moveIndex1]; + u16 move2 = summary->moves[moveIndex2]; + u8 move1pp = summary->pp[moveIndex1]; + u8 move2pp = summary->pp[moveIndex2]; + u8 ppBonuses = summary->ppBonuses; + + // Calculate PP bonuses + u8 ppUpMask1 = gUnknown_08329D22[moveIndex1]; + u8 ppBonusMove1 = (ppBonuses & ppUpMask1) >> (moveIndex1 * 2); + u8 ppUpMask2 = gUnknown_08329D22[moveIndex2]; + u8 ppBonusMove2 = (ppBonuses & ppUpMask2) >> (moveIndex2 * 2); + ppBonuses &= ~ppUpMask1; + ppBonuses &= ~ppUpMask2; + ppBonuses |= (ppBonusMove1 << (moveIndex2 * 2)) + (ppBonusMove2 << (moveIndex1 * 2)); + + // Swap the moves + SetBoxMonData(mon, MON_DATA_MOVE1 + moveIndex1, &move2); + SetBoxMonData(mon, MON_DATA_MOVE1 + moveIndex2, &move1); + SetBoxMonData(mon, MON_DATA_PP1 + moveIndex1, &move2pp); + SetBoxMonData(mon, MON_DATA_PP1 + moveIndex2, &move1pp); + SetBoxMonData(mon, MON_DATA_PP_BONUSES, &ppBonuses); + + summary->moves[moveIndex1] = move2; + summary->moves[moveIndex2] = move1; + + summary->pp[moveIndex1] = move2pp; + summary->pp[moveIndex2] = move1pp; + + summary->ppBonuses = ppBonuses; +} -#ifdef NONMATCHING -void sub_81C14BC(struct Pokemon *mon, u8 swappingFromId, u8 swappingToId) -{ - u16 localMoveTo; - u16 localMoveFrom; - u8 localPpTo; - u8 localPpFrom; - u8 localPpBonuses; - u16* moveFromPtr; - u16* moveToPtr; - u8* ppFromPtr; - u8* ppToPtr; - u8* ppBonusesPtr; - - moveFromPtr = &gUnknown_0203CF1C->summary.moves[swappingFromId]; - localMoveFrom = *moveFromPtr; - - moveToPtr = &gUnknown_0203CF1C->summary.moves[swappingToId]; - localMoveTo = *moveToPtr; - - ppFromPtr = &gUnknown_0203CF1C->summary.pp[swappingFromId]; - localPpFrom = *ppFromPtr; - - ppToPtr = &gUnknown_0203CF1C->summary.pp[swappingToId]; - localPpTo = *ppToPtr; - - ppBonusesPtr = &gUnknown_0203CF1C->summary.ppBonuses; - localPpBonuses = *ppBonusesPtr; - -{ - u8 bitsFrom, bitsTo; - - bitsFrom = (localPpBonuses & gUnknown_08329D22[swappingFromId]) >> (swappingFromId << 1); - bitsTo = (localPpBonuses & gUnknown_08329D22[swappingToId]) >> (swappingToId << 1); - - - localPpBonuses &= ~(gUnknown_08329D22[swappingFromId]); - localPpBonuses &= ~(gUnknown_08329D22[swappingToId]); - - localPpBonuses |= ((bitsFrom << (swappingToId << 1)) + (bitsTo << (swappingToId << 1))); -} - - SetMonData(mon, swappingFromId + MON_DATA_MOVE1, &localMoveTo); - SetMonData(mon, swappingToId + MON_DATA_MOVE1, &localMoveFrom); - - SetMonData(mon, swappingFromId + MON_DATA_PP1, &localPpTo); - SetMonData(mon, swappingToId + MON_DATA_PP1, &localPpFrom); - - SetMonData(mon, MON_DATA_PP_BONUSES, &localPpBonuses); - - *moveFromPtr = localMoveTo; - *moveToPtr = localMoveFrom; - - *ppFromPtr = localPpTo; - *ppToPtr = localPpFrom; - - *ppBonusesPtr = localPpBonuses; -} -#else -NAKED -void sub_81C14BC(struct Pokemon *mon, u8 swappingFromId, u8 swappingToId) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x28\n\ - adds r7, r0, 0\n\ - adds r4, r1, 0\n\ - adds r6, r2, 0\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - lsls r6, 24\n\ - lsrs r6, 24\n\ - ldr r0, =gUnknown_0203CF1C\n\ - ldr r2, [r0]\n\ - lsls r0, r4, 1\n\ - mov r10, r0\n\ - adds r1, r2, 0\n\ - adds r1, 0x84\n\ - adds r0, r1, r0\n\ - str r0, [sp, 0x8]\n\ - ldrh r0, [r0]\n\ - mov r3, sp\n\ - adds r3, 0x2\n\ - str r3, [sp, 0x1C]\n\ - strh r0, [r3]\n\ - lsls r0, r6, 1\n\ - mov r9, r0\n\ - add r1, r9\n\ - str r1, [sp, 0xC]\n\ - ldrh r1, [r1]\n\ - mov r0, sp\n\ - strh r1, [r0]\n\ - adds r1, r2, 0\n\ - adds r1, 0x8C\n\ - adds r3, r1, r4\n\ - str r3, [sp, 0x10]\n\ - ldrb r0, [r3]\n\ - mov r3, sp\n\ - adds r3, 0x5\n\ - str r3, [sp, 0x24]\n\ - strb r0, [r3]\n\ - adds r1, r6\n\ - str r1, [sp, 0x14]\n\ - ldrb r0, [r1]\n\ - mov r1, sp\n\ - adds r1, 0x4\n\ - str r1, [sp, 0x20]\n\ - strb r0, [r1]\n\ - adds r2, 0xA4\n\ - str r2, [sp, 0x18]\n\ - ldrb r0, [r2]\n\ - mov r5, sp\n\ - adds r5, 0x6\n\ - strb r0, [r5]\n\ - ldr r1, =gUnknown_08329D22\n\ - adds r0, r4, r1\n\ - ldrb r0, [r0]\n\ - mov r8, r0\n\ - ldrb r0, [r5]\n\ - adds r2, r0, 0\n\ - mov r3, r8\n\ - ands r2, r3\n\ - mov r3, r10\n\ - asrs r2, r3\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - adds r1, r6, r1\n\ - ldrb r1, [r1]\n\ - mov r12, r1\n\ - adds r1, r0, 0\n\ - mov r3, r12\n\ - ands r1, r3\n\ - mov r3, r9\n\ - asrs r1, r3\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - mov r3, r8\n\ - bics r0, r3\n\ - strb r0, [r5]\n\ - ldrb r0, [r5]\n\ - mov r3, r12\n\ - bics r0, r3\n\ - strb r0, [r5]\n\ - mov r0, r9\n\ - lsls r2, r0\n\ - mov r3, r10\n\ - lsls r1, r3\n\ - adds r2, r1\n\ - ldrb r0, [r5]\n\ - orrs r0, r2\n\ - strb r0, [r5]\n\ - adds r1, r4, 0\n\ - adds r1, 0xD\n\ - adds r0, r7, 0\n\ - mov r2, sp\n\ - bl SetMonData\n\ - adds r1, r6, 0\n\ - adds r1, 0xD\n\ - adds r0, r7, 0\n\ - ldr r2, [sp, 0x1C]\n\ - bl SetMonData\n\ - adds r4, 0x11\n\ - adds r0, r7, 0\n\ - adds r1, r4, 0\n\ - ldr r2, [sp, 0x20]\n\ - bl SetMonData\n\ - adds r6, 0x11\n\ - adds r0, r7, 0\n\ - adds r1, r6, 0\n\ - ldr r2, [sp, 0x24]\n\ - bl SetMonData\n\ - adds r0, r7, 0\n\ - movs r1, 0x15\n\ - adds r2, r5, 0\n\ - bl SetMonData\n\ - mov r0, sp\n\ - ldrh r0, [r0]\n\ - ldr r1, [sp, 0x8]\n\ - strh r0, [r1]\n\ - ldr r3, [sp, 0x1C]\n\ - ldrh r0, [r3]\n\ - ldr r1, [sp, 0xC]\n\ - strh r0, [r1]\n\ - ldr r3, [sp, 0x20]\n\ - ldrb r0, [r3]\n\ - ldr r1, [sp, 0x10]\n\ - strb r0, [r1]\n\ - ldr r3, [sp, 0x24]\n\ - ldrb r0, [r3]\n\ - ldr r1, [sp, 0x14]\n\ - strb r0, [r1]\n\ - ldrb r0, [r5]\n\ - ldr r3, [sp, 0x18]\n\ - strb r0, [r3]\n\ - add sp, 0x28\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n\ - .syntax divided\n"); -} -#endif - -#ifdef NONMATCHING -void sub_81C15EC(struct BoxPokemon *mon, u8 swappingFromId, u8 swappingToId) -{ - u16 localMoveTo; - u16 localMoveFrom; - u8 localPpTo; - u8 localPpFrom; - u8 localPpBonuses; - u16* moveFromPtr; - u16* moveToPtr; - u8* ppFromPtr; - u8* ppToPtr; - u8* ppBonusesPtr; - - moveFromPtr = &gUnknown_0203CF1C->summary.moves[swappingFromId]; - localMoveFrom = *moveFromPtr; - - moveToPtr = &gUnknown_0203CF1C->summary.moves[swappingToId]; - localMoveTo = *moveToPtr; - - ppFromPtr = &gUnknown_0203CF1C->summary.pp[swappingFromId]; - localPpFrom = *ppFromPtr; - - ppToPtr = &gUnknown_0203CF1C->summary.pp[swappingToId]; - localPpTo = *ppToPtr; - - ppBonusesPtr = &gUnknown_0203CF1C->summary.ppBonuses; - localPpBonuses = *ppBonusesPtr; - -{ - u8 bitsFrom, bitsTo; - - bitsFrom = (localPpBonuses & gUnknown_08329D22[swappingFromId]) >> (swappingFromId << 1); - bitsTo = (localPpBonuses & gUnknown_08329D22[swappingToId]) >> (swappingToId << 1); - - - localPpBonuses &= ~(gUnknown_08329D22[swappingFromId]); - localPpBonuses &= ~(gUnknown_08329D22[swappingToId]); - - localPpBonuses |= ((bitsFrom << (swappingToId << 1)) + (bitsTo << (swappingToId << 1))); -} - - SetBoxMonData(mon, swappingFromId + MON_DATA_MOVE1, &localMoveTo); - SetBoxMonData(mon, swappingToId + MON_DATA_MOVE1, &localMoveFrom); - - SetBoxMonData(mon, swappingFromId + MON_DATA_PP1, &localPpTo); - SetBoxMonData(mon, swappingToId + MON_DATA_PP1, &localPpFrom); - - SetBoxMonData(mon, MON_DATA_PP_BONUSES, &localPpBonuses); - - *moveFromPtr = localMoveTo; - *moveToPtr = localMoveFrom; - - *ppFromPtr = localPpTo; - *ppToPtr = localPpFrom; - - *ppBonusesPtr = localPpBonuses; -} -#else -NAKED -void sub_81C15EC(struct BoxPokemon *mon, u8 swappingFromId, u8 swappingToId) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x28\n\ - adds r7, r0, 0\n\ - adds r4, r1, 0\n\ - adds r6, r2, 0\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - lsls r6, 24\n\ - lsrs r6, 24\n\ - ldr r0, =gUnknown_0203CF1C\n\ - ldr r2, [r0]\n\ - lsls r0, r4, 1\n\ - mov r10, r0\n\ - adds r1, r2, 0\n\ - adds r1, 0x84\n\ - adds r0, r1, r0\n\ - str r0, [sp, 0x8]\n\ - ldrh r0, [r0]\n\ - mov r3, sp\n\ - adds r3, 0x2\n\ - str r3, [sp, 0x1C]\n\ - strh r0, [r3]\n\ - lsls r0, r6, 1\n\ - mov r9, r0\n\ - add r1, r9\n\ - str r1, [sp, 0xC]\n\ - ldrh r1, [r1]\n\ - mov r0, sp\n\ - strh r1, [r0]\n\ - adds r1, r2, 0\n\ - adds r1, 0x8C\n\ - adds r3, r1, r4\n\ - str r3, [sp, 0x10]\n\ - ldrb r0, [r3]\n\ - mov r3, sp\n\ - adds r3, 0x5\n\ - str r3, [sp, 0x24]\n\ - strb r0, [r3]\n\ - adds r1, r6\n\ - str r1, [sp, 0x14]\n\ - ldrb r0, [r1]\n\ - mov r1, sp\n\ - adds r1, 0x4\n\ - str r1, [sp, 0x20]\n\ - strb r0, [r1]\n\ - adds r2, 0xA4\n\ - str r2, [sp, 0x18]\n\ - ldrb r0, [r2]\n\ - mov r5, sp\n\ - adds r5, 0x6\n\ - strb r0, [r5]\n\ - ldr r1, =gUnknown_08329D22\n\ - adds r0, r4, r1\n\ - ldrb r0, [r0]\n\ - mov r8, r0\n\ - ldrb r0, [r5]\n\ - adds r2, r0, 0\n\ - mov r3, r8\n\ - ands r2, r3\n\ - mov r3, r10\n\ - asrs r2, r3\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - adds r1, r6, r1\n\ - ldrb r1, [r1]\n\ - mov r12, r1\n\ - adds r1, r0, 0\n\ - mov r3, r12\n\ - ands r1, r3\n\ - mov r3, r9\n\ - asrs r1, r3\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - mov r3, r8\n\ - bics r0, r3\n\ - strb r0, [r5]\n\ - ldrb r0, [r5]\n\ - mov r3, r12\n\ - bics r0, r3\n\ - strb r0, [r5]\n\ - mov r0, r9\n\ - lsls r2, r0\n\ - mov r3, r10\n\ - lsls r1, r3\n\ - adds r2, r1\n\ - ldrb r0, [r5]\n\ - orrs r0, r2\n\ - strb r0, [r5]\n\ - adds r1, r4, 0\n\ - adds r1, 0xD\n\ - adds r0, r7, 0\n\ - mov r2, sp\n\ - bl SetBoxMonData\n\ - adds r1, r6, 0\n\ - adds r1, 0xD\n\ - adds r0, r7, 0\n\ - ldr r2, [sp, 0x1C]\n\ - bl SetBoxMonData\n\ - adds r4, 0x11\n\ - adds r0, r7, 0\n\ - adds r1, r4, 0\n\ - ldr r2, [sp, 0x20]\n\ - bl SetBoxMonData\n\ - adds r6, 0x11\n\ - adds r0, r7, 0\n\ - adds r1, r6, 0\n\ - ldr r2, [sp, 0x24]\n\ - bl SetBoxMonData\n\ - adds r0, r7, 0\n\ - movs r1, 0x15\n\ - adds r2, r5, 0\n\ - bl SetBoxMonData\n\ - mov r0, sp\n\ - ldrh r0, [r0]\n\ - ldr r1, [sp, 0x8]\n\ - strh r0, [r1]\n\ - ldr r3, [sp, 0x1C]\n\ - ldrh r0, [r3]\n\ - ldr r1, [sp, 0xC]\n\ - strh r0, [r1]\n\ - ldr r3, [sp, 0x20]\n\ - ldrb r0, [r3]\n\ - ldr r1, [sp, 0x10]\n\ - strb r0, [r1]\n\ - ldr r3, [sp, 0x24]\n\ - ldrb r0, [r3]\n\ - ldr r1, [sp, 0x14]\n\ - strb r0, [r1]\n\ - ldrb r0, [r5]\n\ - ldr r3, [sp, 0x18]\n\ - strb r0, [r3]\n\ - add sp, 0x28\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n\ - .syntax divided\n"); -} -#endif - -void sub_81C171C(u8 taskId) +static void sub_81C171C(u8 taskId) { sub_81C44F0(); sub_81C4AF8(8); gTasks[taskId].func = sub_81C174C; } -void sub_81C174C(u8 taskId) +static void sub_81C174C(u8 taskId) { s16* data = gTasks[taskId].data; @@ -1790,12 +2099,12 @@ void sub_81C174C(u8 taskId) if (gMain.newKeys & DPAD_UP) { data[0] = 4; - sub_81C1070(data, -1, &gUnknown_0203CF1C->unk40C6); + sub_81C1070(data, -1, &pssData->firstMoveIndex); } else if (gMain.newKeys & DPAD_DOWN) { data[0] = 4; - sub_81C1070(data, 1, &gUnknown_0203CF1C->unk40C6); + sub_81C1070(data, 1, &pssData->firstMoveIndex); } else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1) { @@ -1811,7 +2120,7 @@ void sub_81C174C(u8 taskId) { sub_81C48F0(); PlaySE(SE_SELECT); - gUnknown_0203CF21 = gUnknown_0203CF1C->unk40C6; + gUnknown_0203CF21 = pssData->firstMoveIndex; gSpecialVar_0x8005 = gUnknown_0203CF21; sub_81C044C(taskId); } @@ -1834,26 +2143,26 @@ void sub_81C174C(u8 taskId) } } -bool8 sub_81C18A8() +static bool8 sub_81C18A8(void) { - if (gUnknown_0203CF1C->unk40C6 == 4 || gUnknown_0203CF1C->unk40C4 == 0 || sub_81B6D14(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]) != 1) + if (pssData->firstMoveIndex == MAX_MON_MOVES || pssData->newMove == MOVE_NONE || sub_81B6D14(pssData->summary.moves[pssData->firstMoveIndex]) != 1) return TRUE; else return FALSE; } -void sub_81C18F4(u8 taskId) +static void sub_81C18F4(u8 taskId) { ClearWindowTilemap(14); ClearWindowTilemap(15); schedule_bg_copy_tilemap_to_vram(0); sub_81C1DA4(0, 3); sub_81C1EFC(0, 3, 0); - sub_81C4154(); + PrintHMMovesCantBeForgotten(); gTasks[taskId].func = sub_81C1940; } -void sub_81C1940(u8 taskId) +static void sub_81C1940(u8 taskId) { s16* data = gTasks[taskId].data; u16 move; @@ -1863,7 +2172,7 @@ void sub_81C1940(u8 taskId) { data[1] = 1; data[0] = 4; - sub_81C1070(&data[0], -1, &gUnknown_0203CF1C->unk40C6); + sub_81C1070(&data[0], -1, &pssData->firstMoveIndex); data[1] = 0; gTasks[taskId].func = sub_81C174C; } @@ -1871,19 +2180,18 @@ void sub_81C1940(u8 taskId) { data[1] = 1; data[0] = 4; - sub_81C1070(&data[0], 1, &gUnknown_0203CF1C->unk40C6); + sub_81C1070(&data[0], 1, &pssData->firstMoveIndex); data[1] = 0; gTasks[taskId].func = sub_81C174C; } else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1) { - if (gUnknown_0203CF1C->unk40C0 != 2) + if (pssData->currPageIndex != 2) { - ClearWindowTilemap(19); - if (!gSprites[gUnknown_0203CF1C->unk40D3[2]].invisible) + if (!gSprites[pssData->spriteIds[2]].invisible) ClearWindowTilemap(13); - move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]; + move = pssData->summary.moves[pssData->firstMoveIndex]; gTasks[taskId].func = sub_81C174C; sub_81C0A8C(taskId, -1); sub_81C1DA4(9, -2); @@ -1892,12 +2200,12 @@ void sub_81C1940(u8 taskId) } else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysState() == 2) { - if (gUnknown_0203CF1C->unk40C0 != 3) + if (pssData->currPageIndex != 3) { ClearWindowTilemap(19); - if (!gSprites[gUnknown_0203CF1C->unk40D3[2]].invisible) + if (!gSprites[pssData->spriteIds[2]].invisible) ClearWindowTilemap(13); - move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]; + move = pssData->summary.moves[pssData->firstMoveIndex]; gTasks[taskId].func = sub_81C174C; sub_81C0A8C(taskId, 1); sub_81C1DA4(9, -2); @@ -1907,10 +2215,10 @@ void sub_81C1940(u8 taskId) else if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { ClearWindowTilemap(19); - if (!gSprites[gUnknown_0203CF1C->unk40D3[2]].invisible) + if (!gSprites[pssData->spriteIds[2]].invisible) ClearWindowTilemap(13); - move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]; - sub_81C3E9C(move); + move = pssData->summary.moves[pssData->firstMoveIndex]; + PrintMoveDetails(move); schedule_bg_copy_tilemap_to_vram(0); sub_81C1DA4(9, -3); sub_81C1EFC(9, -3, move); @@ -1919,69 +2227,71 @@ void sub_81C1940(u8 taskId) } } -u8 sub_81C1B94() +u8 sub_81C1B94(void) { return gUnknown_0203CF21; } -void sub_81C1BA0() +static void sub_81C1BA0(void) { u16 *alloced = Alloc(32); u8 i; + for (i = 0; i < 4; i++) { - u8 j = i << 1; - if (i < gUnknown_0203CF1C->unk40C1) + u8 j = i * 2; + + if (i < pssData->minPageIndex) { - alloced[j+0] = 0x40; - alloced[j+1] = 0x40; - alloced[j+8] = 0x50; - alloced[j+9] = 0x50; + alloced[j + 0] = 0x40; + alloced[j + 1] = 0x40; + alloced[j + 8] = 0x50; + alloced[j + 9] = 0x50; } - else if (i > gUnknown_0203CF1C->unk40C2) + else if (i > pssData->maxPageIndex) { - alloced[j+0] = 0x4A; - alloced[j+1] = 0x4A; - alloced[j+8] = 0x5A; - alloced[j+9] = 0x5A; + alloced[j + 0] = 0x4A; + alloced[j + 1] = 0x4A; + alloced[j + 8] = 0x5A; + alloced[j + 9] = 0x5A; } - else if (i < gUnknown_0203CF1C->unk40C0) + else if (i < pssData->currPageIndex) { - alloced[j+0] = 0x46; - alloced[j+1] = 0x47; - alloced[j+8] = 0x56; - alloced[j+9] = 0x57; + alloced[j + 0] = 0x46; + alloced[j + 1] = 0x47; + alloced[j + 8] = 0x56; + alloced[j + 9] = 0x57; } - else if (i == gUnknown_0203CF1C->unk40C0) + else if (i == pssData->currPageIndex) { - if (i != gUnknown_0203CF1C->unk40C2) + if (i != pssData->maxPageIndex) { - alloced[j+0] = 0x41; - alloced[j+1] = 0x42; - alloced[j+8] = 0x51; - alloced[j+9] = 0x52; + alloced[j + 0] = 0x41; + alloced[j + 1] = 0x42; + alloced[j + 8] = 0x51; + alloced[j + 9] = 0x52; } else { - alloced[j+0] = 0x4B; - alloced[j+1] = 0x4C; - alloced[j+8] = 0x5B; - alloced[j+9] = 0x5C; + alloced[j + 0] = 0x4B; + alloced[j + 1] = 0x4C; + alloced[j + 8] = 0x5B; + alloced[j + 9] = 0x5C; } } - else if (i != gUnknown_0203CF1C->unk40C2) + else if (i != pssData->maxPageIndex) { - alloced[j+0] = 0x43; - alloced[j+1] = 0x44; - alloced[j+8] = 0x53; - alloced[j+9] = 0x54; + alloced[j + 0] = 0x43; + alloced[j + 1] = 0x44; + alloced[j + 8] = 0x53; + alloced[j + 9] = 0x54; } else { - alloced[j+0] = 0x48; - alloced[j+1] = 0x49; - alloced[j+8] = 0x58; - alloced[j+9] = 0x59; + alloced[j + 0] = 0x48; + alloced[j + 1] = 0x49; + alloced[j + 8] = 0x58; + alloced[j + 9] = 0x59; } } CopyToBgTilemapBufferRect_ChangePalette(3, alloced, 11, 0, 8, 2, 16); @@ -1989,181 +2299,42 @@ void sub_81C1BA0() Free(alloced); } -struct UnkStruct_61CC04 -{ - u8 *ptr; - u8 field_4; - u8 field_5; - u8 field_6; - u8 field_7; - u8 field_8; - u8 field_9; -}; - -#ifdef NONMATCHING -void sub_81C1CB0(struct UnkStruct_61CC04 *a, u16 *b, u8 c, u8 d) +static void sub_81C1CB0(const struct UnkStruct_61CC04 *unkStruct, u16 *dest, u8 c, bool8 d) { - u8 *alloced = Alloc(a->field_6 * (a->field_7 << 1)); - CpuFill16(a->field_4, alloced, a->field_7*a->field_6); - if (a->field_6 != c) + u16 i; + u16 *alloced = Alloc(unkStruct->field_6 * 2 * unkStruct->field_7); + CpuFill16(unkStruct->field_4, alloced, unkStruct->field_6 * 2 * unkStruct->field_7); + if (unkStruct->field_6 != c) { if (!d) { - for (d;d < a->field_7; d++) + for (i = 0; i < unkStruct->field_7; i++) { - CpuCopy16(&a->ptr + ((c + a->field_6*d)), alloced + ((a->field_6*d) << 1), (a->field_6 - c) * 2); + CpuCopy16(&unkStruct->ptr[c + unkStruct->field_6 * i], &alloced[unkStruct->field_6 * i], (unkStruct->field_6 - c) * 2); } } else { - for (d = 0;d < a->field_7; d++) + for (i = 0; i < unkStruct->field_7; i++) { - CpuCopy16(&a->ptr + (a->field_6*d), alloced + ((c + a->field_6*d) << 1), (a->field_6 - c) * 2); + CpuCopy16(&unkStruct->ptr[unkStruct->field_6 * i], &alloced[c + unkStruct->field_6 * i], (unkStruct->field_6 - c) * 2); } } } - d = 0; - while (d < a->field_7) + for (i = 0; i < unkStruct->field_7; i++) { - CpuCopy16(alloced + ((a->field_6*d) << 1), b + ((((a->field_9 + d) << 5) + a->field_8) << 1), a->field_6 * 2); - d++; + CpuCopy16(&alloced[unkStruct->field_6 * i], &dest[(unkStruct->field_9 + i) * 32 + unkStruct->field_8], unkStruct->field_6 * 2); } Free(alloced); } -#else -NAKED -void sub_81C1CB0(struct UnkStruct_61CC04 *a, u16 *b, u8 c, u8 d) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - sub sp, 0x4\n\ - adds r4, r0, 0\n\ - mov r8, r1\n\ - lsls r2, 24\n\ - lsrs r6, r2, 24\n\ - lsls r3, 24\n\ - lsrs r5, r3, 24\n\ - ldrb r1, [r4, 0x6]\n\ - ldrb r0, [r4, 0x7]\n\ - lsls r0, 1\n\ - muls r0, r1\n\ - bl Alloc\n\ - adds r7, r0, 0\n\ - mov r1, sp\n\ - ldrh r0, [r4, 0x4]\n\ - strh r0, [r1]\n\ - ldrb r1, [r4, 0x7]\n\ - ldrb r0, [r4, 0x6]\n\ - adds r2, r1, 0\n\ - muls r2, r0\n\ - movs r0, 0x80\n\ - lsls r0, 17\n\ - orrs r2, r0\n\ - mov r0, sp\n\ - adds r1, r7, 0\n\ - bl CpuSet\n\ - ldrb r0, [r4, 0x6]\n\ - cmp r0, r6\n\ - beq _081C1D60\n\ - cmp r5, 0\n\ - bne _081C1D30\n\ - movs r5, 0\n\ - ldrb r0, [r4, 0x7]\n\ - cmp r5, r0\n\ - bcs _081C1D60\n\ -_081C1D00:\n\ - ldrb r2, [r4, 0x6]\n\ - adds r1, r2, 0\n\ - muls r1, r5\n\ - adds r3, r6, r1\n\ - lsls r3, 1\n\ - ldr r0, [r4]\n\ - adds r0, r3\n\ - lsls r1, 1\n\ - adds r1, r7, r1\n\ - subs r2, r6\n\ - ldr r3, =0x001fffff\n\ - ands r2, r3\n\ - bl CpuSet\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - ldrb r3, [r4, 0x7]\n\ - cmp r5, r3\n\ - bcc _081C1D00\n\ - b _081C1D60\n\ - .pool\n\ -_081C1D30:\n\ - movs r5, 0\n\ - ldrb r0, [r4, 0x7]\n\ - cmp r5, r0\n\ - bcs _081C1D60\n\ -_081C1D38:\n\ - ldrb r2, [r4, 0x6]\n\ - adds r1, r2, 0\n\ - muls r1, r5\n\ - lsls r3, r1, 1\n\ - ldr r0, [r4]\n\ - adds r0, r3\n\ - adds r1, r6, r1\n\ - lsls r1, 1\n\ - adds r1, r7, r1\n\ - subs r2, r6\n\ - ldr r3, =0x001fffff\n\ - ands r2, r3\n\ - bl CpuSet\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - ldrb r3, [r4, 0x7]\n\ - cmp r5, r3\n\ - bcc _081C1D38\n\ -_081C1D60:\n\ - movs r5, 0\n\ - b _081C1D8A\n\ - .pool\n\ -_081C1D68:\n\ - ldrb r2, [r4, 0x6]\n\ - adds r0, r2, 0\n\ - muls r0, r5\n\ - lsls r0, 1\n\ - adds r0, r7, r0\n\ - ldrb r1, [r4, 0x9]\n\ - adds r1, r5\n\ - lsls r1, 5\n\ - ldrb r3, [r4, 0x8]\n\ - adds r1, r3\n\ - lsls r1, 1\n\ - add r1, r8\n\ - bl CpuSet\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ -_081C1D8A:\n\ - ldrb r0, [r4, 0x7]\n\ - cmp r5, r0\n\ - bcc _081C1D68\n\ - adds r0, r7, 0\n\ - bl Free\n\ - add sp, 0x4\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); -} -#endif - -void sub_81C1DA4(u16 a, s16 b) + +static void sub_81C1DA4(u16 a, s16 b) { if (b > gUnknown_0861CC04.field_6) b = gUnknown_0861CC04.field_6; if (b == 0 || b == gUnknown_0861CC04.field_6) { - sub_81C1CB0(&gUnknown_0861CC04, &gUnknown_0203CF1C->unkTilemap2[0], b, 1); + sub_81C1CB0(&gUnknown_0861CC04, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], b, 1); } else { @@ -2177,7 +2348,7 @@ void sub_81C1DA4(u16 a, s16 b) } } -void sub_81C1E20(u8 taskId) +static void sub_81C1E20(u8 taskId) { s16 *data = gTasks[taskId].data; data[1] += data[0]; @@ -2189,18 +2360,17 @@ void sub_81C1E20(u8 taskId) { data[1] = gUnknown_0861CC04.field_6; } - sub_81C1CB0(&gUnknown_0861CC04, &gUnknown_0203CF1C->unkTilemap2[0], data[1], 1); + sub_81C1CB0(&gUnknown_0861CC04, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], data[1], 1); if (data[1] <= 0 || data[1] >= gUnknown_0861CC04.field_6) { if (data[0] < 0) { - if (gUnknown_0203CF1C->unk40C0 == 2) + if (pssData->currPageIndex == 2) PutWindowTilemap(14); - } else { - if (!gSprites[gUnknown_0203CF1C->unk40D3[2]].invisible) + if (!gSprites[pssData->spriteIds[2]].invisible) PutWindowTilemap(13); PutWindowTilemap(19); } @@ -2211,12 +2381,12 @@ void sub_81C1E20(u8 taskId) schedule_bg_copy_tilemap_to_vram(2); } -void sub_81C1EFC(u16 a, s16 b, u16 move) +static void sub_81C1EFC(u16 a, s16 b, u16 move) { if (b > gUnknown_0861CC10.field_6) b = gUnknown_0861CC10.field_6; if (b == 0 || b == gUnknown_0861CC10.field_6) - sub_81C1CB0(&gUnknown_0861CC10, &gUnknown_0203CF1C->unkTilemap3[0], b, 1); + sub_81C1CB0(&gUnknown_0861CC10, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], b, 1); else { u8 taskId = FindTaskIdByFunc(sub_81C1F80); @@ -2228,7 +2398,7 @@ void sub_81C1EFC(u16 a, s16 b, u16 move) } } -void sub_81C1F80(u8 taskId) +static void sub_81C1F80(u8 taskId) { s16 *data = gTasks[taskId].data; data[1] += data[0]; @@ -2240,18 +2410,18 @@ void sub_81C1F80(u8 taskId) { data[1] = gUnknown_0861CC10.field_6; } - sub_81C1CB0(&gUnknown_0861CC10, &gUnknown_0203CF1C->unkTilemap3[0], data[1], 1); + sub_81C1CB0(&gUnknown_0861CC10, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], data[1], 1); if (data[1] <= 0 || data[1] >= gUnknown_0861CC10.field_6) { if (data[0] < 0) { - if (gUnknown_0203CF1C->unk40C0 == 3 && FuncIsActiveTask(sub_81C0B8C) == 0) + if (pssData->currPageIndex == 3 && FuncIsActiveTask(sub_81C0B8C) == 0) PutWindowTilemap(15); sub_81C240C(data[2]); } else { - if (!gSprites[gUnknown_0203CF1C->unk40D3[2]].invisible) + if (!gSprites[pssData->spriteIds[2]].invisible) { PutWindowTilemap(13); } @@ -2264,14 +2434,14 @@ void sub_81C1F80(u8 taskId) schedule_bg_copy_tilemap_to_vram(2); } -void sub_81C2074(u16 a, s16 b) +static void sub_81C2074(u16 a, s16 b) { if (b > gUnknown_0861CBEC.field_6) b = gUnknown_0861CBEC.field_6; if (b == 0 || b == gUnknown_0861CBEC.field_6) { - sub_81C1CB0(&gUnknown_0861CBEC, &gUnknown_0203CF1C->unkTilemap0[0], b, 0); - sub_81C1CB0(&gUnknown_0861CBF8, &gUnknown_0203CF1C->unkTilemap0[0], b, 0); + sub_81C1CB0(&gUnknown_0861CBEC, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0], b, 0); + sub_81C1CB0(&gUnknown_0861CBF8, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0], b, 0); } else { @@ -2281,7 +2451,7 @@ void sub_81C2074(u16 a, s16 b) } } -void sub_81C20F0(u8 taskId) +static void sub_81C20F0(u8 taskId) { s16 *data = gTasks[taskId].data; data[1] += data[0]; @@ -2289,14 +2459,14 @@ void sub_81C20F0(u8 taskId) data[1] = 0; else if (data[1] > gUnknown_0861CBEC.field_6) data[1] = gUnknown_0861CBEC.field_6; - sub_81C1CB0(&gUnknown_0861CBEC, &gUnknown_0203CF1C->unkTilemap0[0], data[1], 0); - sub_81C1CB0(&gUnknown_0861CBF8, &gUnknown_0203CF1C->unkTilemap0[0], data[1], 0); + sub_81C1CB0(&gUnknown_0861CBEC, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0], data[1], 0); + sub_81C1CB0(&gUnknown_0861CBF8, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0], data[1], 0); schedule_bg_copy_tilemap_to_vram(3); if (data[1] <= 0 || data[1] >= gUnknown_0861CBEC.field_6) { if (data[0] < 0) { - sub_81C4A88(); + CreateSetStatusSprite(); PutWindowTilemap(13); schedule_bg_copy_tilemap_to_vram(0); } @@ -2304,387 +2474,325 @@ void sub_81C20F0(u8 taskId) } } -// somebody send help this is a complete fucking mess -#ifdef NONMATCHING -void sub_81C2194(u16 *a, u16 b, u8 c) +static void sub_81C2194(u16 *output, u16 palette, bool8 c) { u16 i; - int var; - b *= 0x1000; + u32 var; + + palette *= 0x1000; var = 0x56A; if (c == 0) { for (i = 0; i < 20; i++) { - a[(i + var) << 1] = gSummaryScreenWindow_Tilemap[i] + b; - a[((i + var) << 1) + 0x40] = gSummaryScreenWindow_Tilemap[i] + b; - a[((i + var) << 1) + 0x80] = gSummaryScreenWindow_Tilemap[i + 20] + b; + output[var + i] = gSummaryScreenWindow_Tilemap[i] + palette; + output[var + i + 0x20] = gSummaryScreenWindow_Tilemap[i] + palette; + output[var + i + 0x40] = gSummaryScreenWindow_Tilemap[i + 20] + palette; } } else { for (i = 0; i < 20; i++) { - a[(i + var)] = gSummaryScreenWindow_Tilemap[i + 20] + b; - a[((i + var)) + 0x40] = gSummaryScreenWindow_Tilemap[i + 40] + b; - a[((i + var)) + 0x80] = gSummaryScreenWindow_Tilemap[i + 40] + b; - } - } -} -#else -NAKED -void sub_81C2194(u16 *a, u16 b, u8 c) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - adds r6, r0, 0\n\ - lsls r2, 24\n\ - lsls r1, 28\n\ - lsrs r4, r1, 16\n\ - ldr r7, =0x0000056a\n\ - cmp r2, 0\n\ - bne _081C21E4\n\ - movs r3, 0\n\ - ldr r5, =gSummaryScreenWindow_Tilemap\n\ -_081C21A8:\n\ - adds r2, r7, r3\n\ - lsls r2, 1\n\ - adds r2, r6\n\ - lsls r0, r3, 1\n\ - adds r0, r5\n\ - ldrh r1, [r0]\n\ - adds r1, r4, r1\n\ - strh r1, [r2]\n\ - adds r0, r2, 0\n\ - adds r0, 0x40\n\ - strh r1, [r0]\n\ - adds r2, 0x80\n\ - adds r0, r3, 0\n\ - adds r0, 0x14\n\ - lsls r0, 1\n\ - adds r0, r5\n\ - ldrh r0, [r0]\n\ - adds r0, r4, r0\n\ - strh r0, [r2]\n\ - adds r0, r3, 0x1\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - cmp r3, 0x13\n\ - bls _081C21A8\n\ - b _081C221C\n\ - .pool\n\ -_081C21E4:\n\ - movs r3, 0\n\ - ldr r5, =gSummaryScreenWindow_Tilemap\n\ -_081C21E8:\n\ - adds r1, r7, r3\n\ - lsls r1, 1\n\ - adds r1, r6\n\ - adds r0, r3, 0\n\ - adds r0, 0x14\n\ - lsls r0, 1\n\ - adds r0, r5\n\ - ldrh r0, [r0]\n\ - adds r0, r4, r0\n\ - strh r0, [r1]\n\ - adds r2, r1, 0\n\ - adds r2, 0x40\n\ - adds r0, r3, 0\n\ - adds r0, 0x28\n\ - lsls r0, 1\n\ - adds r0, r5\n\ - ldrh r0, [r0]\n\ - adds r0, r4, r0\n\ - strh r0, [r2]\n\ - adds r1, 0x80\n\ - strh r0, [r1]\n\ - adds r0, r3, 0x1\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - cmp r3, 0x13\n\ - bls _081C21E8\n\ -_081C221C:\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n\ - .syntax divided\n"); -} -#endif - -void sub_81C2228(struct Pokemon *mon) + output[var + i] = gSummaryScreenWindow_Tilemap[i + 20] + palette; + output[var + i + 0x20] = gSummaryScreenWindow_Tilemap[i + 40] + palette; + output[var + i + 0x40] = gSummaryScreenWindow_Tilemap[i + 40] + palette; + } + } +} + +static void sub_81C2228(struct Pokemon *mon) { if (!CheckPartyPokerus(mon, 0) && CheckPartyHasHadPokerus(mon, 0)) { - gUnknown_0203CF1C->unkTilemap0[0x223] = 0x2C; - gUnknown_0203CF1C->unkTilemap0_1[0x223] = 0x2C; + pssData->bgTilemapBuffers[PSS_PAGE_INFO][0][0x223] = 0x2C; + pssData->bgTilemapBuffers[PSS_PAGE_INFO][1][0x223] = 0x2C; } else { - gUnknown_0203CF1C->unkTilemap0[0x223] = 0x81A; - gUnknown_0203CF1C->unkTilemap0_1[0x223] = 0x81A; + pssData->bgTilemapBuffers[PSS_PAGE_INFO][0][0x223] = 0x81A; + pssData->bgTilemapBuffers[PSS_PAGE_INFO][1][0x223] = 0x81A; } schedule_bg_copy_tilemap_to_vram(3); } -void sub_81C228C(u8 a) +static void sub_81C228C(bool8 isMonShiny) { - if (a == 0) + if (!isMonShiny) sub_8199C30(3, 1, 4, 8, 8, 0); else sub_8199C30(3, 1, 4, 8, 8, 5); schedule_bg_copy_tilemap_to_vram(3); } -void sub_81C22CC(struct Pokemon *unused) +static void DrawExperienceProgressBar(struct Pokemon *unused) { - s64 r6r7; - struct PokeSummary *summary = &gUnknown_0203CF1C->summary; + s64 numExpProgressBarTicks; + struct PokeSummary *summary = &pssData->summary; u16 *r9; u8 i; if (summary->level < MAX_MON_LEVEL) { - u32 r1 = gExperienceTables[gBaseStats[summary->species].growthRate][summary->level + 1] - gExperienceTables[gBaseStats[summary->species].growthRate][summary->level]; - u32 r4 = summary->exp - gExperienceTables[gBaseStats[summary->species].growthRate][summary->level]; - - r6r7 = r4 * 64 / r1; - if (r6r7 == 0 && r4 != 0) - r6r7 = 1; + u32 expBetweenLevels = gExperienceTables[gBaseStats[summary->species].growthRate][summary->level + 1] - gExperienceTables[gBaseStats[summary->species].growthRate][summary->level]; + u32 expSinceLastLevel = summary->exp - gExperienceTables[gBaseStats[summary->species].growthRate][summary->level]; + + // Calculate the number of 1-pixel "ticks" to illuminate in the experience progress bar. + // There are 8 tiles that make up the bar, and each tile has 8 "ticks". Hence, the numerator + // is multiplied by 64. + numExpProgressBarTicks = expSinceLastLevel * 64 / expBetweenLevels; + if (numExpProgressBarTicks == 0 && expSinceLastLevel != 0) + numExpProgressBarTicks = 1; } else { - r6r7 = 0; + numExpProgressBarTicks = 0; } - r9 = &gUnknown_0203CF1C->unkTilemap1_1[0x255]; + r9 = &pssData->bgTilemapBuffers[PSS_PAGE_SKILLS][1][0x255]; for (i = 0; i < 8; i++) { - if (r6r7 > 7) + if (numExpProgressBarTicks > 7) r9[i] = 0x206A; else - r9[i] = 0x2062 + (r6r7 % 8); - r6r7 -= 8; - if (r6r7 < 0) - r6r7 = 0; + r9[i] = 0x2062 + (numExpProgressBarTicks % 8); + numExpProgressBarTicks -= 8; + if (numExpProgressBarTicks < 0) + numExpProgressBarTicks = 0; } - if (GetBgTilemapBuffer(1) == gUnknown_0203CF1C->unkTilemap1) + if (GetBgTilemapBuffer(1) == pssData->bgTilemapBuffers[PSS_PAGE_SKILLS][0]) schedule_bg_copy_tilemap_to_vram(1); else schedule_bg_copy_tilemap_to_vram(2); } -void sub_81C240C(u16 move) +static void sub_81C240C(u16 move) { - u16* r5 = &gUnknown_0203CF1C->unkTilemap3_1[0]; + u16 *tilemap = pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1]; u8 i; - u8 r4; + u8 effectValue; + if (move != MOVE_NONE) { - r4 = gContestEffects[gContestMoves[move].effect].appeal; - if (r4 != 0xFF) - r4 /= 10; - for (i = 0;i < 8; i++) + effectValue = gContestEffects[gContestMoves[move].effect].appeal; + + if (effectValue != 0xFF) + effectValue /= 10; + + for (i = 0; i < 8; i++) { - if (r4 != 0xFF && i < r4) + if (effectValue != 0xFF && i < effectValue) { - r5[((i>>2)*32)+(i&3)+0x1E6] = 0x103A; + tilemap[(i / 4 * 32) + (i & 3) + 0x1E6] = 0x103A; } else - r5[((i>>2)*32)+(i&3)+0x1E6] = 0x1039; + { + tilemap[(i / 4 * 32) + (i & 3) + 0x1E6] = 0x1039; + } } - r4 = gContestEffects[gContestMoves[move].effect].jam; - if (r4 != 0xFF) - r4 /= 10; - for (i = 0;i < 8; i++) + + effectValue = gContestEffects[gContestMoves[move].effect].jam; + + if (effectValue != 0xFF) + effectValue /= 10; + + for (i = 0; i < 8; i++) { - if (r4 != 0xFF && i < r4) + if (effectValue != 0xFF && i < effectValue) { - r5[((i>>2)*32)+(i&3)+0x226] = 0x103C; + tilemap[(i / 4 * 32) + (i & 3) + 0x226] = 0x103C; } else - r5[((i>>2)*32)+(i&3)+0x226] = 0x103D; + { + tilemap[(i / 4 * 32) + (i & 3) + 0x226] = 0x103D; + } } } } -void sub_81C2524() +static void sub_81C2524(void) { - if (gUnknown_0203CF1C->summary.isEgg != 0) + if (pssData->summary.isEgg) ChangeBgX(3, 0x10000, 0); else ChangeBgX(3, 0, 0); } -void sub_81C2554() +static void sub_81C2554(void) { u8 i; - InitWindows(&gUnknown_0861CC24); + InitWindows(gUnknown_0861CC24); DeactivateAllTextPrinters(); + for (i = 0; i < 20; i++) + { FillWindowPixelBuffer(i, 0); + } for (i = 0; i < 8; i++) - gUnknown_0203CF1C->unk40CB[i] |= 0xFF; + { + pssData->windowIds[i] = 0xFF; + } } -void sub_81C25A4(u8 a, const u8 *b, u8 c, u8 d, u8 e, u8 f) +static void SummaryScreen_PrintTextOnWindow(u8 windowId, const u8 *string, u8 x, u8 y, u8 lineSpacing, u8 colorId) { - AddTextPrinterParameterized2(a, 1, c, d, 0, e, gUnknown_0861CD2C[f], 0, b); + AddTextPrinterParameterized2(windowId, 1, x, y, 0, lineSpacing, sTextColors_861CD2C[colorId], 0, string); } -void sub_81C25E8() +static void sub_81C25E8(void) { FillWindowPixelBuffer(17, 0); FillWindowPixelBuffer(18, 0); FillWindowPixelBuffer(19, 0); - if (gUnknown_0203CF1C->summary.isEgg == 0) + if (!pssData->summary.isEgg) sub_81C2628(); else sub_81C2794(); schedule_bg_copy_tilemap_to_vram(0); } -void sub_81C2628() +static void sub_81C2628(void) { u8 strArray[16]; - struct Pokemon *mon = &gUnknown_0203CF1C->currentMon; - struct PokeSummary *summary = &gUnknown_0203CF1C->summary; - u16 r5 = SpeciesToPokedexNum(summary->species); - if (r5 != 0xFFFF) + struct Pokemon *mon = &pssData->currentMon; + struct PokeSummary *summary = &pssData->summary; + u16 dexNum = SpeciesToPokedexNum(summary->species); + if (dexNum != 0xFFFF) { StringCopy(gStringVar1, &gText_UnkCtrlF908Clear01[0]); - ConvertIntToDecimalStringN(gStringVar2, r5, 2, 3); + ConvertIntToDecimalStringN(gStringVar2, dexNum, 2, 3); StringAppend(gStringVar1, gStringVar2); - if (IsMonShiny(mon) == 0) + if (!IsMonShiny(mon)) { - sub_81C25A4(17, gStringVar1, 0, 1, 0, 1); - sub_81C228C(0); + SummaryScreen_PrintTextOnWindow(17, gStringVar1, 0, 1, 0, 1); + sub_81C228C(FALSE); } else { - sub_81C25A4(17, gStringVar1, 0, 1, 0, 7); - sub_81C228C(1); + SummaryScreen_PrintTextOnWindow(17, gStringVar1, 0, 1, 0, 7); + sub_81C228C(TRUE); } PutWindowTilemap(17); } else { ClearWindowTilemap(17); - if (IsMonShiny(mon) == 0) - sub_81C228C(0); + if (!IsMonShiny(mon)) + sub_81C228C(FALSE); else - sub_81C228C(1); + sub_81C228C(TRUE); } StringCopy(gStringVar1, &gText_LevelSymbol[0]); ConvertIntToDecimalStringN(gStringVar2, summary->level, 0, 3); StringAppend(gStringVar1, gStringVar2); - sub_81C25A4(19, gStringVar1, 0x18, 17, 0, 1); + SummaryScreen_PrintTextOnWindow(19, gStringVar1, 0x18, 17, 0, 1); GetMonNickname(mon, gStringVar1); - sub_81C25A4(18, gStringVar1, 0, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(18, gStringVar1, 0, 1, 0, 1); strArray[0] = CHAR_SLASH; StringCopy(&strArray[1], &gSpeciesNames[summary->species2][0]); - sub_81C25A4(19, &strArray[0], 0, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(19, &strArray[0], 0, 1, 0, 1); sub_81C27DC(mon, summary->species2); PutWindowTilemap(18); PutWindowTilemap(19); } -void sub_81C2794() +static void sub_81C2794(void) { - GetMonNickname(&gUnknown_0203CF1C->currentMon, gStringVar1); - sub_81C25A4(18, gStringVar1, 0, 1, 0, 1); + GetMonNickname(&pssData->currentMon, gStringVar1); + SummaryScreen_PrintTextOnWindow(18, gStringVar1, 0, 1, 0, 1); PutWindowTilemap(18); ClearWindowTilemap(17); ClearWindowTilemap(19); } -void sub_81C27DC(struct Pokemon *mon, u16 a) +static void sub_81C27DC(struct Pokemon *mon, u16 species) { - if (a != SPECIES_NIDORAN_M && a != SPECIES_NIDORAN_F) + if (species != SPECIES_NIDORAN_M && species != SPECIES_NIDORAN_F) { u8 gender = GetMonGender(mon); switch (gender) { - case 0: - sub_81C25A4(0x13, &gText_MaleSymbol[0], 0x39, 17, 0, 3); + case MON_MALE: + SummaryScreen_PrintTextOnWindow(19, gText_MaleSymbol, 57, 17, 0, 3); break; - case 0xFE: - sub_81C25A4(0x13, &gText_FemaleSymbol[0], 0x39, 17, 0, 4); + case MON_FEMALE: + SummaryScreen_PrintTextOnWindow(19, gText_FemaleSymbol, 57, 17, 0, 4); break; } } } -void sub_81C2838(u8 a, bool8 b, u32 c) -{ - BlitBitmapToWindow(a, (b) ? &gUnknown_0861CDD3[0] : &gUnknown_0861CDD3[0] - 0x80, c, 0, 16, 16); -} - -void sub_81C286C() -{ - int r4; - int r2; - int temp; - sub_81C25A4(0, gText_PkmnInfo, 2, 1, 0, 1); - sub_81C25A4(1, gText_PkmnSkills, 2, 1, 0, 1); - sub_81C25A4(2, gText_BattleMoves, 2, 1, 0, 1); - sub_81C25A4(3, gText_ContestMoves, 2, 1, 0, 1); - r4 = GetStringRightAlignXOffset(1, gText_Cancel2, 0x3E); - r2 = r4 - 16; - if (r2 < 0) - r2 = 0; - sub_81C2838(4, 0, r2); - sub_81C25A4(4, gText_Cancel2, r4, 1, 0, 0); - r4 = GetStringRightAlignXOffset(1, gText_Info, 0x3E); - r2 = r4 - 16; - if (r2 < 0) - r2 = 0; - sub_81C2838(5, 0, r2); - sub_81C25A4(5, gText_Info, r4, 1, 0, 0); - r4 = GetStringRightAlignXOffset(1, gText_Switch, 0x3E); - r2 = r4 - 16; - if (r2 < 0) - r2 = 0; - sub_81C2838(6, 0, r2); - sub_81C25A4(6, gText_Switch, r4, 1, 0, 0); - sub_81C25A4(8, gText_RentalPkmn, 0, 1, 0, 1); - sub_81C25A4(9, gText_TypeSlash, 0, 1, 0, 0); - temp = 6; - temp += GetStringCenterAlignXOffset(1, gText_HP4, 42); - sub_81C25A4(10, gText_HP4, temp, 1, 0, 1); - temp = 6; - temp += GetStringCenterAlignXOffset(1, gText_Attack3, 42); - sub_81C25A4(10, gText_Attack3, temp, 17, 0, 1); - temp = 6; - temp += GetStringCenterAlignXOffset(1, gText_Defense3, 42); - sub_81C25A4(10, gText_Defense3, temp, 33, 0, 1); - temp = 2; - temp += GetStringCenterAlignXOffset(1, gText_SpAtk4, 36); - sub_81C25A4(11, gText_SpAtk4, temp, 1, 0, 1); - temp = 2; - temp += GetStringCenterAlignXOffset(1, gText_SpDef4, 36); - sub_81C25A4(11, gText_SpDef4, temp, 17, 0, 1); - temp = 2; - temp += GetStringCenterAlignXOffset(1, gText_Speed2, 36); - sub_81C25A4(11, gText_Speed2, temp, 33, 0, 1); - sub_81C25A4(12, gText_ExpPoints, 6, 1, 0, 1); - sub_81C25A4(12, gText_NextLv, 6, 17, 0, 1); - sub_81C25A4(13, gText_Status, 2, 1, 0, 1); - sub_81C25A4(14, gText_Power, 0, 1, 0, 1); - sub_81C25A4(14, gText_Accuracy2, 0, 17, 0, 1); - sub_81C25A4(15, gText_Appeal, 0, 1, 0, 1); - sub_81C25A4(15, gText_Jam, 0, 17, 0, 1); -} - -void sub_81C2AFC(u8 a) +static void PrintAOrBButtonIcon(u8 windowId, bool8 bButton, u32 x) +{ + BlitBitmapToWindow(windowId, (bButton) ? gUnknown_0861CDD3 : gUnknown_0861CDD3 - 0x80, x, 0, 16, 16); +} + +static void PrintPageNamesAndStatsPageToWindows(void) +{ + int stringXPos; + int iconXPos; + int statsXPos; + + SummaryScreen_PrintTextOnWindow(0, gText_PkmnInfo, 2, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(1, gText_PkmnSkills, 2, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(2, gText_BattleMoves, 2, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(3, gText_ContestMoves, 2, 1, 0, 1); + + stringXPos = GetStringRightAlignXOffset(1, gText_Cancel2, 62); + iconXPos = stringXPos - 16; + if (iconXPos < 0) + iconXPos = 0; + PrintAOrBButtonIcon(4, FALSE, iconXPos); + SummaryScreen_PrintTextOnWindow(4, gText_Cancel2, stringXPos, 1, 0, 0); + + stringXPos = GetStringRightAlignXOffset(1, gText_Info, 0x3E); + iconXPos = stringXPos - 16; + if (iconXPos < 0) + iconXPos = 0; + PrintAOrBButtonIcon(5, FALSE, iconXPos); + SummaryScreen_PrintTextOnWindow(5, gText_Info, stringXPos, 1, 0, 0); + + stringXPos = GetStringRightAlignXOffset(1, gText_Switch, 0x3E); + iconXPos = stringXPos - 16; + if (iconXPos < 0) + iconXPos = 0; + PrintAOrBButtonIcon(6, FALSE, iconXPos); + SummaryScreen_PrintTextOnWindow(6, gText_Switch, stringXPos, 1, 0, 0); + + SummaryScreen_PrintTextOnWindow(8, gText_RentalPkmn, 0, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(9, gText_TypeSlash, 0, 1, 0, 0); + statsXPos = 6 + GetStringCenterAlignXOffset(1, gText_HP4, 42); + SummaryScreen_PrintTextOnWindow(10, gText_HP4, statsXPos, 1, 0, 1); + statsXPos = 6 + GetStringCenterAlignXOffset(1, gText_Attack3, 42); + SummaryScreen_PrintTextOnWindow(10, gText_Attack3, statsXPos, 17, 0, 1); + statsXPos = 6 + GetStringCenterAlignXOffset(1, gText_Defense3, 42); + SummaryScreen_PrintTextOnWindow(10, gText_Defense3, statsXPos, 33, 0, 1); + statsXPos = 2 + GetStringCenterAlignXOffset(1, gText_SpAtk4, 36); + SummaryScreen_PrintTextOnWindow(11, gText_SpAtk4, statsXPos, 1, 0, 1); + statsXPos = 2 + GetStringCenterAlignXOffset(1, gText_SpDef4, 36); + SummaryScreen_PrintTextOnWindow(11, gText_SpDef4, statsXPos, 17, 0, 1); + statsXPos = 2 + GetStringCenterAlignXOffset(1, gText_Speed2, 36); + SummaryScreen_PrintTextOnWindow(11, gText_Speed2, statsXPos, 33, 0, 1); + SummaryScreen_PrintTextOnWindow(12, gText_ExpPoints, 6, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(12, gText_NextLv, 6, 17, 0, 1); + SummaryScreen_PrintTextOnWindow(13, gText_Status, 2, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(14, gText_Power, 0, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(14, gText_Accuracy2, 0, 17, 0, 1); + SummaryScreen_PrintTextOnWindow(15, gText_Appeal, 0, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(15, gText_Jam, 0, 17, 0, 1); +} + +static void sub_81C2AFC(u8 a) { u8 i; + ClearWindowTilemap(0); ClearWindowTilemap(1); ClearWindowTilemap(2); ClearWindowTilemap(3); + switch (a) { case 0: @@ -2702,33 +2810,39 @@ void sub_81C2AFC(u8 a) break; case 2: PutWindowTilemap(2); - if (gUnknown_0203CF1C->unk40BC == 3) + if (pssData->mode == PSS_MODE_SELECT_MOVE) { - if(!(gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4)) + if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES) PutWindowTilemap(14); } else + { PutWindowTilemap(5); + } break; case 3: PutWindowTilemap(3); - if (gUnknown_0203CF1C->unk40BC == 3) + if (pssData->mode == PSS_MODE_SELECT_MOVE) { - if(!(gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4)) + if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES) PutWindowTilemap(15); } else + { PutWindowTilemap(5); + } break; } + for (i = 0; i < 8; i++) { - PutWindowTilemap(gUnknown_0203CF1C->unk40CB[i]); + PutWindowTilemap(pssData->windowIds[i]); } + schedule_bg_copy_tilemap_to_vram(0); } -void sub_81C2C38(u8 a) +static void sub_81C2C38(u8 a) { u8 i; switch (a) @@ -2745,43 +2859,51 @@ void sub_81C2C38(u8 a) ClearWindowTilemap(12); break; case 2: - if (gUnknown_0203CF1C->unk40BC == 3) + if (pssData->mode == PSS_MODE_SELECT_MOVE) { - if(!(gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4)) + if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES) ClearWindowTilemap(14); } else + { ClearWindowTilemap(5); + } break; case 3: - if (gUnknown_0203CF1C->unk40BC == 3) + if (pssData->mode == PSS_MODE_SELECT_MOVE) { - if(!(gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4)) + if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES) ClearWindowTilemap(15); } else + { ClearWindowTilemap(5); + } break; } + for (i = 0; i < 8; i++) - sub_81C2D68(i); + { + SummaryScreen_RemoveWindowByIndex(i); + } + schedule_bg_copy_tilemap_to_vram(0); } -u8 sub_81C2D2C(struct WindowTemplate *template, u8 a) +static u8 AddWindowFromTemplateList(const struct WindowTemplate *template, u8 templateId) { - u8 *windowIdPtr = &(gUnknown_0203CF1C->unk40CB[a]); + u8 *windowIdPtr = &(pssData->windowIds[templateId]); if (*windowIdPtr == 0xFF) { - *windowIdPtr = AddWindow(&template[a]); + *windowIdPtr = AddWindow(&template[templateId]); FillWindowPixelBuffer(*windowIdPtr, 0); } return *windowIdPtr; } -void sub_81C2D68(u8 a) +static void SummaryScreen_RemoveWindowByIndex(u8 windowIndex) { - u8 *windowIdPtr = &(gUnknown_0203CF1C->unk40CB[a]); + u8 *windowIdPtr = &(pssData->windowIds[windowIndex]); if (*windowIdPtr != 0xFF) { ClearWindowTilemap(*windowIdPtr); @@ -2790,302 +2912,259 @@ void sub_81C2D68(u8 a) } } -void sub_81C2D9C(u8 a) +static void sub_81C2D9C(u8 pageIndex) { u16 i; for (i = 0; i < 8; i++) { - if (gUnknown_0203CF1C->unk40CB[i] != 0xFF) - FillWindowPixelBuffer(gUnknown_0203CF1C->unk40CB[i], 0); + if (pssData->windowIds[i] != 0xFF) + FillWindowPixelBuffer(pssData->windowIds[i], 0); } - gUnknown_0861CE54[a](); + gUnknown_0861CE54[pageIndex](); } -void sub_81C2DE4(u8 a) +static void sub_81C2DE4(u8 pageIndex) { - CreateTask(gUnknown_0861CE64[a], 16); + CreateTask(gUnknown_0861CE64[pageIndex], 16); } -void sub_81C2E00() +static void sub_81C2E00(void) { - if (gUnknown_0203CF1C->summary.isEgg) + if (pssData->summary.isEgg) { - sub_81C335C(); - sub_81C33CC(); - sub_81C3428(); - sub_81C349C(); + PrintEggOTName(); + PrintEggOTID(); + PrintEggState(); + PrintEggMemo(); } else { - sub_81C2EC4(); - sub_81C2F5C(); - sub_81C2FD8(); - sub_81C302C(); - sub_81C307C(); - sub_81C3194(); + PrintMonOTName(); + PrintMonOTID(); + PrintMonAbilityName(); + PrintMonAbilityDescription(); + BufferMonTrainerMemo(); + PrintMonTrainerMemo(); } } -void sub_81C2E40(u8 taskId) +static void sub_81C2E40(u8 taskId) { s16 *data = gTasks[taskId].data; - s16 dataa = data[0] - 1; - switch (dataa) + switch (data[0]) { - case 0: - sub_81C2EC4(); - break; case 1: - sub_81C2F5C(); + PrintMonOTName(); break; case 2: - sub_81C2FD8(); + PrintMonOTID(); break; case 3: - sub_81C302C(); + PrintMonAbilityName(); break; case 4: - sub_81C307C(); + PrintMonAbilityDescription(); break; case 5: - sub_81C3194(); + BufferMonTrainerMemo(); break; case 6: + PrintMonTrainerMemo(); + break; + case 7: DestroyTask(taskId); return; } data[0]++; } -void sub_81C2EC4() +static void PrintMonOTName(void) { - u8 r5; - int r2; - if (sub_81A6BF4() != 1 && sub_81B9E94() != 1) + u8 windowId; + int x; + if (sub_81A6BF4() != TRUE && sub_81B9E94() != TRUE) { - r5 = sub_81C2D2C(&gUnknown_0861CCCC, 0); - sub_81C25A4(r5, gText_OTSlash, 0, 1, 0, 1); - r2 = GetStringWidth(1, gText_OTSlash, 0); - if (gUnknown_0203CF1C->summary.OTGender == 0) - sub_81C25A4(r5, gUnknown_0203CF1C->summary.OTName, r2, 1, 0, 5); + windowId = AddWindowFromTemplateList(gUnknown_0861CCCC, 0); + SummaryScreen_PrintTextOnWindow(windowId, gText_OTSlash, 0, 1, 0, 1); + x = GetStringWidth(1, gText_OTSlash, 0); + if (pssData->summary.OTGender == 0) + SummaryScreen_PrintTextOnWindow(windowId, pssData->summary.OTName, x, 1, 0, 5); else - sub_81C25A4(r5, gUnknown_0203CF1C->summary.OTName, r2, 1, 0, 6); + SummaryScreen_PrintTextOnWindow(windowId, pssData->summary.OTName, x, 1, 0, 6); } } -void sub_81C2F5C() +static void PrintMonOTID(void) { - int r4; + int xPos; if (sub_81A6BF4() != TRUE && sub_81B9E94() != TRUE) { - ConvertIntToDecimalStringN(StringCopy(gStringVar1, gText_UnkCtrlF907F908), (u16)gUnknown_0203CF1C->summary.OTID, 2, 5); - r4 = GetStringRightAlignXOffset(1, gStringVar1, 0x38); - sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 1), gStringVar1, r4, 1, 0, 1); + ConvertIntToDecimalStringN(StringCopy(gStringVar1, gText_UnkCtrlF907F908), (u16)pssData->summary.OTID, 2, 5); + xPos = GetStringRightAlignXOffset(1, gStringVar1, 56); + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 1), gStringVar1, xPos, 1, 0, 1); } } -void sub_81C2FD8() +static void PrintMonAbilityName(void) { - u8 ability = GetAbilityBySpecies(gUnknown_0203CF1C->summary.species, gUnknown_0203CF1C->summary.altAbility); - sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 2), gAbilityNames[ability], 0, 1, 0, 1); + u8 ability = GetAbilityBySpecies(pssData->summary.species, pssData->summary.altAbility); + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 2), gAbilityNames[ability], 0, 1, 0, 1); } -void sub_81C302C() +static void PrintMonAbilityDescription(void) { - u8 ability = GetAbilityBySpecies(gUnknown_0203CF1C->summary.species, gUnknown_0203CF1C->summary.altAbility); - sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 2), gAbilityDescriptionPointers[ability], 0, 17, 0, 0); + u8 ability = GetAbilityBySpecies(pssData->summary.species, pssData->summary.altAbility); + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 2), gAbilityDescriptionPointers[ability], 0, 17, 0, 0); } -void sub_81C307C() +static void BufferMonTrainerMemo(void) { - struct PokeSummary *sum = &gUnknown_0203CF1C->summary; - u8 *text; + struct PokeSummary *sum = &pssData->summary; + const u8 *text; + DynamicPlaceholderTextUtil_Reset(); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gUnknown_0861CE74); DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gUnknown_0861CE7B); - sub_81C31C0(); - if (sub_81A6BF4() == TRUE || sub_81B9E94() == TRUE || sub_81C3304() == TRUE) + BufferNatureString(); + + if (sub_81A6BF4() == TRUE || sub_81B9E94() == TRUE || IsInGamePartnerMon() == TRUE) + { DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_XNature); + } else { - u8 *alloced1 = Alloc(32); - u8 *alloced2 = Alloc(32); - sub_81C31F0(alloced1); - if (sum->metLocation <= 0xD4) + u8 *metLevelString = Alloc(32); + u8 *metLocationString = Alloc(32); + GetMetLevelString(metLevelString); + + if (sum->metLocation < MAPSEC_NONE) { - sub_8124610(alloced2, sum->metLocation); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, alloced2); + sub_8124610(metLocationString, sum->metLocation); + DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, metLocationString); } - if (sub_81C3220() == 1) + + if (DoesMonOTMatchOwner() == TRUE) { if (sum->metLevel == 0) - text = (sum->metLocation > 0xD4) ? gText_XNatureHatchedSomewhereAt : gText_XNatureHatchedAtYZ; + text = (sum->metLocation >= MAPSEC_NONE) ? gText_XNatureHatchedSomewhereAt : gText_XNatureHatchedAtYZ; else - text = (sum->metLocation > 0xD4) ? gText_XNatureMetSomewhereAt : gText_XNatureMetAtYZ; + text = (sum->metLocation >= MAPSEC_NONE) ? gText_XNatureMetSomewhereAt : gText_XNatureMetAtYZ; } - else if (sum->metLocation == 0xFF) + else if (sum->metLocation == MAPSEC_FATEFUL_ENCOUNTER) + { text = gText_XNatureFatefulEncounter; - else if (sum->metLocation != 0xFE && sub_81C32BC()) - text = (sum->metLocation > 0xD4) ? gText_XNatureObtainedInTrade : gText_XNatureProbablyMetAt; + } + else if (sum->metLocation != MAPSEC_IN_GAME_TRADE && DidMonComeFromGBAGames()) + { + text = (sum->metLocation >= MAPSEC_NONE) ? gText_XNatureObtainedInTrade : gText_XNatureProbablyMetAt; + } else + { text = gText_XNatureObtainedInTrade; + } + DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, text); - Free(alloced1); - Free(alloced2); + Free(metLevelString); + Free(metLocationString); } } -void sub_81C3194() +static void PrintMonTrainerMemo(void) { - sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 3), gStringVar4, 0, 1, 0, 0); + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 3), gStringVar4, 0, 1, 0, 0); } -void sub_81C31C0() +static void BufferNatureString(void) { - struct UnkSummaryStruct *sumStruct = gUnknown_0203CF1C; + struct UnkSummaryStruct *sumStruct = pssData; DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gNatureNamePointers[sumStruct->summary.nature]); DynamicPlaceholderTextUtil_SetPlaceholderPtr(5, gText_EmptyString5); } -void sub_81C31F0(u8 *a) +static void GetMetLevelString(u8 *output) { - u8 level = gUnknown_0203CF1C->summary.metLevel; + u8 level = pssData->summary.metLevel; if (level == 0) level = EGG_HATCH_LEVEL; - ConvertIntToDecimalStringN(a, level, 0, 3); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, a); + ConvertIntToDecimalStringN(output, level, 0, 3); + DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, output); } -u8 sub_81C3220() +static bool8 DoesMonOTMatchOwner(void) { - struct PokeSummary *sum = &gUnknown_0203CF1C->summary; - u32 r4; - u8 r5; - if (gUnknown_0203CF1C->unk0 == (union UnkUnion *)&gEnemyParty) + struct PokeSummary *sum = &pssData->summary; + u32 trainerId; + u8 gender; + + if (pssData->monList.mons == gEnemyParty) { - u8 multiID = GetMultiplayerId()^1; - r4 = (u16)gLinkPlayers[multiID].trainerId; - r5 = gLinkPlayers[multiID].gender; + u8 multiID = GetMultiplayerId() ^ 1; + trainerId = (u16)gLinkPlayers[multiID].trainerId; + gender = gLinkPlayers[multiID].gender; StringCopy(gStringVar1, gLinkPlayers[multiID].name); } else { - r4 = GetPlayerIDAsU32() & 0xFFFF; - r5 = gSaveBlock2Ptr->playerGender; + trainerId = GetPlayerIDAsU32() & 0xFFFF; + gender = gSaveBlock2Ptr->playerGender; StringCopy(gStringVar1, gSaveBlock2Ptr->playerName); } - if (r5 != sum->OTGender || r4 != (sum->OTID & 0xFFFF) || StringCompareWithoutExtCtrlCodes(gStringVar1, sum->OTName)) + if (gender != sum->OTGender || trainerId != (sum->OTID & 0xFFFF) || StringCompareWithoutExtCtrlCodes(gStringVar1, sum->OTName)) { - return 0; + return FALSE; } - return 1; + return TRUE; } -bool8 sub_81C32BC() +static bool8 DidMonComeFromGBAGames(void) { - struct PokeSummary *sum = &gUnknown_0203CF1C->summary; - u8 r0 = sum->metGame - 1; - if (r0 <= 4) + struct PokeSummary *sum = &pssData->summary; + if (sum->metGame > 0 && sum->metGame <= VERSION_LEAF_GREEN) return TRUE; return FALSE; } -bool8 sub_81C32E0() +bool8 DidMonComeFromRSE(void) { - struct PokeSummary *sum = &gUnknown_0203CF1C->summary; - u8 r0 = sum->metGame - 1; - if (r0 <= 2) + struct PokeSummary *sum = &pssData->summary; + if (sum->metGame > 0 && sum->metGame <= VERSION_EMERALD) return TRUE; return FALSE; } -bool8 sub_81C3304() +static bool8 IsInGamePartnerMon(void) { if ((gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) && gMain.inBattle) { - if (gUnknown_0203CF1C->unk40BE == 1 || gUnknown_0203CF1C->unk40BE == 4 || gUnknown_0203CF1C->unk40BE == 5) + if (pssData->curMonIndex == 1 || pssData->curMonIndex == 4 || pssData->curMonIndex == 5) return TRUE; } return FALSE; } -#ifdef NONMATCHING -void sub_81C335C() -{ - u8 r4 = sub_81C2D2C(&gUnknown_0861CCCC, 0); - u32 r5 = GetStringWidth(1, gText_OTSlash, 0); - sub_81C25A4(r4, gText_OTSlash, 0, 1, 0, 1); - sub_81C25A4(r4, gText_FiveMarks, r5, 1, 0, 1); -} -#else -NAKED -void sub_81C335C() -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5,r6}\n\ - sub sp, 0x8\n\ - ldr r0, =gUnknown_0861CCCC\n\ - movs r1, 0\n\ - bl sub_81C2D2C\n\ - adds r4, r0, 0\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - ldr r0, =gText_OTSlash\n\ - mov r8, r0\n\ - movs r0, 0x1\n\ - mov r1, r8\n\ - movs r2, 0\n\ - bl GetStringWidth\n\ - adds r5, r0, 0\n\ - movs r0, 0\n\ - mov r9, r0\n\ - str r0, [sp]\n\ - movs r6, 0x1\n\ - str r6, [sp, 0x4]\n\ - adds r0, r4, 0\n\ - mov r1, r8\n\ - movs r2, 0\n\ - movs r3, 0x1\n\ - bl sub_81C25A4\n\ - ldr r1, =gText_FiveMarks\n\ - lsls r5, 24\n\ - lsrs r5, 24\n\ - mov r0, r9\n\ - str r0, [sp]\n\ - str r6, [sp, 0x4]\n\ - adds r0, r4, 0\n\ - adds r2, r5, 0\n\ - movs r3, 0x1\n\ - bl sub_81C25A4\n\ - add sp, 0x8\n\ - pop {r3,r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n\ - .syntax divided\n"); -} -#endif - -void sub_81C33CC() -{ - int r4; +static void PrintEggOTName(void) +{ + u32 windowId = AddWindowFromTemplateList(gUnknown_0861CCCC, 0); + u32 width = GetStringWidth(1, gText_OTSlash, 0); + SummaryScreen_PrintTextOnWindow(windowId, gText_OTSlash, 0, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(windowId, gText_FiveMarks, width, 1, 0, 1); +} + +static void PrintEggOTID(void) +{ + int x; StringCopy(gStringVar1, gText_UnkCtrlF907F908); StringAppend(gStringVar1, gText_FiveMarks); - r4 = GetStringRightAlignXOffset(1, gStringVar1, 0x38); - sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 1), gStringVar1, r4, 1, 0, 1); + x = GetStringRightAlignXOffset(1, gStringVar1, 56); + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 1), gStringVar1, x, 1, 0, 1); } -void sub_81C3428() +static void PrintEggState(void) { - u8 *text; - struct PokeSummary *sum = &gUnknown_0203CF1C->summary; - if (gUnknown_0203CF1C->summary.sanity == 1) + const u8 *text; + struct PokeSummary *sum = &pssData->summary; + + if (pssData->summary.sanity == TRUE) text = gText_EggWillTakeALongTime; else if (sum->friendship <= 5) text = gText_EggAboutToHatch; @@ -3095,141 +3174,158 @@ void sub_81C3428() text = gText_EggWillTakeSomeTime; else text = gText_EggWillTakeALongTime; - sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 2), text, 0, 1, 0, 0); + + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 2), text, 0, 1, 0, 0); } -void sub_81C349C() +static void PrintEggMemo(void) { - u8 *text; - struct PokeSummary *sum = &gUnknown_0203CF1C->summary; - if (gUnknown_0203CF1C->summary.sanity != 1) + const u8 *text; + struct PokeSummary *sum = &pssData->summary; + + if (pssData->summary.sanity != 1) { - if (sum->metLocation == 0xFF) + if (sum->metLocation == MAPSEC_FATEFUL_ENCOUNTER) text = gText_PeculiarEggNicePlace; - else if (sub_81C32BC() == 0 || sub_81C3220() == 0) + else if (DidMonComeFromGBAGames() == FALSE || DoesMonOTMatchOwner() == FALSE) text = gText_PeculiarEggTrade; - else if (sum->metLocation == 0xFD) - text = (sub_81C32E0() == TRUE) ? gText_EggFromHotSprings : gText_EggFromTraveler; + else if (sum->metLocation == MAPSEC_SPECIAL_EGG) + text = (DidMonComeFromRSE() == TRUE) ? gText_EggFromHotSprings : gText_EggFromTraveler; else text = gText_OddEggFoundByCouple; } else + { text = gText_OddEggFoundByCouple; - sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 3), text, 0, 1, 0, 0); + } + + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 3), text, 0, 1, 0, 0); } -void sub_81C3530() +static void sub_81C3530(void) { - sub_81C35E4(); - sub_81C3690(); - sub_81C3710(); - sub_81C37D8(); - sub_81C3808(); - sub_81C3890(); - sub_81C38C0(); + PrintHeldItemName(); + PrintRibbonCount(); + BufferLeftColumnStats(); + PrintLeftColumnStats(); + BufferRightColumnStats(); + PrintRightColumnStats(); + PrintExpPointsNextLevel(); } -void sub_81C3554(u8 taskId) +static void sub_81C3554(u8 taskId) { s16 *data = gTasks[taskId].data; - s16 dataa = data[0] - 1; - switch (dataa) + + switch (data[0]) { - case 0: - sub_81C35E4(); - break; case 1: - sub_81C3690(); + PrintHeldItemName(); break; case 2: - sub_81C3710(); + PrintRibbonCount(); break; case 3: - sub_81C37D8(); + BufferLeftColumnStats(); break; case 4: - sub_81C3808(); + PrintLeftColumnStats(); break; case 5: - sub_81C3890(); + BufferRightColumnStats(); break; case 6: - sub_81C38C0(); + PrintRightColumnStats(); break; case 7: + PrintExpPointsNextLevel(); + break; + case 8: DestroyTask(taskId); return; } data[0]++; } -void sub_81C35E4() +static void PrintHeldItemName(void) { const u8 *text; int offset; - if (gUnknown_0203CF1C->summary.item == ITEM_ENIGMA_BERRY && sub_81B1250() == 1 && (gUnknown_0203CF1C->unk40BE == 1 || gUnknown_0203CF1C->unk40BE == 4 || gUnknown_0203CF1C->unk40BE == 5)) + + if (pssData->summary.item == ITEM_ENIGMA_BERRY && sub_81B1250() == TRUE && (pssData->curMonIndex == 1 || pssData->curMonIndex == 4 || pssData->curMonIndex == 5)) { text = ItemId_GetName(ITEM_ENIGMA_BERRY); } - else if (gUnknown_0203CF1C->summary.item == ITEM_NONE) + else if (pssData->summary.item == ITEM_NONE) + { text = gText_None; + } else { - CopyItemName(gUnknown_0203CF1C->summary.item, gStringVar1); + CopyItemName(pssData->summary.item, gStringVar1); text = gStringVar1; } - offset = GetStringCenterAlignXOffset(1, text, 0x48) + 6; - sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCEC, 0), text, offset, 1, 0, 0); + + offset = GetStringCenterAlignXOffset(1, text, 72) + 6; + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCEC, 0), text, offset, 1, 0, 0); } -void sub_81C3690() +static void PrintRibbonCount(void) { - u8 *text; + const u8 *text; int offset; - if (gUnknown_0203CF1C->summary.ribbons == 0) + + if (pssData->summary.ribbonCount == 0) + { text = gText_None; + } else { - ConvertIntToDecimalStringN(gStringVar1, gUnknown_0203CF1C->summary.ribbons, 1, 2); + ConvertIntToDecimalStringN(gStringVar1, pssData->summary.ribbonCount, 1, 2); StringExpandPlaceholders(gStringVar4, gText_RibbonsVar1); text = gStringVar4; } - offset = GetStringCenterAlignXOffset(1, text, 0x46) + 6; - sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCEC, 1), text, offset, 1, 0, 0); + + offset = GetStringCenterAlignXOffset(1, text, 70) + 6; + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCEC, 1), text, offset, 1, 0, 0); } -void sub_81C3710() +static void BufferLeftColumnStats(void) { - u8 *alloced1 = Alloc(8); - u8 *alloced2 = Alloc(8); - u8 *alloced3 = Alloc(8); - u8 *alloced4 = Alloc(8); - ConvertIntToDecimalStringN(alloced1, gUnknown_0203CF1C->summary.currentHP, 1, 3); - ConvertIntToDecimalStringN(alloced2, gUnknown_0203CF1C->summary.maxHP, 1, 3); - ConvertIntToDecimalStringN(alloced3, gUnknown_0203CF1C->summary.atk, 1, 7); - ConvertIntToDecimalStringN(alloced4, gUnknown_0203CF1C->summary.def, 1, 7); + u8 *currentHPString = Alloc(8); + u8 *maxHPString = Alloc(8); + u8 *attackString = Alloc(8); + u8 *defenseString = Alloc(8); + + ConvertIntToDecimalStringN(currentHPString, pssData->summary.currentHP, 1, 3); + ConvertIntToDecimalStringN(maxHPString, pssData->summary.maxHP, 1, 3); + ConvertIntToDecimalStringN(attackString, pssData->summary.atk, 1, 7); + ConvertIntToDecimalStringN(defenseString, pssData->summary.def, 1, 7); + DynamicPlaceholderTextUtil_Reset(); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, alloced1); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, alloced2); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, alloced3); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, alloced4); + DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, currentHPString); + DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, maxHPString); + DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, attackString); + DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, defenseString); DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_0861CE82); - Free(alloced1); - Free(alloced2); - Free(alloced3); - Free(alloced4); + + Free(currentHPString); + Free(maxHPString); + Free(attackString); + Free(defenseString); } -void sub_81C37D8() +static void PrintLeftColumnStats(void) { - sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCEC, 2), gStringVar4, 4, 1, 0, 0); + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCEC, 2), gStringVar4, 4, 1, 0, 0); } -void sub_81C3808() +static void BufferRightColumnStats(void) { - ConvertIntToDecimalStringN(gStringVar1, gUnknown_0203CF1C->summary.spatk, 1, 3); - ConvertIntToDecimalStringN(gStringVar2, gUnknown_0203CF1C->summary.spdef, 1, 3); - ConvertIntToDecimalStringN(gStringVar3, gUnknown_0203CF1C->summary.speed, 1, 3); + ConvertIntToDecimalStringN(gStringVar1, pssData->summary.spatk, 1, 3); + ConvertIntToDecimalStringN(gStringVar2, pssData->summary.spdef, 1, 3); + ConvertIntToDecimalStringN(gStringVar3, pssData->summary.speed, 1, 3); + DynamicPlaceholderTextUtil_Reset(); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1); DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gStringVar2); @@ -3237,317 +3333,183 @@ void sub_81C3808() DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_0861CE8E); } -void sub_81C3890() +static void PrintRightColumnStats(void) { - sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCEC, 3), gStringVar4, 2, 1, 0, 0); + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCEC, 3), gStringVar4, 2, 1, 0, 0); } -void sub_81C38C0() +static void PrintExpPointsNextLevel(void) { - struct PokeSummary *sum = &gUnknown_0203CF1C->summary; - u8 r6 = sub_81C2D2C(&gUnknown_0861CCEC, 4); + struct PokeSummary *sum = &pssData->summary; + u8 windowId = AddWindowFromTemplateList(gUnknown_0861CCEC, 4); int offset; u32 expToNextLevel; + ConvertIntToDecimalStringN(gStringVar1, sum->exp, 1, 7); - offset = GetStringRightAlignXOffset(1, gStringVar1, 0x2A) + 2; - sub_81C25A4(r6, gStringVar1, offset, 1, 0, 0); + offset = GetStringRightAlignXOffset(1, gStringVar1, 42) + 2; + SummaryScreen_PrintTextOnWindow(windowId, gStringVar1, offset, 1, 0, 0); + if (sum->level < MAX_MON_LEVEL) expToNextLevel = gExperienceTables[gBaseStats[sum->species].growthRate][sum->level + 1] - sum->exp; else expToNextLevel = 0; + ConvertIntToDecimalStringN(gStringVar1, expToNextLevel, 1, 6); - offset = GetStringRightAlignXOffset(1, gStringVar1, 0x2A) + 2; - sub_81C25A4(r6, gStringVar1, offset, 17, 0, 0); + offset = GetStringRightAlignXOffset(1, gStringVar1, 42) + 2; + SummaryScreen_PrintTextOnWindow(windowId, gStringVar1, offset, 17, 0, 0); } -void sub_81C3984() +static void sub_81C3984(void) { - sub_81C3B08(0); - sub_81C3B08(1); - sub_81C3B08(2); - sub_81C3B08(3); - if (gUnknown_0203CF1C->unk40BC == 3) + PrintMoveNameAndPP(0); + PrintMoveNameAndPP(1); + PrintMoveNameAndPP(2); + PrintMoveNameAndPP(3); + + if (pssData->mode == PSS_MODE_SELECT_MOVE) { - sub_81C3F44(); - if (gUnknown_0203CF1C->unk40C6 == 4) + PrintNewMoveDetailsOrCancelText(); + if (pssData->firstMoveIndex == MAX_MON_MOVES) { - if (gUnknown_0203CF1C->unk40C4 != 0) - sub_81C3E9C(gUnknown_0203CF1C->unk40C4); + if (pssData->newMove != MOVE_NONE) + PrintMoveDetails(pssData->newMove); } else - sub_81C3E9C(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]); + { + PrintMoveDetails(pssData->summary.moves[pssData->firstMoveIndex]); + } } } -void sub_81C39F0(u8 taskId) +static void sub_81C39F0(u8 taskId) { s16 *data = gTasks[taskId].data; - s16 dataa = data[0] - 1; - switch (dataa) + switch (data[0]) { - case 0: - sub_81C3B08(0); - break; case 1: - sub_81C3B08(1); + PrintMoveNameAndPP(0); break; case 2: - sub_81C3B08(2); + PrintMoveNameAndPP(1); break; case 3: - sub_81C3B08(3); + PrintMoveNameAndPP(2); break; case 4: - if (gUnknown_0203CF1C->unk40BC == 3) - sub_81C3F44(); + PrintMoveNameAndPP(3); break; case 5: - if (gUnknown_0203CF1C->unk40BC == 3) + if (pssData->mode == PSS_MODE_SELECT_MOVE) + PrintNewMoveDetailsOrCancelText(); + break; + case 6: + if (pssData->mode == PSS_MODE_SELECT_MOVE) { - if (gUnknown_0203CF1C->unk40C6 == 4) - data[1] = gUnknown_0203CF1C->unk40C4; + if (pssData->firstMoveIndex == MAX_MON_MOVES) + data[1] = pssData->newMove; else - data[1] = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]; + data[1] = pssData->summary.moves[pssData->firstMoveIndex]; } break; - case 6: - if (gUnknown_0203CF1C->unk40BC == 3) + case 7: + if (pssData->mode == PSS_MODE_SELECT_MOVE) { - if (!(gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4)) - sub_81C3E9C(data[1]); + if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES) + PrintMoveDetails(data[1]); } break; - case 7: + case 8: DestroyTask(taskId); return; } data[0]++; } -#ifdef NONMATCHING -void sub_81C3B08(u8 a) +static void PrintMoveNameAndPP(u8 moveIndex) { - struct UnkSummaryStruct *r10 = gUnknown_0203CF1C; - u8 r8 = sub_81C2D2C(&gUnknown_0861CD14, 0); - u8 sp = sub_81C2D2C(&gUnknown_0861CD14, 1); - u8 r6; - u8 r5; - u8 *text; - int offset; - u16 move; - if (r10->summary.moves[a] != 0) + u8 pp; + u32 ppState; + const u8 *text; + u32 offset; + struct UnkSummaryStruct *summaryStruct = pssData; + u8 moveNameWindowId = AddWindowFromTemplateList(gUnknown_0861CD14, 0); + u8 ppValueWindowId = AddWindowFromTemplateList(gUnknown_0861CD14, 1); + u16 move = summaryStruct->summary.moves[moveIndex]; + + if (move != 0) { - move = r10->summary.moves[a]; - r6 = CalculatePPWithBonus(move, r10->summary.ppBonuses, a); - sub_81C25A4(r8, gMoveNames[move], 0, (a<<4) + 1, 0, 1); - ConvertIntToDecimalStringN(gStringVar1, r10->summary.pp[a], 1, 2); - ConvertIntToDecimalStringN(gStringVar2, r6, 1, 2); + pp = CalculatePPWithBonus(move, summaryStruct->summary.ppBonuses, moveIndex); + SummaryScreen_PrintTextOnWindow(moveNameWindowId, gMoveNames[move], 0, moveIndex * 16 + 1, 0, 1); + ConvertIntToDecimalStringN(gStringVar1, summaryStruct->summary.pp[moveIndex], 1, 2); + ConvertIntToDecimalStringN(gStringVar2, pp, 1, 2); DynamicPlaceholderTextUtil_Reset(); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1); DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gStringVar2); DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_0861CE97); text = gStringVar4; - r5 = GetCurrentPpToMaxPpState(r10->summary.pp[a], r6) + 9; - offset = GetStringRightAlignXOffset(1, text, 0x2C); + ppState = GetCurrentPpToMaxPpState(summaryStruct->summary.pp[moveIndex], pp) + 9; + offset = GetStringRightAlignXOffset(1, text, 44); } else { - sub_81C25A4(r8, gText_OneDash, 0, (a<<4) + 1, 0, 1); + SummaryScreen_PrintTextOnWindow(moveNameWindowId, gText_OneDash, 0, moveIndex * 16 + 1, 0, 1); text = gText_TwoDashes; - r5 = 12; - offset = GetStringCenterAlignXOffset(1, text, 0x2C); - } - sub_81C25A4(sp, text, offset, (a<<4), 0, r5); -} -#else -NAKED -void sub_81C3B08(u8 a) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0xC\n\ - lsls r0, 24\n\ - lsrs r7, r0, 24\n\ - ldr r0, =gUnknown_0203CF1C\n\ - ldr r0, [r0]\n\ - mov r10, r0\n\ - ldr r4, =gUnknown_0861CD14\n\ - adds r0, r4, 0\n\ - movs r1, 0\n\ - bl sub_81C2D2C\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r8, r0\n\ - adds r0, r4, 0\n\ - movs r1, 0x1\n\ - bl sub_81C2D2C\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - str r0, [sp, 0x8]\n\ - lsls r1, r7, 1\n\ - mov r0, r10\n\ - adds r0, 0x84\n\ - adds r0, r1\n\ - ldrh r5, [r0]\n\ - cmp r5, 0\n\ - beq _081C3C00\n\ - mov r0, r10\n\ - adds r0, 0xA4\n\ - ldrb r1, [r0]\n\ - adds r0, r5, 0\n\ - adds r2, r7, 0\n\ - bl CalculatePPWithBonus\n\ - adds r6, r0, 0\n\ - lsls r6, 24\n\ - lsrs r6, 24\n\ - movs r0, 0xD\n\ - adds r1, r5, 0\n\ - muls r1, r0\n\ - ldr r0, =gMoveNames\n\ - adds r1, r0\n\ - lsls r0, r7, 4\n\ - mov r9, r0\n\ - mov r3, r9\n\ - adds r3, 0x1\n\ - lsls r3, 24\n\ - lsrs r3, 24\n\ - movs r0, 0\n\ - str r0, [sp]\n\ - movs r0, 0x1\n\ - str r0, [sp, 0x4]\n\ - mov r0, r8\n\ - movs r2, 0\n\ - bl sub_81C25A4\n\ - ldr r0, =gStringVar1\n\ - mov r8, r0\n\ - mov r5, r10\n\ - adds r5, 0x8C\n\ - adds r5, r7\n\ - ldrb r1, [r5]\n\ - movs r2, 0x1\n\ - movs r3, 0x2\n\ - bl ConvertIntToDecimalStringN\n\ - ldr r4, =gStringVar2\n\ - adds r0, r4, 0\n\ - adds r1, r6, 0\n\ - movs r2, 0x1\n\ - movs r3, 0x2\n\ - bl ConvertIntToDecimalStringN\n\ - bl DynamicPlaceholderTextUtil_Reset\n\ - movs r0, 0\n\ - mov r1, r8\n\ - bl DynamicPlaceholderTextUtil_SetPlaceholderPtr\n\ - movs r0, 0x1\n\ - adds r1, r4, 0\n\ - bl DynamicPlaceholderTextUtil_SetPlaceholderPtr\n\ - ldr r4, =gStringVar4\n\ - ldr r1, =gUnknown_0861CE97\n\ - adds r0, r4, 0\n\ - bl DynamicPlaceholderTextUtil_ExpandPlaceholders\n\ - adds r7, r4, 0\n\ - ldrb r0, [r5]\n\ - adds r1, r6, 0\n\ - bl GetCurrentPpToMaxPpState\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - adds r5, r0, 0\n\ - adds r5, 0x9\n\ - movs r0, 0x1\n\ - adds r1, r7, 0\n\ - movs r2, 0x2C\n\ - bl GetStringRightAlignXOffset\n\ - mov r4, r9\n\ - b _081C3C26\n\ - .pool\n\ -_081C3C00:\n\ - ldr r1, =gText_OneDash\n\ - lsls r4, r7, 4\n\ - adds r3, r4, 0x1\n\ - lsls r3, 24\n\ - lsrs r3, 24\n\ - str r5, [sp]\n\ - movs r0, 0x1\n\ - str r0, [sp, 0x4]\n\ - mov r0, r8\n\ - movs r2, 0\n\ - bl sub_81C25A4\n\ - ldr r7, =gText_TwoDashes\n\ - movs r5, 0xC\n\ - movs r0, 0x1\n\ - adds r1, r7, 0\n\ - movs r2, 0x2C\n\ - bl GetStringCenterAlignXOffset\n\ -_081C3C26:\n\ - lsls r2, r0, 24\n\ - lsrs r2, 24\n\ - adds r3, r4, 0x1\n\ - lsls r3, 24\n\ - lsrs r3, 24\n\ - movs r0, 0\n\ - str r0, [sp]\n\ - lsls r0, r5, 24\n\ - lsrs r0, 24\n\ - str r0, [sp, 0x4]\n\ - ldr r0, [sp, 0x8]\n\ - adds r1, r7, 0\n\ - bl sub_81C25A4\n\ - add sp, 0xC\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n\ - .syntax divided\n"); -} -#endif - -void sub_81C3C5C(u16 move) -{ - u8 *text; - if (move != 0) + ppState = 12; + offset = GetStringCenterAlignXOffset(1, text, 44); + } + + SummaryScreen_PrintTextOnWindow(ppValueWindowId, text, offset, moveIndex * 16 + 1, 0, ppState); +} + +static void PrintMovePowerAndAccuracy(u16 moveIndex) +{ + const u8 *text; + if (moveIndex != 0) { - FillWindowPixelRect(14, 0, 0x35, 0, 0x13, 0x20); - if (gBattleMoves[move].power <= 1) + FillWindowPixelRect(14, 0, 53, 0, 19, 32); + + if (gBattleMoves[moveIndex].power < 2) + { text = gText_ThreeDashes; + } else { - ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].power, 1, 3); + ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[moveIndex].power, 1, 3); text = gStringVar1; } - sub_81C25A4(14, text, 0x35, 1, 0, 0); - if (gBattleMoves[move].accuracy == 0) + + SummaryScreen_PrintTextOnWindow(14, text, 53, 1, 0, 0); + + if (gBattleMoves[moveIndex].accuracy == 0) + { text = gText_ThreeDashes; + } else { - ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].accuracy, 1, 3); + ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[moveIndex].accuracy, 1, 3); text = gStringVar1; } - sub_81C25A4(14, text, 0x35, 17, 0, 0); + + SummaryScreen_PrintTextOnWindow(14, text, 53, 17, 0, 0); } } -void sub_81C3D08() +static void sub_81C3D08(void) { - sub_81C3B08(0); - sub_81C3B08(1); - sub_81C3B08(2); - sub_81C3B08(3); - if (gUnknown_0203CF1C->unk40BC == 3) + PrintMoveNameAndPP(0); + PrintMoveNameAndPP(1); + PrintMoveNameAndPP(2); + PrintMoveNameAndPP(3); + + if (pssData->mode == PSS_MODE_SELECT_MOVE) { - sub_81C3F44(); - sub_81C3E2C(gUnknown_0203CF1C->unk40C6); + PrintNewMoveDetailsOrCancelText(); + PrintContestMoveDescription(pssData->firstMoveIndex); } } -void sub_81C3D54(u8 taskId) +static void sub_81C3D54(u8 taskId) { s16 *data = gTasks[taskId].data; s16 dataa = data[0] - 1; @@ -3555,26 +3517,26 @@ void sub_81C3D54(u8 taskId) switch (dataa) { case 0: - sub_81C3B08(0); + PrintMoveNameAndPP(0); break; case 1: - sub_81C3B08(1); + PrintMoveNameAndPP(1); break; case 2: - sub_81C3B08(2); + PrintMoveNameAndPP(2); break; case 3: - sub_81C3B08(3); + PrintMoveNameAndPP(3); break; case 4: - if (gUnknown_0203CF1C->unk40BC == 3) - sub_81C3F44(); + if (pssData->mode == PSS_MODE_SELECT_MOVE) + PrintNewMoveDetailsOrCancelText(); break; case 5: - if (gUnknown_0203CF1C->unk40BC == 3) + if (pssData->mode == PSS_MODE_SELECT_MOVE) { - if (!(gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4)) - sub_81C3E2C(gUnknown_0203CF1C->unk40C6); + if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES) + PrintContestMoveDescription(pssData->firstMoveIndex); } break; case 6: @@ -3584,36 +3546,36 @@ void sub_81C3D54(u8 taskId) data[0]++; } -void sub_81C3E2C(u8 moveSlot) +static void PrintContestMoveDescription(u8 moveSlot) { u16 move; if (moveSlot == 4) - move = gUnknown_0203CF1C->unk40C4; + move = pssData->newMove; else - move = gUnknown_0203CF1C->summary.moves[moveSlot]; + move = pssData->summary.moves[moveSlot]; if (move != MOVE_NONE) { - u8 windowId = sub_81C2D2C(&gUnknown_0861CD14, 2); - sub_81C25A4(windowId, gContestEffectDescriptionPointers[gContestMoves[move].effect], 6, 1, 0, 0); + u8 windowId = AddWindowFromTemplateList(gUnknown_0861CD14, 2); + SummaryScreen_PrintTextOnWindow(windowId, gContestEffectDescriptionPointers[gContestMoves[move].effect], 6, 1, 0, 0); } } -void sub_81C3E9C(u16 move) +static void PrintMoveDetails(u16 move) { - u8 windowId = sub_81C2D2C(&gUnknown_0861CD14, 2); + u8 windowId = AddWindowFromTemplateList(gUnknown_0861CD14, 2); FillWindowPixelBuffer(windowId, 0); if (move != MOVE_NONE) { - if (gUnknown_0203CF1C->unk40C0 == 2) + if (pssData->currPageIndex == 2) { - sub_81C3C5C(move); - sub_81C25A4(windowId, gMoveDescriptionPointers[move - 1], 6, 1, 0, 0); + PrintMovePowerAndAccuracy(move); + SummaryScreen_PrintTextOnWindow(windowId, gMoveDescriptionPointers[move - 1], 6, 1, 0, 0); } else { - sub_81C25A4(windowId, gContestEffectDescriptionPointers[gContestMoves[move].effect], 6, 1, 0, 0); + SummaryScreen_PrintTextOnWindow(windowId, gContestEffectDescriptionPointers[gContestMoves[move].effect], 6, 1, 0, 0); } PutWindowTilemap(windowId); } @@ -3625,96 +3587,100 @@ void sub_81C3E9C(u16 move) schedule_bg_copy_tilemap_to_vram(0); } -void sub_81C3F44(void) +static void PrintNewMoveDetailsOrCancelText(void) { - u8 windowId1 = sub_81C2D2C(&gUnknown_0861CD14, 0); - u8 windowId2 = sub_81C2D2C(&gUnknown_0861CD14, 1); - if (gUnknown_0203CF1C->unk40C4 == MOVE_NONE) + u8 windowId1 = AddWindowFromTemplateList(gUnknown_0861CD14, 0); + u8 windowId2 = AddWindowFromTemplateList(gUnknown_0861CD14, 1); + + if (pssData->newMove == MOVE_NONE) { - sub_81C25A4(windowId1, gText_Cancel, 0, 0x41, 0, 1); + SummaryScreen_PrintTextOnWindow(windowId1, gText_Cancel, 0, 65, 0, 1); } else { - u16 move = gUnknown_0203CF1C->unk40C4; - if (gUnknown_0203CF1C->unk40C0 == 2) - sub_81C25A4(windowId1, gMoveNames[move], 0, 0x41, 0, 6); + u16 move = pssData->newMove; + + if (pssData->currPageIndex == 2) + SummaryScreen_PrintTextOnWindow(windowId1, gMoveNames[move], 0, 65, 0, 6); else - sub_81C25A4(windowId1, gMoveNames[move], 0, 0x41, 0, 5); + SummaryScreen_PrintTextOnWindow(windowId1, gMoveNames[move], 0, 65, 0, 5); ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].pp, 1, 2); DynamicPlaceholderTextUtil_Reset(); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1); DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gStringVar1); DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_0861CE97); - sub_81C25A4(windowId2, gStringVar4, GetStringRightAlignXOffset(1, gStringVar4, 0x2C), 0x41, 0, 12); + SummaryScreen_PrintTextOnWindow(windowId2, gStringVar4, GetStringRightAlignXOffset(1, gStringVar4, 0x2C), 0x41, 0, 12); } } -void sub_81C4064(void) +static void sub_81C4064(void) { - u8 windowId = sub_81C2D2C(&gUnknown_0861CD14, 0); - FillWindowPixelRect(windowId, 0, 0, 0x42, 0x48, 0x10); + u8 windowId = AddWindowFromTemplateList(gUnknown_0861CD14, 0); + FillWindowPixelRect(windowId, 0, 0, 66, 72, 16); CopyWindowToVram(windowId, 2); } -void sub_81C40A0(u8 a, u8 b) +static void sub_81C40A0(u8 moveIndex1, u8 moveIndex2) { - u8 windowId1 = sub_81C2D2C(&gUnknown_0861CD14, 0); - u8 windowId2 = sub_81C2D2C(&gUnknown_0861CD14, 1); + u8 windowId1 = AddWindowFromTemplateList(gUnknown_0861CD14, 0); + u8 windowId2 = AddWindowFromTemplateList(gUnknown_0861CD14, 1); - FillWindowPixelRect(windowId1, 0, 0, a * 16, 0x48, 0x10); - FillWindowPixelRect(windowId1, 0, 0, b * 16, 0x48, 0x10); + FillWindowPixelRect(windowId1, 0, 0, moveIndex1 * 16, 0x48, 0x10); + FillWindowPixelRect(windowId1, 0, 0, moveIndex2 * 16, 0x48, 0x10); - FillWindowPixelRect(windowId2, 0, 0, a * 16, 0x30, 0x10); - FillWindowPixelRect(windowId2, 0, 0, b * 16, 0x30, 0x10); + FillWindowPixelRect(windowId2, 0, 0, moveIndex1 * 16, 0x30, 0x10); + FillWindowPixelRect(windowId2, 0, 0, moveIndex2 * 16, 0x30, 0x10); - sub_81C3B08(a); - sub_81C3B08(b); + PrintMoveNameAndPP(moveIndex1); + PrintMoveNameAndPP(moveIndex2); } -void sub_81C4154(void) +static void PrintHMMovesCantBeForgotten(void) { - u8 windowId = sub_81C2D2C(&gUnknown_0861CD14, 2); + u8 windowId = AddWindowFromTemplateList(gUnknown_0861CD14, 2); FillWindowPixelBuffer(windowId, 0); - sub_81C25A4(windowId, gText_HMMovesCantBeForgotten2, 6, 1, 0, 0); + SummaryScreen_PrintTextOnWindow(windowId, gText_HMMovesCantBeForgotten2, 6, 1, 0, 0); } -void sub_81C4190(void) +static void sub_81C4190(void) { u8 i; for (i = 0; i < 28; i++) - gUnknown_0203CF1C->unk40D3[i] |= 0xFF; + { + pssData->spriteIds[i] = 0xFF; + } } -void sub_81C41C0(u8 spriteArrayId) +static void DestroySpriteInArray(u8 spriteArrayId) { - if (gUnknown_0203CF1C->unk40D3[spriteArrayId] != 0xFF) + if (pssData->spriteIds[spriteArrayId] != 0xFF) { - DestroySprite(&gSprites[gUnknown_0203CF1C->unk40D3[spriteArrayId]]); - gUnknown_0203CF1C->unk40D3[spriteArrayId] = 0xFF; + DestroySprite(&gSprites[pssData->spriteIds[spriteArrayId]]); + pssData->spriteIds[spriteArrayId] = 0xFF; } } -void sub_81C4204(u8 spriteArrayId, bool8 invisible) +static void sub_81C4204(u8 spriteArrayId, bool8 invisible) { - gSprites[gUnknown_0203CF1C->unk40D3[spriteArrayId]].invisible = invisible; + gSprites[pssData->spriteIds[spriteArrayId]].invisible = invisible; } -void sub_81C424C(void) +static void sub_81C424C(void) { u8 i; for (i = 3; i < 28; i++) { - if (gUnknown_0203CF1C->unk40D3[i] != 0xFF) + if (pssData->spriteIds[i] != 0xFF) sub_81C4204(i, TRUE); } } -void sub_81C4280(void) +static void sub_81C4280(void) { - switch (gUnknown_0203CF1C->unk40C0) + switch (pssData->currPageIndex) { case 0: sub_81C43A0(); @@ -3730,45 +3696,43 @@ void sub_81C4280(void) } } -void sub_81C42C8(void) +static void sub_81C42C8(void) { u8 i; for (i = 3; i < 8; i++) { - if (gUnknown_0203CF1C->unk40D3[i] == 0xFF) - gUnknown_0203CF1C->unk40D3[i] = CreateSprite(&gUnknown_0861CFC4, 0, 0, 2); + if (pssData->spriteIds[i] == 0xFF) + pssData->spriteIds[i] = CreateSprite(&sSpriteTemplate_MoveTypes, 0, 0, 2); sub_81C4204(i, TRUE); } } -extern const u8 gUnknown_0861CFDC[]; - -void sub_81C4318(u8 typeId, u8 x, u8 y, u8 spriteArrayId) +static void SetMoveTypeSpritePosAndType(u8 typeId, u8 x, u8 y, u8 spriteArrayId) { - struct Sprite *sprite = &gSprites[gUnknown_0203CF1C->unk40D3[spriteArrayId]]; + struct Sprite *sprite = &gSprites[pssData->spriteIds[spriteArrayId]]; StartSpriteAnim(sprite, typeId); - sprite->oam.paletteNum = gUnknown_0861CFDC[typeId]; + sprite->oam.paletteNum = sMoveTypeToOamPaletteNum[typeId]; sprite->pos1.x = x + 16; sprite->pos1.y = y + 8; sub_81C4204(spriteArrayId, FALSE); } -void sub_81C43A0(void) +static void sub_81C43A0(void) { - struct PokeSummary *summary = &gUnknown_0203CF1C->summary; + struct PokeSummary *summary = &pssData->summary; if (summary->isEgg) { - sub_81C4318(TYPE_MYSTERY, 0x78, 0x30, 3); + SetMoveTypeSpritePosAndType(TYPE_MYSTERY, 120, 48, 3); sub_81C4204(4, TRUE); } else { - sub_81C4318(gBaseStats[summary->species].type1, 0x78, 0x30, 3); + SetMoveTypeSpritePosAndType(gBaseStats[summary->species].type1, 0x78, 0x30, 3); if (gBaseStats[summary->species].type1 != gBaseStats[summary->species].type2) { - sub_81C4318(gBaseStats[summary->species].type2, 0xA0, 0x30, 4); + SetMoveTypeSpritePosAndType(gBaseStats[summary->species].type2, 0xA0, 0x30, 4); sub_81C4204(4, FALSE); } else @@ -3778,43 +3742,379 @@ void sub_81C43A0(void) } } -void sub_81C4420(void) +static void sub_81C4420(void) { u8 i; - struct PokeSummary *summary = &gUnknown_0203CF1C->summary; + struct PokeSummary *summary = &pssData->summary; for (i = 0; i < 4; i++) { if (summary->moves[i] != MOVE_NONE) - sub_81C4318(gBattleMoves[summary->moves[i]].type, 0x55, 0x20 + (i * 0x10), i + 3); + SetMoveTypeSpritePosAndType(gBattleMoves[summary->moves[i]].type, 0x55, 0x20 + (i * 0x10), i + 3); else sub_81C4204(i + 3, TRUE); } } -void sub_81C4484(void) +static void sub_81C4484(void) { u8 i; - struct PokeSummary *summary = &gUnknown_0203CF1C->summary; + struct PokeSummary *summary = &pssData->summary; for (i = 0; i < 4; i++) { if (summary->moves[i] != MOVE_NONE) - sub_81C4318(NUMBER_OF_MON_TYPES + gContestMoves[summary->moves[i]].contestCategory, 0x55, 0x20 + (i * 0x10), i + 3); + SetMoveTypeSpritePosAndType(NUMBER_OF_MON_TYPES + gContestMoves[summary->moves[i]].contestCategory, 0x55, 0x20 + (i * 0x10), i + 3); else sub_81C4204(i + 3, TRUE); } } -void sub_81C44F0(void) +static void sub_81C44F0(void) { - if (gUnknown_0203CF1C->unk40C4 == MOVE_NONE) + if (pssData->newMove == MOVE_NONE) { sub_81C4204(7, TRUE); } else { - if (gUnknown_0203CF1C->unk40C0 == 2) - sub_81C4318(gBattleMoves[gUnknown_0203CF1C->unk40C4].type, 0x55, 0x60, 7); + if (pssData->currPageIndex == 2) + SetMoveTypeSpritePosAndType(gBattleMoves[pssData->newMove].type, 85, 96, 7); else - sub_81C4318(NUMBER_OF_MON_TYPES + gContestMoves[gUnknown_0203CF1C->unk40C4].contestCategory, 0x55, 0x60, 7); + SetMoveTypeSpritePosAndType(NUMBER_OF_MON_TYPES + gContestMoves[pssData->newMove].contestCategory, 85, 96, 7); + } +} + +static void sub_81C4568(u8 a0, u8 a1) +{ + struct Sprite *sprite1 = &gSprites[pssData->spriteIds[a0 + 3]]; + struct Sprite *sprite2 = &gSprites[pssData->spriteIds[a1 + 3]]; + + u8 temp = sprite1->animNum; + sprite1->animNum = sprite2->animNum; + sprite2->animNum = temp; + + temp = sprite1->oam.paletteNum; + sprite1->oam.paletteNum = sprite2->oam.paletteNum; + sprite2->oam.paletteNum = temp; + + sprite1->animBeginning = TRUE; + sprite1->animEnded = FALSE; + sprite2->animBeginning = TRUE; + sprite2->animEnded = FALSE; +} + +static u8 sub_81C45F4(struct Pokemon *mon, s16 *a1) +{ + const struct CompressedSpritePalette *pal; + struct PokeSummary *summary = &pssData->summary; + + switch (*a1) + { + default: + return sub_81C47B4(mon); + case 0: + if (gMain.inBattle) + { + if (sub_80688F8(3, pssData->curMonIndex)) + { + HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid); + } + else + { + HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid); + } + } + else + { + if (gMonSpritesGfxPtr != NULL) + { + if (pssData->monList.mons == gPlayerParty || pssData->mode == PSS_MODE_UNK2 || pssData->unk40EF == TRUE) + { + HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid); + } + else + { + HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid); + } + } + else + { + if (pssData->monList.mons == gPlayerParty || pssData->mode == PSS_MODE_UNK2 || pssData->unk40EF == TRUE) + { + HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], sub_806F4F8(0, 1), summary->species2, summary->pid); + } + else + { + HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[summary->species2], sub_806F4F8(0, 1), summary->species2, summary->pid); + } + } + } + (*a1)++; + return -1; + case 1: + pal = GetMonSpritePalStructFromOtIdPersonality(summary->species2, summary->OTID, summary->pid); + LoadCompressedObjectPalette(pal); + SetMultiuseSpriteTemplateToPokemon(pal->tag, 1); + (*a1)++; + return -1; + } +} + +static void sub_81C4778(void) +{ + struct PokeSummary *summary = &pssData->summary; + if (!summary->isEgg) + { + if (ShouldPlayNormalMonCry(&pssData->currentMon) == TRUE) + { + PlayCry3(summary->species2, 0, 0); + } + else + { + PlayCry3(summary->species2, 0, 11); + } + } +} + +static u8 sub_81C47B4(struct Pokemon *unused) +{ + struct PokeSummary *summary = &pssData->summary; + u8 spriteId = CreateSprite(&gMultiuseSpriteTemplate, 40, 64, 5); + struct Sprite *sprite = &gSprites[spriteId]; + + FreeSpriteOamMatrix(sprite); + + sprite->data[0] = summary->species2; + sprite->data[2] = 0; + gSprites[spriteId].callback = sub_81C4844; + sprite->oam.priority = 0; + + if (!IsMonSpriteNotFlipped(summary->species2)) + { + sprite->hFlip = TRUE; + } + else + { + sprite->hFlip = FALSE; + } + + return spriteId; +} + +static void sub_81C4844(struct Sprite *sprite) +{ + struct PokeSummary *summary = &pssData->summary; + + if (!gPaletteFade.active && sprite->data[2] != 1) + { + sprite->data[1] = IsMonSpriteNotFlipped(sprite->data[0]); + sub_81C4778(); + PokemonSummaryDoMonAnimation(sprite, sprite->data[0], summary->isEgg); + } +} + +void SummaryScreen_SetUnknownTaskId(u8 a0) +{ + sUnknownTaskId = a0; +} + +void SummaryScreen_DestroyUnknownTask(void) +{ + if (sUnknownTaskId != 0xFF) + { + DestroyTask(sUnknownTaskId); + sUnknownTaskId = 0xFF; + } +} + +static bool32 SummaryScreen_DoesSpriteHaveCallback(void) +{ + if (gSprites[pssData->spriteIds[0]].callback == SpriteCallbackDummy) + { + return FALSE; + } + else + { + return TRUE; + } +} + +static void sub_81C48F0(void) +{ + u16 i; + u16 paletteIndex; + + gSprites[pssData->spriteIds[0]].animPaused = TRUE; + gSprites[pssData->spriteIds[0]].callback = SpriteCallbackDummy; + sub_806EE98(); + + paletteIndex = (gSprites[pssData->spriteIds[0]].oam.paletteNum * 16) | 0x100; + + for (i = 0; i < 16; i++) + { + gPlttBufferUnfaded[(u16)(i + paletteIndex)] = gPlttBufferFaded[(u16)(i + paletteIndex)]; + } +} + +static void CreateMonMarkingsSprite(struct Pokemon *mon) +{ + struct Sprite *sprite = sub_811FF94(30003, 30003, gUnknown_0861D120); + + pssData->markingsSprite = sprite; + + if (sprite != NULL) + { + StartSpriteAnim(sprite, GetMonData(mon, MON_DATA_MARKINGS)); + pssData->markingsSprite->pos1.x = 60; + pssData->markingsSprite->pos1.y = 26; + pssData->markingsSprite->oam.priority = 1; + } +} + +static void RemoveAndCreateMonMarkingsSprite(struct Pokemon *mon) +{ + DestroySprite(pssData->markingsSprite); + FreeSpriteTilesByTag(30003); + CreateMonMarkingsSprite(mon); +} + +static void CreateCaughtBallSprite(struct Pokemon *mon) +{ + u8 ball = ItemIdToBallId(GetMonData(mon, MON_DATA_POKEBALL)); + + LoadBallGfx(ball); + pssData->spriteIds[1] = CreateSprite(&gBallSpriteTemplates[ball], 16, 136, 0); + gSprites[pssData->spriteIds[1]].callback = SpriteCallbackDummy; + gSprites[pssData->spriteIds[1]].oam.priority = 3; +} + +static void CreateSetStatusSprite(void) +{ + u8 *spriteId = &pssData->spriteIds[2]; + u8 anim; + + if (*spriteId == 0xFF) + { + *spriteId = CreateSprite(&sSpriteTemplate_StatusCondition, 64, 152, 0); + } + + anim = sub_81B205C(&pssData->currentMon); + + if (anim != 0) + { + StartSpriteAnim(&gSprites[*spriteId], anim - 1); + sub_81C4204(2, FALSE); + } + else + { + sub_81C4204(2, TRUE); + } +} + +static void sub_81C4AF8(u8 a0) +{ + u8 i; + u8 *spriteIds = &pssData->spriteIds[a0]; + + if (pssData->currPageIndex > 1) + { + u8 subsprite = 0; + if (a0 == 8) + { + subsprite = 1; + } + + for (i = 0; i < 10; i++) + { + spriteIds[i] = CreateSprite(&gUnknown_0861D084, i * 16 + 89, 40, subsprite); + if (i == 0) + { + StartSpriteAnim(&gSprites[spriteIds[0]], 4); + } + else if (i == 9) + { + StartSpriteAnim(&gSprites[spriteIds[9]], 5); + } + else + { + StartSpriteAnim(&gSprites[spriteIds[i]], 6); + } + gSprites[spriteIds[i]].callback = sub_81C4BE4; + gSprites[spriteIds[i]].data[0] = a0; + gSprites[spriteIds[i]].data[1] = 0; + } + } +} + +static void sub_81C4BE4(struct Sprite *sprite) +{ + if (sprite->animNum > 3 && sprite->animNum < 7) + { + sprite->data[1] = (sprite->data[1] + 1) & 0x1F; + if (sprite->data[1] > 24) + { + sprite->invisible = TRUE; + } + else + { + sprite->invisible = FALSE; + } + } + else + { + sprite->data[1] = 0; + sprite->invisible = FALSE; + } + + if (sprite->data[0] == 8) + { + sprite->pos2.y = pssData->firstMoveIndex * 16; + } + else + { + sprite->pos2.y = pssData->secondMoveIndex * 16; + } +} + +static void sub_81C4C60(u8 a0) +{ + u8 i; + for (i = 0; i < 10; i++) + { + DestroySpriteInArray(a0 + i); + } +} + +static void sub_81C4C84(u8 a0) +{ + u8 i; + u8 *spriteIds = &pssData->spriteIds[8]; + a0 *= 3; + + for (i = 0; i < 10; i++) + { + if (i == 0) + { + StartSpriteAnim(&gSprites[spriteIds[0]], a0 + 4); + } + else if (i == 9) + { + StartSpriteAnim(&gSprites[spriteIds[9]], a0 + 5); + } + else + { + StartSpriteAnim(&gSprites[spriteIds[i]], a0 + 6); + } + } +} + +static void sub_81C4D18(u8 firstSpriteId) +{ + u8 i; + u8 *spriteIds = &pssData->spriteIds[firstSpriteId]; + + for (i = 0; i < 10; i++) + { + gSprites[spriteIds[i]].data[1] = 0; + gSprites[spriteIds[i]].invisible = FALSE; } } diff --git a/src/record_mixing.c b/src/record_mixing.c index 8b21e214f..552c32d38 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -1635,8 +1635,8 @@ void sub_80E8260(struct UnkRecordMixingStruct2 *dst) dst->field_0[0][i].field_4 = gSaveBlock2Ptr->frontier.field_CF0[i]; dst->field_0[1][i].field_4 = gSaveBlock2Ptr->frontier.field_CF4[i]; dst->field_0[2][i].field_4 = gSaveBlock2Ptr->frontier.field_CF8[i]; - dst->field_0[3][i].field_4 = gSaveBlock2Ptr->frontier.field_D14[i]; - dst->field_0[4][i].field_4 = gSaveBlock2Ptr->frontier.field_DD0[i]; + dst->field_0[3][i].field_4 = gSaveBlock2Ptr->frontier.field_D14[0][i]; + dst->field_0[4][i].field_4 = gSaveBlock2Ptr->frontier.field_DD0[0][i]; dst->field_0[5][i].field_4 = gSaveBlock2Ptr->frontier.field_DDE[i]; dst->field_0[6][i].field_4 = gSaveBlock2Ptr->frontier.field_DEA[i]; dst->field_0[7][i].field_4 = gSaveBlock2Ptr->frontier.field_E08[i]; diff --git a/src/recorded_battle.c b/src/recorded_battle.c index 45b07ca7a..fc3b8b94a 100644 --- a/src/recorded_battle.c +++ b/src/recorded_battle.c @@ -28,7 +28,7 @@ extern u8 gUnknown_03001279; struct PlayerInfo { u32 trainerId; - u8 name[PLAYER_NAME_LENGTH]; + u8 name[PLAYER_NAME_LENGTH + 1]; u8 gender; u16 battlerId; u16 language; @@ -44,7 +44,7 @@ struct RecordedBattleSave { struct Pokemon playerParty[PARTY_SIZE]; struct Pokemon opponentParty[PARTY_SIZE]; - u8 playersName[MAX_BATTLERS_COUNT][PLAYER_NAME_LENGTH]; + u8 playersName[MAX_BATTLERS_COUNT][PLAYER_NAME_LENGTH + 1]; u8 playersGender[MAX_BATTLERS_COUNT]; u32 playersTrainerId[MAX_BATTLERS_COUNT]; u8 playersLanguage[MAX_BATTLERS_COUNT]; @@ -170,7 +170,7 @@ void sub_8184E58(void) } else { - for (j = 0; j < PLAYER_NAME_LENGTH; j++) + for (j = 0; j < PLAYER_NAME_LENGTH + 1; j++) sPlayers[i].name[j] = gLinkPlayers[i].name[j]; } } @@ -186,7 +186,7 @@ void sub_8184E58(void) sPlayers[0].battlerId = 0; sPlayers[0].language = gGameLanguage; - for (i = 0; i < PLAYER_NAME_LENGTH; i++) + for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++) sPlayers[0].name[i] = gSaveBlock2Ptr->playerName[i]; } } @@ -343,7 +343,7 @@ u32 MoveRecordedBattleToSaveData(void) for (i = 0; i < MAX_BATTLERS_COUNT; i++) { - for (j = 0; j < PLAYER_NAME_LENGTH; j++) + for (j = 0; j < PLAYER_NAME_LENGTH + 1; j++) { battleSave->playersName[i][j] = sPlayers[i].name[j]; } @@ -1293,7 +1293,7 @@ static bool32 AllocTryCopyRecordedBattleSaveData(struct RecordedBattleSave *dst) static void CB2_RecordedBattleEnd(void) { - gSaveBlock2Ptr->frontier.chosenLvl = sUnknown_0203C7AD; + gSaveBlock2Ptr->frontier.lvlMode = sUnknown_0203C7AD; gBattleOutcome = 0; gBattleTypeFlags = 0; gTrainerBattleOpponent_A = 0; @@ -1332,7 +1332,7 @@ static void SetRecordedBattleVarsFromSave(struct RecordedBattleSave *src) for (i = 0; i < MAX_BATTLERS_COUNT; i++) { - for (var = FALSE, j = 0; j < PLAYER_NAME_LENGTH; j++) + for (var = FALSE, j = 0; j < PLAYER_NAME_LENGTH + 1; j++) { gLinkPlayers[i].name[j] = src->playersName[i][j]; if (src->playersName[i][j] == EOS) @@ -1353,7 +1353,7 @@ static void SetRecordedBattleVarsFromSave(struct RecordedBattleSave *src) gTrainerBattleOpponent_B = src->opponentB; gPartnerTrainerId = src->partnerId; gUnknown_0203C7B4 = src->field_4FA; - sUnknown_0203C7AD = gSaveBlock2Ptr->frontier.chosenLvl; + sUnknown_0203C7AD = gSaveBlock2Ptr->frontier.lvlMode; sFrontierFacility = src->field_4FD; sUnknown_0203C7AF = src->field_4FE; sBattleStyle = src->battleStyle; @@ -1375,7 +1375,7 @@ static void SetRecordedBattleVarsFromSave(struct RecordedBattleSave *src) sUnknown_0203CCDC[i] = src->field_50E[i]; } - gSaveBlock2Ptr->frontier.chosenLvl = src->field_4FC; + gSaveBlock2Ptr->frontier.lvlMode = src->field_4FC; for (i = 0; i < MAX_BATTLERS_COUNT; i++) { diff --git a/src/region_map.c b/src/region_map.c index 5176d4996..3214ae185 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -22,6 +22,8 @@ #include "field_effect.h" #include "region_map.h" #include "constants/region_map_sections.h" +#include "heal_location.h" +#include "constants/heal_locations.h" #define MAP_WIDTH 28 #define MAP_HEIGHT 15 @@ -52,7 +54,7 @@ static EWRAM_DATA struct { /*0x88c*/ u8 unk_88c[0x1c0]; /*0xa4c*/ u8 unk_a4c[0x26]; /*0xa72*/ bool8 unk_a72; -} *gUnknown_0203A148 = NULL; // a74 +} *sFlyMap = NULL; // a74 static bool32 gUnknown_03001180; static bool32 gUnknown_03001184; @@ -242,23 +244,23 @@ static const u16 Unknown_085A1D48[] = INCBIN_U16("graphics/pokenav/fly_target_ic static const u8 sUnknown_085A1D68[] = INCBIN_U8("graphics/pokenav/fly_target_icons.4bpp.lz"); -static const u8 sUnknown_085A1E3C[][3] = { - {MAP_GROUP(LITTLEROOT_TOWN), MAP_NUM(LITTLEROOT_TOWN), 1}, - {MAP_GROUP(OLDALE_TOWN), MAP_NUM(OLDALE_TOWN), 14}, - {MAP_GROUP(DEWFORD_TOWN), MAP_NUM(DEWFORD_TOWN), 15}, - {MAP_GROUP(LAVARIDGE_TOWN), MAP_NUM(LAVARIDGE_TOWN), 16}, - {MAP_GROUP(FALLARBOR_TOWN), MAP_NUM(FALLARBOR_TOWN), 17}, - {MAP_GROUP(VERDANTURF_TOWN), MAP_NUM(VERDANTURF_TOWN), 18}, - {MAP_GROUP(PACIFIDLOG_TOWN), MAP_NUM(PACIFIDLOG_TOWN), 19}, - {MAP_GROUP(PETALBURG_CITY), MAP_NUM(PETALBURG_CITY), 3}, - {MAP_GROUP(SLATEPORT_CITY), MAP_NUM(SLATEPORT_CITY), 4}, - {MAP_GROUP(MAUVILLE_CITY), MAP_NUM(MAUVILLE_CITY), 5}, - {MAP_GROUP(RUSTBORO_CITY), MAP_NUM(RUSTBORO_CITY), 6}, - {MAP_GROUP(FORTREE_CITY), MAP_NUM(FORTREE_CITY), 7}, - {MAP_GROUP(LILYCOVE_CITY), MAP_NUM(LILYCOVE_CITY), 8}, - {MAP_GROUP(MOSSDEEP_CITY), MAP_NUM(MOSSDEEP_CITY), 9}, - {MAP_GROUP(SOOTOPOLIS_CITY), MAP_NUM(SOOTOPOLIS_CITY), 10}, - {MAP_GROUP(EVER_GRANDE_CITY), MAP_NUM(EVER_GRANDE_CITY), 11}, +static const u8 sMapHealLocations[][3] = { + {MAP_GROUP(LITTLEROOT_TOWN), MAP_NUM(LITTLEROOT_TOWN), HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F}, + {MAP_GROUP(OLDALE_TOWN), MAP_NUM(OLDALE_TOWN), HEAL_LOCATION_OLDALE_TOWN}, + {MAP_GROUP(DEWFORD_TOWN), MAP_NUM(DEWFORD_TOWN), HEAL_LOCATION_DEWFORD_TOWN}, + {MAP_GROUP(LAVARIDGE_TOWN), MAP_NUM(LAVARIDGE_TOWN), HEAL_LOCATION_LAVARIDGE_TOWN}, + {MAP_GROUP(FALLARBOR_TOWN), MAP_NUM(FALLARBOR_TOWN), HEAL_LOCATION_FALLARBOR_TOWN}, + {MAP_GROUP(VERDANTURF_TOWN), MAP_NUM(VERDANTURF_TOWN), HEAL_LOCATION_VERDANTURF_TOWN}, + {MAP_GROUP(PACIFIDLOG_TOWN), MAP_NUM(PACIFIDLOG_TOWN), HEAL_LOCATION_PACIFIDLOG_TOWN}, + {MAP_GROUP(PETALBURG_CITY), MAP_NUM(PETALBURG_CITY), HEAL_LOCATION_PETALBURG_CITY}, + {MAP_GROUP(SLATEPORT_CITY), MAP_NUM(SLATEPORT_CITY), HEAL_LOCATION_SLATEPORT_CITY}, + {MAP_GROUP(MAUVILLE_CITY), MAP_NUM(MAUVILLE_CITY), HEAL_LOCATION_MAUVILLE_CITY}, + {MAP_GROUP(RUSTBORO_CITY), MAP_NUM(RUSTBORO_CITY), HEAL_LOCATION_RUSTBORO_CITY}, + {MAP_GROUP(FORTREE_CITY), MAP_NUM(FORTREE_CITY), HEAL_LOCATION_FORTREE_CITY}, + {MAP_GROUP(LILYCOVE_CITY), MAP_NUM(LILYCOVE_CITY), HEAL_LOCATION_LILYCOVE_CITY}, + {MAP_GROUP(MOSSDEEP_CITY), MAP_NUM(MOSSDEEP_CITY), HEAL_LOCATION_MOSSDEEP_CITY}, + {MAP_GROUP(SOOTOPOLIS_CITY), MAP_NUM(SOOTOPOLIS_CITY), HEAL_LOCATION_SOOTOPOLIS_CITY}, + {MAP_GROUP(EVER_GRANDE_CITY), MAP_NUM(EVER_GRANDE_CITY), HEAL_LOCATION_EVER_GRANDE_CITY_1}, {MAP_GROUP(ROUTE101), MAP_NUM(ROUTE101), 0}, {MAP_GROUP(ROUTE102), MAP_NUM(ROUTE102), 0}, {MAP_GROUP(ROUTE103), MAP_NUM(ROUTE103), 0}, @@ -1578,8 +1580,8 @@ void MCB2_FlyMap(void) SetGpuReg(REG_OFFSET_BG2HOFS, 0); SetGpuReg(REG_OFFSET_BG3HOFS, 0); SetGpuReg(REG_OFFSET_BG3VOFS, 0); - gUnknown_0203A148 = malloc(sizeof(*gUnknown_0203A148)); - if (gUnknown_0203A148 == NULL) + sFlyMap = malloc(sizeof(*sFlyMap)); + if (sFlyMap == NULL) { SetMainCallback2(CB2_ReturnToFieldWithOpenMenu); } @@ -1608,11 +1610,11 @@ void MCB2_FlyMap(void) gMain.state++; break; case 4: - InitRegionMap(&gUnknown_0203A148->regionMap, FALSE); + InitRegionMap(&sFlyMap->regionMap, FALSE); CreateRegionMapCursor(0, 0); CreateRegionMapPlayerIcon(1, 1); - gUnknown_0203A148->mapSecId = gUnknown_0203A148->regionMap.mapSecId; - StringFill(gUnknown_0203A148->unk_a4c, CHAR_SPACE, 16); + sFlyMap->mapSecId = sFlyMap->regionMap.mapSecId; + StringFill(sFlyMap->unk_a4c, CHAR_SPACE, 16); gUnknown_03001180 = TRUE; sub_8124904(); gMain.state++; @@ -1664,7 +1666,7 @@ static void sub_81248C0(void) static void sub_81248D4(void) { - gUnknown_0203A148->unk_000(); + sFlyMap->unk_000(); AnimateSprites(); BuildOamBuffer(); do_scheduled_bg_tilemap_copies_to_vram(); @@ -1672,8 +1674,8 @@ static void sub_81248D4(void) static void sub_81248F4(void callback(void)) { - gUnknown_0203A148->unk_000 = callback; - gUnknown_0203A148->unk_004 = 0; + sFlyMap->unk_000 = callback; + sFlyMap->unk_004 = 0; } static void sub_8124904(void) @@ -1682,21 +1684,21 @@ static void sub_8124904(void) bool32 flag; const u8 *name; - if (gUnknown_0203A148->regionMap.iconDrawType > MAPSECTYPE_NONE && gUnknown_0203A148->regionMap.iconDrawType <= MAPSECTYPE_BATTLE_FRONTIER) + if (sFlyMap->regionMap.iconDrawType > MAPSECTYPE_NONE && sFlyMap->regionMap.iconDrawType <= MAPSECTYPE_BATTLE_FRONTIER) { flag = FALSE; for (i = 0; i < 1; i++) { - if (gUnknown_0203A148->regionMap.mapSecId == gUnknown_085A1EDC[i].mapSecId) + if (sFlyMap->regionMap.mapSecId == gUnknown_085A1EDC[i].mapSecId) { if (FlagGet(gUnknown_085A1EDC[i].flag)) { - StringLength(gUnknown_085A1EDC[i].name[gUnknown_0203A148->regionMap.posWithinMapSec]); + StringLength(gUnknown_085A1EDC[i].name[sFlyMap->regionMap.posWithinMapSec]); flag = TRUE; sub_8198070(0, FALSE); SetWindowBorderStyle(1, FALSE, 0x65, 0x0d); - PrintTextOnWindow(1, 1, gUnknown_0203A148->regionMap.mapSecName, 0, 1, 0, NULL); - name = gUnknown_085A1EDC[i].name[gUnknown_0203A148->regionMap.posWithinMapSec]; + PrintTextOnWindow(1, 1, sFlyMap->regionMap.mapSecName, 0, 1, 0, NULL); + name = gUnknown_085A1EDC[i].name[sFlyMap->regionMap.posWithinMapSec]; PrintTextOnWindow(1, 1, name, GetStringRightAlignXOffset(1, name, 0x60), 0x11, 0, NULL); schedule_bg_copy_tilemap_to_vram(0); gUnknown_03001180 = TRUE; @@ -1715,7 +1717,7 @@ static void sub_8124904(void) { FillWindowPixelBuffer(0, 0x11); } - PrintTextOnWindow(0, 1, gUnknown_0203A148->regionMap.mapSecName, 0, 1, 0, NULL); + PrintTextOnWindow(0, 1, sFlyMap->regionMap.mapSecName, 0, 1, 0, NULL); schedule_bg_copy_tilemap_to_vram(0); gUnknown_03001180 = FALSE; } @@ -1739,8 +1741,8 @@ static void sub_8124A70(void) { struct SpriteSheet sheet; - LZ77UnCompWram(sUnknown_085A1D68, gUnknown_0203A148->unk_88c); - sheet.data = gUnknown_0203A148->unk_88c; + LZ77UnCompWram(sUnknown_085A1D68, sFlyMap->unk_88c); + sheet.data = sFlyMap->unk_88c; sheet.size = 0x1c0; sheet.tag = 2; LoadSpriteSheet(&sheet); @@ -1829,7 +1831,7 @@ static void sub_8124BE4(void) static void sub_8124CBC(struct Sprite *sprite) { - if (gUnknown_0203A148->regionMap.mapSecId == sprite->data[0]) + if (sFlyMap->regionMap.mapSecId == sprite->data[0]) { if (++sprite->data[1] > 16) { @@ -1846,11 +1848,11 @@ static void sub_8124CBC(struct Sprite *sprite) static void sub_8124D14(void) { - switch (gUnknown_0203A148->unk_004) + switch (sFlyMap->unk_004) { case 0: BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); - gUnknown_0203A148->unk_004++; + sFlyMap->unk_004++; break; case 1: if (!UpdatePaletteFade()) @@ -1863,7 +1865,7 @@ static void sub_8124D14(void) static void sub_8124D64(void) { - if (gUnknown_0203A148->unk_004 == 0) + if (sFlyMap->unk_004 == 0) { switch (sub_81230AC()) { @@ -1875,16 +1877,16 @@ static void sub_8124D64(void) sub_8124904(); break; case INPUT_EVENT_A_BUTTON: - if (gUnknown_0203A148->regionMap.iconDrawType == MAPSECTYPE_CITY_CANFLY || gUnknown_0203A148->regionMap.iconDrawType == MAPSECTYPE_BATTLE_FRONTIER) + if (sFlyMap->regionMap.iconDrawType == MAPSECTYPE_CITY_CANFLY || sFlyMap->regionMap.iconDrawType == MAPSECTYPE_BATTLE_FRONTIER) { m4aSongNumStart(SE_SELECT); - gUnknown_0203A148->unk_a72 = TRUE; + sFlyMap->unk_a72 = TRUE; sub_81248F4(sub_8124E0C); } break; case INPUT_EVENT_B_BUTTON: m4aSongNumStart(SE_SELECT); - gUnknown_0203A148->unk_a72 = FALSE; + sFlyMap->unk_a72 = FALSE; sub_81248F4(sub_8124E0C); break; } @@ -1893,40 +1895,40 @@ static void sub_8124D64(void) static void sub_8124E0C(void) { - switch (gUnknown_0203A148->unk_004) + switch (sFlyMap->unk_004) { case 0: BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - gUnknown_0203A148->unk_004++; + sFlyMap->unk_004++; break; case 1: if (!UpdatePaletteFade()) { FreeRegionMapIconResources(); - if (gUnknown_0203A148->unk_a72) + if (sFlyMap->unk_a72) { - switch (gUnknown_0203A148->regionMap.mapSecId) + switch (sFlyMap->regionMap.mapSecId) { case MAPSEC_SOUTHERN_ISLAND: - sub_8084CCC(0x15); + sub_8084CCC(HEAL_LOCATION_SOUTHERN_ISLAND_EXTERIOR); break; case MAPSEC_BATTLE_FRONTIER: - sub_8084CCC(0x16); + sub_8084CCC(HEAL_LOCATION_BATTLE_FRONTIER_OUTSIDE_EAST); break; case MAPSEC_LITTLEROOT_TOWN: - sub_8084CCC(gSaveBlock2Ptr->playerGender == MALE ? 0x0C : 0x0D); + sub_8084CCC(gSaveBlock2Ptr->playerGender == MALE ? HEAL_LOCATION_LITTLEROOT_TOWN_1 : HEAL_LOCATION_LITTLEROOT_TOWN_2); break; case MAPSEC_EVER_GRANDE_CITY: - sub_8084CCC(FlagGet(FLAG_LANDMARK_POKEMON_LEAGUE) && gUnknown_0203A148->regionMap.posWithinMapSec == 0 ? 0x14 : 0x0B); + sub_8084CCC(FlagGet(FLAG_LANDMARK_POKEMON_LEAGUE) && sFlyMap->regionMap.posWithinMapSec == 0 ? HEAL_LOCATION_EVER_GRANDE_CITY_2 : HEAL_LOCATION_EVER_GRANDE_CITY_1); break; default: - if (sUnknown_085A1E3C[gUnknown_0203A148->regionMap.mapSecId][2] != 0) + if (sMapHealLocations[sFlyMap->regionMap.mapSecId][2] != 0) { - sub_8084CCC(sUnknown_085A1E3C[gUnknown_0203A148->regionMap.mapSecId][2]); + sub_8084CCC(sMapHealLocations[sFlyMap->regionMap.mapSecId][2]); } else { - warp1_set_2(sUnknown_085A1E3C[gUnknown_0203A148->regionMap.mapSecId][0], sUnknown_085A1E3C[gUnknown_0203A148->regionMap.mapSecId][1], -1); + warp1_set_2(sMapHealLocations[sFlyMap->regionMap.mapSecId][0], sMapHealLocations[sFlyMap->regionMap.mapSecId][1], -1); } break; } @@ -1936,10 +1938,10 @@ static void sub_8124E0C(void) { SetMainCallback2(sub_81B58A8); } - if (gUnknown_0203A148 != NULL) + if (sFlyMap != NULL) { - free(gUnknown_0203A148); - gUnknown_0203A148 = NULL; + free(sFlyMap); + sFlyMap = NULL; } FreeAllWindowBuffers(); } diff --git a/src/rom_8011DC0.c b/src/rom_8011DC0.c index 55e3fe32b..56c31f89f 100644 --- a/src/rom_8011DC0.c +++ b/src/rom_8011DC0.c @@ -18,6 +18,7 @@ #include "constants/maps.h" #include "constants/species.h" #include "constants/rgb.h" +#include "constants/battle_frontier.h" #include "trade.h" #include "trainer_card.h" #include "overworld.h" @@ -39,7 +40,7 @@ struct UnkStruct_Shared { struct UnkLinkRfuStruct_02022B14 field_0; u8 needingPadding[3]; - u8 playerName[PLAYER_NAME_LENGTH]; + u8 playerName[PLAYER_NAME_LENGTH + 1]; }; struct UnkStruct_x1C @@ -468,7 +469,7 @@ void sub_8012780(u8 taskId) switch (data->state) { case 0: - if (gSpecialVar_0x8004 == 20 && gSaveBlock2Ptr->frontier.chosenLvl == 1) + if (gSpecialVar_0x8004 == 20 && gSaveBlock2Ptr->frontier.lvlMode == FRONTIER_LVL_OPEN) gSpecialVar_0x8004++; gUnknown_02022C2C = gUnknown_082F00C4[gSpecialVar_0x8004]; gUnknown_02022C2D = gUnknown_082F00C4[gSpecialVar_0x8004] >> 8; @@ -1050,7 +1051,7 @@ void sub_80134E8(u8 taskId) switch (data->state) { case 0: - if (gSpecialVar_0x8004 == 20 && gSaveBlock2Ptr->frontier.chosenLvl == 1) + if (gSpecialVar_0x8004 == 20 && gSaveBlock2Ptr->frontier.lvlMode == FRONTIER_LVL_OPEN) gSpecialVar_0x8004++; gUnknown_02022C2C = gUnknown_082F0530[gSpecialVar_0x8004]; sub_8010F84(gUnknown_02022C2C, 0, 0); @@ -1636,7 +1637,7 @@ void sub_8014290(u16 arg0, u16 x, u16 y) VarSet(VAR_0x4087, arg0); Overworld_SetWarpDestination(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, x, y); saved_warp2_set_2(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, x, y); - warp_in(); + WarpIntoMap(); } void sub_8014304(s8 mapGroup, s8 mapNum, s32 x, s32 y, u16 arg4) @@ -1647,7 +1648,7 @@ void sub_8014304(s8 mapGroup, s8 mapNum, s32 x, s32 y, u16 arg4) gUnknown_03005DB4 = GetMultiplayerId(); sub_809D2BC(); Overworld_SetWarpDestination(mapGroup, mapNum, -1, x, y); - warp_in(); + WarpIntoMap(); } void sub_8014384(void) diff --git a/src/rotating_gate.c b/src/rotating_gate.c index 1f5ef165f..fcced6c8c 100644 --- a/src/rotating_gate.c +++ b/src/rotating_gate.c @@ -189,12 +189,6 @@ struct RotatingGatePuzzle u8 orientation; }; -struct Coords8 -{ - s8 deltaX; - s8 deltaY; -}; - // .rodata // Fortree static const struct RotatingGatePuzzle sRotatingGate_FortreePuzzleConfig[] = diff --git a/src/safari_zone.c b/src/safari_zone.c index 01d72fa13..427a5ceb8 100644 --- a/src/safari_zone.c +++ b/src/safari_zone.c @@ -35,7 +35,7 @@ extern void CB2_ReturnToFieldContinueScriptPlayMapMusic(void); extern void CB2_LoadMap(void); extern void sub_80AF6F0(void); extern void ScriptContext1_Stop(void); -extern void warp_in(void); +extern void WarpIntoMap(void); extern void GetXYCoordsOneStepInFrontOfPlayer(s16* x, s16* y); extern void PlayerGetDestCoords(s16* x, s16* y); @@ -117,7 +117,7 @@ void CB2_EndSafariBattle(void) else if (gBattleOutcome == B_OUTCOME_NO_SAFARI_BALLS) { ScriptContext2_RunNewScript(EventScript_2A4B4C); - warp_in(); + WarpIntoMap(); gFieldCallback = sub_80AF6F0; SetMainCallback2(CB2_LoadMap); } diff --git a/src/scrcmd.c b/src/scrcmd.c index a15ad666c..31a4ed35a 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -750,7 +750,7 @@ bool8 ScrCmd_warp(struct ScriptContext *ctx) Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); sub_80AF734(); - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); return TRUE; } @@ -764,7 +764,7 @@ bool8 ScrCmd_warpsilent(struct ScriptContext *ctx) Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); sp13E_warp_to_last_warp(); - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); return TRUE; } @@ -778,7 +778,7 @@ bool8 ScrCmd_warpdoor(struct ScriptContext *ctx) Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); sub_80AF7D0(); - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); return TRUE; } @@ -791,11 +791,11 @@ bool8 ScrCmd_warphole(struct ScriptContext *ctx) PlayerGetDestCoords(&x, &y); if (mapGroup == 0xFF && mapNum == 0xFF) - sub_8084EBC(x - 7, y - 7); + SetFixedHoleWarpAsDestination(x - 7, y - 7); else Overworld_SetWarpDestination(mapGroup, mapNum, -1, x - 7, y - 7); sp13F_fall_to_last_warp(); - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); return TRUE; } @@ -809,7 +809,7 @@ bool8 ScrCmd_warpteleport(struct ScriptContext *ctx) Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); sub_80AF848(); - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); return TRUE; } @@ -823,7 +823,7 @@ bool8 ScrCmd_warpD7(struct ScriptContext *ctx) Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); sub_80AF87C(); - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); return TRUE; } @@ -859,7 +859,7 @@ bool8 ScrCmd_setdivewarp(struct ScriptContext *ctx) u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); - sub_8084E2C(mapGroup, mapNum, warpId, x, y); + SetFixedDiveWarp(mapGroup, mapNum, warpId, x, y); return FALSE; } @@ -871,7 +871,7 @@ bool8 ScrCmd_setholewarp(struct ScriptContext *ctx) u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); - sub_8084E80(mapGroup, mapNum, warpId, x, y); + SetFixedHoleWarp(mapGroup, mapNum, warpId, x, y); return FALSE; } @@ -1515,7 +1515,7 @@ bool8 ScrCmd_braillemessage(struct ScriptContext *ctx) xText = (xWindow - xText - 1) * 8 + 3; yText = (yText - yWindow - 1) * 8; - winTemplate = sub_8198A50(0, xWindow, yWindow + 1, width, height, 0xF, 0x1); + winTemplate = CreateWindowTemplate(0, xWindow, yWindow + 1, width, height, 0xF, 0x1); gUnknown_03000F30 = AddWindow(&winTemplate); LoadUserWindowBorderGfx(gUnknown_03000F30, 0x214, 0xE0); NewMenuHelpers_DrawStdWindowFrame(gUnknown_03000F30, 0); @@ -2240,7 +2240,7 @@ bool8 ScrCmd_warpD1(struct ScriptContext *ctx) Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); sub_808D074(GetPlayerFacingDirection()); sub_80B0244(); - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); return TRUE; } @@ -2293,6 +2293,6 @@ bool8 ScrCmd_warpE0(struct ScriptContext *ctx) Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); sub_80AF79C(); - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); return TRUE; } diff --git a/src/secret_base.c b/src/secret_base.c index c71f7ed23..7fae50a81 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -388,7 +388,7 @@ void sub_80E8FD0(u8 taskId) gSaveBlock1Ptr->secretBases[secretBaseRecordId].sbr_field_10 ++; } sub_80E8F9C(); - warp_in(); + WarpIntoMap(); gFieldCallback = sub_80AF168; SetMainCallback2(CB2_LoadMap); DestroyTask(taskId); @@ -446,7 +446,7 @@ void sub_80E916C(u8 taskId) { idx = sCurSecretBaseId / 10 * 4; Overworld_SetWarpDestination(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, gUnknown_0858CFE8[idx + 2], gUnknown_0858CFE8[idx + 3]); - warp_in(); + WarpIntoMap(); gFieldCallback = sub_80E9108; SetMainCallback2(CB2_LoadMap); DestroyTask(taskId); @@ -644,7 +644,7 @@ void sub_80E96A4(u8 taskId) break; case 2: copy_saved_warp2_bank_and_enter_x_to_warp1(0x7e); - warp_in(); + WarpIntoMap(); gFieldCallback = mapldr_default; SetMainCallback2(CB2_LoadMap); ScriptContext2_Disable(); @@ -997,7 +997,7 @@ void sub_80E9FB0(u8 taskId) { s8 input; - input = ProcessMenuInputNoWrapAround(); + input = Menu_ProcessInputNoWrapAround(); switch (input) { case -1: @@ -1354,7 +1354,7 @@ bool8 sub_80EA904(struct SecretBaseRecord *sbr1, struct SecretBaseRecord *sbr2) { u8 i; - for (i = 0; i < OT_NAME_LENGTH && (sbr1->trainerName[i] != EOS || sbr2->trainerName[i] != EOS); i++) + for (i = 0; i < PLAYER_NAME_LENGTH && (sbr1->trainerName[i] != EOS || sbr2->trainerName[i] != EOS); i++) { if (sbr1->trainerName[i] != sbr2->trainerName[i]) { @@ -1509,7 +1509,7 @@ bool8 DoesSecretBaseBelongToPlayer(struct SecretBaseRecord *secretBase) return FALSE; } - for (i = 0; i < OT_NAME_LENGTH && (secretBase->trainerName[i] != EOS || gSaveBlock2Ptr->playerName[i] != EOS); i ++) + for (i = 0; i < PLAYER_NAME_LENGTH && (secretBase->trainerName[i] != EOS || gSaveBlock2Ptr->playerName[i] != EOS); i ++) { if (secretBase->trainerName[i] != gSaveBlock2Ptr->playerName[i]) return FALSE; diff --git a/src/slot_machine.c b/src/slot_machine.c new file mode 100644 index 000000000..6b6a46cf8 --- /dev/null +++ b/src/slot_machine.c @@ -0,0 +1,1366 @@ +#include "global.h" +#include "constants/songs.h" +#include "overworld.h" +#include "field_effect.h" +#include "random.h" +#include "sound.h" +#include "main.h" +#include "slot_machine.h" +#include "string_util.h" +#include "decompress.h" +#include "trig.h" +#include "graphics.h" +#include "palette.h" +#include "util.h" +#include "text.h" +#include "menu.h" +#include "malloc.h" +#include "bg.h" +#include "gpu_regs.h" +#include "coins.h" +#include "tv.h" +#include "text_window.h" +#include "constants/rgb.h" +#include "main_menu.h" + +enum +{ + SLOT_MACHINE_TAG_7_RED, + SLOT_MACHINE_TAG_7_BLUE, + SLOT_MACHINE_TAG_AZURILL, + SLOT_MACHINE_TAG_LOTAD, + SLOT_MACHINE_TAG_CHERRY, + SLOT_MACHINE_TAG_POWER, + SLOT_MACHINE_TAG_REPLAY +}; + +enum +{ + SLOT_MACHINE_MATCHED_1CHERRY, + SLOT_MACHINE_MATCHED_2CHERRY, + SLOT_MACHINE_MATCHED_REPLAY, + SLOT_MACHINE_MATCHED_LOTAD, + SLOT_MACHINE_MATCHED_AZURILL, + SLOT_MACHINE_MATCHED_POWER, + SLOT_MACHINE_MATCHED_777_MIXED, + SLOT_MACHINE_MATCHED_777_RED, + SLOT_MACHINE_MATCHED_777_BLUE, + SLOT_MACHINE_MATCHED_NONE +}; + +struct SlotMachineEwramStruct +{ + /*0x00*/ u8 state; + /*0x01*/ u8 unk01; + /*0x02*/ u8 pikaPower; + /*0x03*/ u8 unk03; + /*0x04*/ u8 unk04; + /*0x05*/ u8 unk05; + /*0x06*/ u8 unk06; + /*0x07*/ u8 unk07; + /*0x08*/ u16 matchedSymbols; + /*0x0A*/ u8 unk0A; + /*0x0B*/ u8 unk0B; + /*0x0C*/ s16 coins; + /*0x0E*/ s16 payout; + /*0x10*/ s16 unk10; + /*0x12*/ s16 bet; + /*0x14*/ s16 unk14; + /*0x16*/ s16 unk16; + /*0x18*/ s16 unk18; + /*0x1A*/ s16 unk1A; + /*0x1C*/ s16 unk1C[3]; + /*0x22*/ u16 unk22[3]; + /*0x28*/ s16 reelPositions[3]; + /*0x2E*/ s16 unk2E[3]; + /*0x34*/ s16 unk34[3]; + /*0x3A*/ u8 reelTasks[3]; + /*0x3D*/ u8 unk3D; + /*0x3E*/ u8 unk3E; + /*0x3F*/ u8 unk3F; + /*0x40*/ u8 unk40; + /*0x41*/ u8 unk41; + /*0x42*/ u8 unk42; + /*0x43*/ u8 unk43; + /*0x44*/ u8 unk44[5]; + /*0x49*/ u8 unk49[2]; + /*0x49*/ u8 unk4B[3]; + /*0x4E*/ u8 unk4E[2]; + /*0x50*/ u8 unk50[2]; + /*0x52*/ u8 unk52[2]; + /*0x54*/ u8 unk54[4]; + /*0x58*/ u16 win0h; + /*0x5a*/ u16 win0v; + /*0x5c*/ u16 winIn; + /*0x5e*/ u16 winOut; + /*0x60*/ u16 backupMapMusic; + /*0x64*/ MainCallback prevMainCb; +}; + +extern struct SlotMachineEwramStruct *sSlotMachine; + +struct UnkStruct1 +{ + /*0x00*/ u8 unk00; + /*0x01*/ u8 unk01; + /*0x02*/ s16 unk02; +}; + +#define SLOTMACHINE_GFX_TILES 233 + +/*static*/void CB2_SlotMachineSetup(void); +/*static*/void CB2_SlotMachineLoop(void); +/*static*/void PlaySlotMachine_Internal(u8 arg0, MainCallback cb); +/*static*/void SlotMachineDummyTask(u8 taskId); +/*static*/void SlotMachineSetup_0_0(void); +/*static*/void SlotMachineSetup_6_2(void); +/*static*/void SlotMachineSetup_1_0(void); +/*static*/void SlotMachineSetup_2_0(void); +/*static*/void SlotMachineSetup_2_1(void); +/*static*/void SlotMachineSetup_0_1(void); +/*static*/void SlotMachineSetup_3_0(void); +/*static*/void SlotMachineSetup_4_0(void); +/*static*/void SlotMachineSetup_5_0(void); +/*static*/void SlotMachineSetup_6_0(void); +/*static*/void SlotMachineSetup_6_1(void); +/*static*/void SlotMachineSetup_8_0(void); +/*static*/void SlotMachineSetup_9_0(void); +/*static*/void SlotMachineSetup_10_0(void); +/*static*/void SlotMachineSetup_10_1(void); +/*static*/void sub_8101D04(void); +/*static*/void sub_8104DA4(void); +/*static*/void sub_8101D24(u8 taskId); +/*static*/bool8 sub_8101D5C(struct Task *task); +/*static*/bool8 sub_8101D8C(struct Task *task); +/*static*/bool8 sub_8101DB0(struct Task *task); +/*static*/bool8 sub_8101DF4(struct Task *task); +/*static*/bool8 sub_8101E10(struct Task *task); +/*static*/bool8 sub_8101E3C(struct Task *task); +/*static*/bool8 sub_8101F44(struct Task *task); +/*static*/bool8 sub_8101F60(struct Task *task); +/*static*/bool8 sub_8101F88(struct Task *task); +/*static*/bool8 sub_8101FA4(struct Task *task); +/*static*/bool8 sub_8102008(struct Task *task); +/*static*/bool8 sub_8102034(struct Task *task); +/*static*/bool8 sub_8102058(struct Task *task); +/*static*/bool8 sub_8102090(struct Task *task); +bool8 sub_81020C8(struct Task *task); +/*static*/bool8 sub_81021E0(struct Task *task); +/*static*/bool8 sub_81021FC(struct Task *task); +/*static*/bool8 sub_8102264(struct Task *task); +/*static*/bool8 sub_81022A0(struct Task *task); +/*static*/bool8 sub_81022CC(struct Task *task); +/*static*/bool8 sub_81022F0(struct Task *task); +/*static*/bool8 sub_8102318(struct Task *task); +/*static*/bool8 sub_8102344(struct Task *task); +/*static*/bool8 sub_810239C(struct Task *task); +/*static*/bool8 sub_81023B8(struct Task *task); +/*static*/bool8 sub_81023E0_(struct Task *task); +/*static*/bool8 sub_81023FC(struct Task *task); +/*static*/bool8 sub_8102424(struct Task *task); +/*static*/bool8 sub_8102460(struct Task *task); +/*static*/void sub_8102484(void); +/*static*/void sub_81024F0(void); +/*static*/bool8 sub_8102540_(void); +/*static*/u8 sub_8102578(void); +/*static*/u16 dp15_jump_random_unknown(void); +/*static*/u8 sub_81025BC(void); +/*static*/void CheckMatch(void); +/*static*/void CheckMatch_CenterRow(void); +/*static*/void CheckMatch_TopAndBottom(void); +/*static*/void CheckMatch_Diagonals(void); +/*static*/u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3); +/*static*/void sub_8102A24(void); +/*static*/void sub_8102A64(u8 taskId); +/*static*/bool8 sub_8102A44(void); +/*static*/bool8 sub_8102A9C(struct Task *task); +/*static*/bool8 sub_8102AD0(struct Task *task); +/*static*/bool8 sub_8102B80(struct Task *task); +/*static*/u8 GetTagOfReelSymbolOnScreenAtPos(u8 x, s16 y); +/*static*/void sub_8102DA8(void); +/*static*/void sub_8102DEC(u8 a0); +/*static*/void sub_8102E1C(u8 a0); +/*static*/bool8 sub_8102E40(u8 a0); +/*static*/void sub_8102E68(u8 taskId); +/*static*/bool8 sub_8102EA0(struct Task *task); +/*static*/bool8 sub_8102EA4(struct Task *task); +/*static*/bool8 sub_8102EC0(struct Task *task); +/*static*/bool8 sub_8102F4C(struct Task *task); +/*static*/bool8 sub_8103008(struct Task *task); +/*static*/bool8 sub_810305C(void); +/*static*/bool8 sub_8103154(u8 a0, u8 a1); +/*static*/bool8 sub_81031B4(u8 a0, u8 a1); +/*static*/bool8 sub_81032C0(void); +/*static*/bool8 sub_81032E8(void); +/*static*/bool8 sub_810333C(void); +/*static*/bool8 sub_81033DC(void); +/*static*/bool8 sub_810341C(u8 a0); +/*static*/bool8 sub_810347C(u8 a0); +/*static*/void sub_81034F4(void); +/*static*/void sub_8103540(void); +/*static*/void sub_8103564(void); +/*static*/void j5_08111E84(void); +/*static*/void sub_8103668(void); +/*static*/void sub_810380C(void); +/*static*/void sub_8103830(void); +/*static*/void sub_8103910(void); +/*static*/void sub_8103A78(void); +/*static*/void sub_8103C14(u8 a0); +/*static*/void sub_8103C48(u8 taskId); +/*static*/void sub_8103D50(u8 a0); +/*static*/void sub_8103C78(struct Task *task, u8 taskId); +/*static*/void sub_8103CAC(struct Task *task, u8 taskId); +/*static*/void sub_8103CC8(struct Task *task, u8 taskId); +/*static*/void sub_8103D8C(u8 a0); +/*static*/void sub_8103DC8(void); +/*static*/void sub_8103E04(u8 a0); +/*static*/bool8 sub_8103E38(void); +/*static*/bool8 sub_8103E7C(void); +/*static*/bool8 sub_8103EAC(u8 spriteId); +/*static*/void sub_8103EE4(struct Sprite *sprite); +/*static*/void sub_8103F70(void); +/*static*/bool8 sub_8103FA0(void); +/*static*/void sub_8103FE8(u8 taskId); +/*static*/void sub_8104048(void); +/*static*/void sub_8104064(u8 pikaPower); +/*static*/bool8 sub_81040C8(void); +/*static*/void sub_81040E8(u8 taskId); +/*static*/void nullsub_68(struct Task *task); +/*static*/void sub_810411C(struct Task *task); +/*static*/void sub_8104144(struct Task *task); +/*static*/void sub_81041AC(struct Task *task); +/*static*/void sub_810421C(struct Task *task); +/*static*/void sub_810423C(u8 pikaPower); +/*static*/void sub_810430C(void); +/*static*/bool8 sub_810432C(void); +/*static*/void sub_810434C(u8 taskId); +/*static*/void sub_810437C(struct Task *task); +/*static*/void sub_81043EC(struct Task *task); +/*static*/void sub_8104468(struct Task *task); +/*static*/void sub_8104498(struct Task *task); +/*static*/void sub_8104548(struct Task *task); +/*static*/void sub_8104598(struct Task *task); +/*static*/void sub_81045CC(struct Task *task); +/*static*/void sub_810463C(struct Task *task); +/*static*/void sub_81046C0(struct Task *task); +/*static*/void sub_8104764(struct Task *task); +/*static*/void sub_8104794(struct Task *task); +/*static*/void sub_81047EC(struct Task *task); +/*static*/void sub_8104860(struct Task *task); +/*static*/void sub_81048A8(struct Task *task); +/*static*/void sub_81048CC(struct Task *task); +/*static*/void sub_8104940(struct Task *task); +/*static*/void sub_81049C8(struct Task *task); +/*static*/void sub_81049F8(struct Task *task); +/*static*/void sub_8104A40(s16 a0, s16 a1); +/*static*/void sub_8104A88(s16 a0); +/*static*/void sub_8104AB8(u8 a0); +/*static*/bool8 sub_8104AEC(void); +/*static*/void sub_8104B0C(u8 taskId); +/*static*/void sub_8104B3C(struct Task *task); +/*static*/void sub_8104B60(struct Task *task); +/*static*/void sub_8104B80(struct Task *task); +/*static*/void sub_8104BC8(struct Task *task); +/*static*/void sub_8104BFC(struct Task *task); +/*static*/void sub_8104C44(struct Task *task); +/*static*/void sub_8104C5C(void); +/*static*/void sub_8104CAC(u8 arg0); +/*static*/bool8 sub_8104E18(void); +/*static*/void nullsub_69(struct Task *task); +/*static*/void sub_8104E74(u8 taskId); +/*static*/void sub_8104EA8(void); +/*static*/void sub_8104F8C(void); +/*static*/void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3); +/*static*/void sub_81050C4(void); +/*static*/void sub_8105100(void); +/*static*/void sub_810514C(void); +/*static*/void sub_81051C0(void); +/*static*/void sub_8105284(void); +/*static*/void sub_81052EC(void); +/*static*/void sub_81053A0(void); +/*static*/void sub_810545C(void); +/*static*/void sub_81054B8(void); +/*static*/void sub_8105524(void); +/*static*/void sub_8105554(void); +/*static*/void sub_8105578(void); +/*static*/void sub_8105688(s16 a0); +/*static*/void sub_81056C0(void); +/*static*/void sub_81056F0(void); +/*static*/void sub_81057E8(s16 a0); +/*static*/void sub_8105804(void); +/*static*/void sub_8105854(void); +/*static*/void sub_81058A0(void); +/*static*/void sub_81058C4(void); +/*static*/void sub_81059B8(void); +/*static*/void sub_81059E8(void); +/*static*/bool8 sub_8105ACC(void); +/*static*/void sub_8105AEC(void); +/*static*/u8 sub_8105B1C(s16 x, s16 y); +/*static*/void sub_8105B88(u8 spriteId); +/*static*/u8 sub_8105BF8(u8 templateIdx, void (*callback)(struct Sprite*), s16 x, s16 y, s16 a4); +/*static*/void sub_81063C0(void); +/*static*/void sub_8106404(void); +/*static*/void sub_8106448(void); +/*static*/void sub_81064B8(void); +/*static*/void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4); +/*static*/void sub_81065DC(void); +/*static*/extern const struct UnkStruct1 *const gUnknown_083ED048[]; +/*static*/extern const u16 gPalette_83EDE24[]; +/*static*/extern const u8 gUnknown_083ECD04[][3]; +/*static*/extern const u8 gUnknown_083ECE3A[]; +/*static*/extern const u16 gUnknown_083ECE42[]; +/*static*/extern const u16 gUnknown_083ECE48[]; + +// code +#define tState data[0] + +void Task_FadeToSlotMachine(u8 taskId) +{ + switch (gTasks[taskId].tState) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0); + gTasks[taskId].tState++; + break; + case 1: + if (!gPaletteFade.active) + { + SetMainCallback2(CB2_SlotMachineSetup); + DestroyTask(taskId); + } + break; + } +} + +void PlaySlotMachine(u8 arg0, MainCallback cb) +{ + u8 taskId; + + sSlotMachine = AllocZeroed(sizeof(*sSlotMachine)); + PlaySlotMachine_Internal(arg0, cb); + taskId = CreateTask(Task_FadeToSlotMachine, 0); + gTasks[taskId].tState = 0; +} + +#undef tState + +void CB2_SlotMachineSetup(void) +{ + switch (gMain.state) + { + case 0: + SlotMachineSetup_0_0(); + SlotMachineSetup_0_1(); + gMain.state++; + break; + case 1: + SlotMachineSetup_1_0(); + gMain.state++; + break; + case 2: + SlotMachineSetup_2_0(); + SlotMachineSetup_2_1(); + gMain.state++; + break; + case 3: + SlotMachineSetup_3_0(); + gMain.state++; + break; + case 4: + SlotMachineSetup_4_0(); + gMain.state++; + break; + case 5: + SlotMachineSetup_5_0(); + gMain.state++; + break; + case 6: + SlotMachineSetup_6_0(); + gMain.state++; + break; + case 7: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + ShowBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + gMain.state++; + break; + case 8: + SlotMachineSetup_8_0(); + gMain.state++; + break; + case 9: + SlotMachineSetup_9_0(); + gMain.state++; + break; + case 10: + SlotMachineSetup_10_0(); + SlotMachineSetup_10_1(); + gMain.state++; + break; + case 11: + SetMainCallback2(CB2_SlotMachineLoop); + break; + } +} + +void CB2_SlotMachineLoop(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void SlotMachine_VBlankCallback(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + SetGpuReg(REG_OFFSET_WIN0H, sSlotMachine->win0h); + SetGpuReg(REG_OFFSET_WIN0V, sSlotMachine->win0v); + SetGpuReg(REG_OFFSET_WININ, sSlotMachine->winIn); + SetGpuReg(REG_OFFSET_WINOUT, sSlotMachine->winOut); +} + +void PlaySlotMachine_Internal(u8 arg0, MainCallback cb) +{ + struct Task *task = gTasks + CreateTask(SlotMachineDummyTask, 0xFF); + task->data[0] = arg0; + StoreWordInTwoHalfwords(task->data + 1, (intptr_t)cb); +} + +void sub_81019EC(void) +{ + struct Task *task = gTasks + FindTaskIdByFunc(SlotMachineDummyTask); + sSlotMachine->unk01 = task->data[0]; + LoadWordFromTwoHalfwords((u16 *)(task->data + 1), (u32 *)&sSlotMachine->prevMainCb); +} + +void SlotMachineDummyTask(u8 taskId) +{ +} + +extern const struct BgTemplate gUnknown_085A7424[4]; +extern const struct WindowTemplate gUnknown_085A7434[]; + +void SlotMachineSetup_0_0(void) +{ + SetVBlankCallback(NULL); + SetHBlankCallback(NULL); + CpuFill32(0, (void *)VRAM, VRAM_SIZE); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_085A7424, ARRAY_COUNT(gUnknown_085A7424)); + InitWindows(gUnknown_085A7434); + DeactivateAllTextPrinters(); +} + +void SlotMachineSetup_6_0(void) +{ + SetVBlankCallback(SlotMachine_VBlankCallback); + EnableInterrupts(INTR_FLAG_VBLANK); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON); +} + +void SlotMachineSetup_1_0(void) +{ + DmaClearLarge16(3, (u16 *)(BG_VRAM), BG_VRAM_SIZE, 0x1000); +} + +void SlotMachineSetup_2_0(void) +{ + DmaClear16(3, (u16 *)OAM, OAM_SIZE); +} + +void SlotMachineSetup_2_1(void) +{ + SetGpuReg(REG_OFFSET_BG0CNT, 0); + SetGpuReg(REG_OFFSET_BG1CNT, 0); + SetGpuReg(REG_OFFSET_BG2CNT, 0); + SetGpuReg(REG_OFFSET_BG3CNT, 0); + SetGpuReg(REG_OFFSET_BG0HOFS, 0); + SetGpuReg(REG_OFFSET_BG0VOFS, 0); + SetGpuReg(REG_OFFSET_BG1HOFS, 0); + SetGpuReg(REG_OFFSET_BG1VOFS, 0); + SetGpuReg(REG_OFFSET_BG2HOFS, 0); + SetGpuReg(REG_OFFSET_BG2VOFS, 0); + SetGpuReg(REG_OFFSET_BG3HOFS, 0); + SetGpuReg(REG_OFFSET_BG3VOFS, 0); + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR); + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_OBJ); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(9, 8)); +} + +extern const s16 gUnknown_083ECCF8[][2]; + +void SlotMachineSetup_0_1(void) +{ + u8 i; + + sub_81019EC(); + sSlotMachine->state = 0; + sSlotMachine->pikaPower = 0; + sSlotMachine->unk03 = Random() & 1; + sSlotMachine->unk04 = 0; + sSlotMachine->matchedSymbols = 0; + sSlotMachine->unk0A = 0; + sSlotMachine->unk0B = 0; + sSlotMachine->coins = GetCoins(); + sSlotMachine->payout = 0; + sSlotMachine->unk10 = 0; + sSlotMachine->bet = 0; + sSlotMachine->unk18 = 0; + sSlotMachine->unk1A = 8; + sSlotMachine->win0h = 0xf0; + sSlotMachine->win0v = 0xa0; + sSlotMachine->winIn = 0x3f; + sSlotMachine->winOut = 0x3f; + sSlotMachine->backupMapMusic = GetCurrentMapMusic(); + for (i = 0; i < 3; i++) + { + sSlotMachine->unk22[i] = 0; + sSlotMachine->reelPositions[i] = gUnknown_083ECCF8[i][sSlotMachine->unk03] % 21; + sSlotMachine->unk1C[i] = 0x1f8 - sSlotMachine->reelPositions[i] * 24; + sSlotMachine->unk1C[i] %= 0x1f8; + } + sub_80EDE70(GetCoins()); +} + +extern u8 gOamLimit; + +void SlotMachineSetup_3_0(void) +{ + ResetPaletteFade(); + ResetSpriteData(); + gOamLimit = 0x80; + FreeAllSpritePalettes(); + ResetTasks(); +} + +extern u16 *gUnknown_0203AAC8; +extern u16 *gUnknown_0203AACC; +extern u16 *gUnknown_0203AAD0; +extern u16 *gUnknown_0203AADC; +extern void *gUnknown_0203AAF4; +extern void *gUnknown_0203AAF8; +extern void *gUnknown_0203AAFC; +extern void *gUnknown_0203AB00; +extern void *gUnknown_0203AB04; +extern void *gUnknown_0203AB08; +extern void *gUnknown_0203AB0C; +extern void *gUnknown_0203AB10; +extern void *gUnknown_0203AB14; +extern void *gUnknown_0203AB18; +extern void *gUnknown_0203AB1C; +extern void *gUnknown_0203AB20; +extern void *gUnknown_0203AB24; +extern void *gUnknown_0203AB28; +extern void *gUnknown_0203AAE4; +extern void *gUnknown_0203AAE8; +extern void *gUnknown_0203AAEC; +extern void *gUnknown_0203AAF0; +extern void *gUnknown_0203AAD4; +extern void *gUnknown_0203AAD8; +extern void *gUnknown_0203AAE0; +extern void *gUnknown_0203AB2C; +extern void *gUnknown_0203AB30; + +void SlotMachineSetup_4_0(void) +{ + gUnknown_0203AACC = Alloc(8); + gUnknown_0203AAD0 = AllocZeroed(0xE); + gUnknown_0203AADC = AllocZeroed(8); + + gUnknown_0203AAD0[0] = 0x2051; + gUnknown_0203AAD0[1] = 0x2851; + gUnknown_0203AAD0[2] = 0x2061; + gUnknown_0203AAD0[3] = 0x2861; + gUnknown_0203AAD0[4] = 0x20BE; + gUnknown_0203AAD0[5] = 0x28BE; + gUnknown_0203AAD0[6] = 0x20BF; +} + +/*static*/void sub_812F908(void); +/*static*/void sub_812F958(void); +/*static*/void sub_812F7E4(void); + +void SlotMachineSetup_5_0(void) +{ + sub_812F908(); + sub_812F958(); + sub_812F7E4(); + LoadMessageBoxGfx(0, 0x200, 0xF0); + LoadUserWindowBorderGfx(0, 0x214, 0xE0); + PutWindowTilemap(0); +} + +void SlotMachineSetup_10_0(void) +{ + sub_8104EA8(); + sub_8104F8C(); + sub_8103DC8(); + sub_81050C4(); +} + +void SlotMachineSetup_10_1(void) +{ + sub_8104048(); + sub_8102DA8(); + sub_8104C5C(); + sub_8101D04(); +} + +void sub_8101D04(void) +{ + sub_8101D24(CreateTask(sub_8101D24, 0)); +} + +extern bool8 (*const gUnknown_083ECAAC[])(struct Task *task); + +void sub_8101D24(u8 taskId) +{ + while (gUnknown_083ECAAC[sSlotMachine->state](gTasks + taskId)) + ; +} + +bool8 sub_8101D5C(struct Task *task) +{ + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); + sub_810423C(sSlotMachine->pikaPower); + sSlotMachine->state++; + return FALSE; +} + +bool8 sub_8101D8C(struct Task *task) +{ + if (!gPaletteFade.active) + sSlotMachine->state++; + return FALSE; +} + +bool8 sub_8101DB0(struct Task *task) +{ + sSlotMachine->payout = 0; + sSlotMachine->bet = 0; + sSlotMachine->unk18 = 0; + sSlotMachine->unk04 &= 0xc0; + sSlotMachine->state = 4; + if (sSlotMachine->coins <= 0) + { + sSlotMachine->state = 25; + } + else if (sSlotMachine->unk0A) + { + sSlotMachine->state = 3; + sub_8104CAC(4); + } + return TRUE; +} + +bool8 sub_8101DF4(struct Task *task) +{ + if (sub_8104E18()) + sSlotMachine->state = 4; + return FALSE; +} + +bool8 sub_8101E10(struct Task *task) +{ + sub_8104CAC(0); + sSlotMachine->state = 5; + if (sSlotMachine->coins >= 9999) + sSlotMachine->state = 23; + return TRUE; +} + +bool8 sub_8101E3C(struct Task *task) +{ + s16 i; + + if (gMain.newKeys & SELECT_BUTTON) + { + sub_8104AB8(0); + sSlotMachine->state = 8; + } + else if (gMain.newKeys & R_BUTTON) + { + if (sSlotMachine->coins - (3 - sSlotMachine->bet) >= 0) + { + for (i = sSlotMachine->bet; i < 3; i++) + sub_8103D50(i); + sSlotMachine->coins -= (3 - sSlotMachine->bet); + sSlotMachine->bet = 3; + sSlotMachine->state = 9; + PlaySE(SE_REGI); + } + else + { + sSlotMachine->state = 6; + } + } + else + { + if (gMain.newKeys & DPAD_DOWN && sSlotMachine->coins != 0) + { + PlaySE(SE_REGI); + sub_8103D50(sSlotMachine->bet); + sSlotMachine->coins--; + sSlotMachine->bet++; + } + if (sSlotMachine->bet >= 3 || (sSlotMachine->bet != 0 && gMain.newKeys & A_BUTTON)) + sSlotMachine->state = 9; + if (gMain.newKeys & B_BUTTON) + sSlotMachine->state = 21; + } + return FALSE; +} + +extern const u8 gText_YouDontHaveThreeCoins[]; +extern const u8 gText_QuitTheGame[]; +extern const u8 gText_YouveGot9999Coins[]; +extern const u8 gText_YouveRunOutOfCoins[]; + +bool8 sub_8101F44(struct Task *task) +{ + NewMenuHelpers_DrawDialogueFrame(0, 0); + PrintTextOnWindow(0, 1, gText_YouDontHaveThreeCoins, 0, 1, 0, 0); + CopyWindowToVram(0, 3); + sSlotMachine->state = 7; + return FALSE; +} + +bool8 sub_8101F60(struct Task *task) +{ + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + sub_8197434(0, TRUE); + sSlotMachine->state = 5; + } + return FALSE; +} + +bool8 sub_8101F88(struct Task *task) +{ + if (sub_8104AEC()) + sSlotMachine->state = 5; + return FALSE; +} + +bool8 sub_8101FA4(struct Task *task) +{ + sub_8102484(); + sub_8104DA4(); + sub_8102DEC(0); + sub_8102DEC(1); + sub_8102DEC(2); + sub_80EEC80(); + task->data[0] = 0; + if (sSlotMachine->unk04 & 0x20) + { + sub_810430C(); + sSlotMachine->state = 10; + } + else + { + sub_8104CAC(1); + sSlotMachine->state = 11; + } + sSlotMachine->unk1A = 8; + if (sSlotMachine->unk0A) + sSlotMachine->unk1A = dp15_jump_random_unknown(); + return FALSE; +} + +bool8 sub_8102008(struct Task *task) +{ + if (sub_810432C()) + { + sub_8104CAC(1); + sSlotMachine->unk04 &= 0xDF; + sSlotMachine->state = 11; + } + return FALSE; +} + +bool8 sub_8102034(struct Task *task) +{ + if (++task->data[0] >= 30) + { + sub_81024F0(); + sSlotMachine->state = 12; + } + return FALSE; +} + +bool8 sub_8102058(struct Task *task) +{ + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_JYUNI); + sub_8102E1C(sSlotMachine->unk18); + sub_8103C14(sSlotMachine->unk18); + sSlotMachine->state = 13; + } + return FALSE; +} + +bool8 sub_8102090(struct Task *task) +{ + if (!sub_8102E40(sSlotMachine->unk18)) + { + sSlotMachine->unk18++; + sSlotMachine->state = 12; + if (sSlotMachine->unk18 > 2) + { + sSlotMachine->state = 14; + } + return TRUE; + } + return FALSE; +} + +bool8 sub_81020C8(struct Task *task) +{ + sSlotMachine->unk04 &= 0xc0; + CheckMatch(); + if (sSlotMachine->unk0A) + { + sSlotMachine->unk0A--; + sSlotMachine->unk0B++; + } + + if (sSlotMachine->matchedSymbols) + { + sSlotMachine->state = 15; + sub_8102A24(); + sub_8103F70(); + if ((sSlotMachine->unk10 -= sSlotMachine->payout) < 0) + { + sSlotMachine->unk10 = 0; + } + if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED))) + { + PlayFanfare(MUS_ME_B_BIG); + sub_8104CAC(6); + } + else if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_777_MIXED)) + { + PlayFanfare(MUS_ME_B_BIG); + sub_8104CAC(5); + } + else + { + PlayFanfare(MUS_ME_B_SMALL); + sub_8104CAC(2); + } + if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_MIXED) | (1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED))) + { + sSlotMachine->unk04 &= 0x3f; + if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED))) + { + sSlotMachine->unk0A = 0; + sSlotMachine->unk0B = 0; + sSlotMachine->unk03 = 0; + if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_777_BLUE)) + sSlotMachine->unk03 = 1; + } + } + if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER) && sSlotMachine->pikaPower < 16) + { + sSlotMachine->pikaPower++; + sub_8104064(sSlotMachine->pikaPower); + } + } + else + { + sub_8104CAC(3); + sSlotMachine->state = 20; + if ((sSlotMachine->unk10 += sSlotMachine->bet) > 9999) + sSlotMachine->unk10 = 9999; + } + return FALSE; +} + +bool8 sub_81021E0(struct Task *task) +{ + if (sub_8102A44()) + sSlotMachine->state = 16; + return FALSE; +} + +bool8 sub_81021FC(struct Task *task) +{ + if (sub_8103FA0()) + { + sSlotMachine->state = 19; + if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_RED) | (1 << SLOT_MACHINE_MATCHED_777_BLUE))) + IncrementGameStat(GAME_STAT_SLOT_JACKPOTS); + if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY)) + { + sSlotMachine->unk18 = 0; + sSlotMachine->state = 9; + } + if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER)) + sSlotMachine->state = 17; + if (sSlotMachine->unk0A && sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY)) + { + sub_8104CAC(4); + sSlotMachine->state = 18; + } + } + return FALSE; +} + +bool8 sub_8102264(struct Task *task) +{ + if (!sub_81040C8()) + { + sSlotMachine->state = 19; + if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY)) + { + sSlotMachine->state = 9; + if (sSlotMachine->unk0A) + { + sub_8104CAC(4); + sSlotMachine->state = 18; + } + } + } + return FALSE; +} + +bool8 sub_81022A0(struct Task *task) +{ + if (sub_8104E18()) + { + sSlotMachine->state = 19; + if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY)) + { + sSlotMachine->state = 9; + } + } + return FALSE; +} + +bool8 sub_81022CC(struct Task *task) +{ + sub_8103D8C(0); + sub_8103D8C(1); + sub_8103D8C(2); + sSlotMachine->state = 2; + return FALSE; +} + +bool8 sub_81022F0(struct Task *task) +{ + if (++task->data[1] > 64) + { + task->data[1] = 0; + sSlotMachine->state = 19; + } + return FALSE; +} + +bool8 sub_8102318(struct Task *task) +{ + NewMenuHelpers_DrawDialogueFrame(0, 0); + PrintTextOnWindow(0, 1, gText_QuitTheGame, 0, 1, 0, 0); + CopyWindowToVram(0, 3); + sub_80323CC(0x15, 7, 0x214, 0x180, 0xE, 0xF); + sSlotMachine->state = 22; + return FALSE; +} + +bool8 sub_8102344(struct Task *task) +{ + s8 input = Menu_ProcessInputNoWrap_(); + if (input == 0) + { + sub_8197434(0, TRUE); + sub_8103D8C(0); + sub_8103D8C(1); + sub_8103D8C(2); + sSlotMachine->coins += sSlotMachine->bet; + sSlotMachine->state = 27; + } + else if (input == 1 || input == -1) + { + sub_8197434(0, TRUE); + sSlotMachine->state = 5; + } + return FALSE; +} + +bool8 sub_810239C(struct Task *task) +{ + NewMenuHelpers_DrawDialogueFrame(0, 0); + PrintTextOnWindow(0, 1, gText_YouveGot9999Coins, 0, 1, 0, 0); + CopyWindowToVram(0, 3); + sSlotMachine->state = 24; + return FALSE; +} + +bool8 sub_81023B8(struct Task *task) +{ + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + sub_8197434(0, TRUE); + sSlotMachine->state = 5; + } + return FALSE; +} + +bool8 sub_81023E0_(struct Task *task) +{ + NewMenuHelpers_DrawDialogueFrame(0, 0); + PrintTextOnWindow(0, 1, gText_YouveRunOutOfCoins, 0, 1, 0, 0); + CopyWindowToVram(0, 3); + sSlotMachine->state = 26; + return FALSE; +} + +bool8 sub_81023FC(struct Task *task) +{ + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + sub_8197434(0, TRUE); + sSlotMachine->state = 27; + } + return FALSE; +} + +bool8 sub_8102424(struct Task *task) +{ + SetCoins(sSlotMachine->coins); + sub_80EDD78(GetCoins()); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); + sSlotMachine->state++; + return FALSE; +} + +bool8 sub_8102460(struct Task *task) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(sSlotMachine->prevMainCb); + FREE_AND_SET_NULL(gUnknown_0203AAF4); + FREE_AND_SET_NULL(gUnknown_0203AAF8); + FREE_AND_SET_NULL(gUnknown_0203AAFC); + FREE_AND_SET_NULL(gUnknown_0203AB00); + FREE_AND_SET_NULL(gUnknown_0203AB04); + FREE_AND_SET_NULL(gUnknown_0203AB08); + FREE_AND_SET_NULL(gUnknown_0203AB0C); + FREE_AND_SET_NULL(gUnknown_0203AB10); + FREE_AND_SET_NULL(gUnknown_0203AB14); + FREE_AND_SET_NULL(gUnknown_0203AB18); + FREE_AND_SET_NULL(gUnknown_0203AB1C); + FREE_AND_SET_NULL(gUnknown_0203AB20); + FREE_AND_SET_NULL(gUnknown_0203AB24); + FREE_AND_SET_NULL(gUnknown_0203AB28); + if (gUnknown_0203AAE4 != NULL) + FREE_AND_SET_NULL(gUnknown_0203AAE4); + if (gUnknown_0203AAE8 != NULL) + FREE_AND_SET_NULL(gUnknown_0203AAE8); + if (gUnknown_0203AAEC != NULL) + FREE_AND_SET_NULL(gUnknown_0203AAEC); + if (gUnknown_0203AAF0 != NULL) + FREE_AND_SET_NULL(gUnknown_0203AAF0); + FREE_AND_SET_NULL(gUnknown_0203AAC8); + FREE_AND_SET_NULL(gUnknown_0203AACC); + FREE_AND_SET_NULL(gUnknown_0203AAD0); + FREE_AND_SET_NULL(gUnknown_0203AAD4); + FREE_AND_SET_NULL(gUnknown_0203AAD8); + FREE_AND_SET_NULL(gUnknown_0203AADC); + FREE_AND_SET_NULL(gUnknown_0203AAE0); + FREE_AND_SET_NULL(gUnknown_0203AB2C); + FREE_AND_SET_NULL(gUnknown_0203AB30); + + FREE_AND_SET_NULL(sSlotMachine); + } + return FALSE; +} + +void sub_8102484(void) +{ + u8 r3; + + if (sSlotMachine->unk0A == 0) + { + if (!(sSlotMachine->unk04 & 0xc0)) + { + if (sub_8102540_()) + { + r3 = sub_8102578(); + if (r3 != 3) + { + sSlotMachine->unk04 |= gUnknown_083ECE42[r3]; + if (r3 != 1) + { + return; + } + } + } + r3 = sub_81025BC(); + if (r3 != 5) + { + sSlotMachine->unk04 |= gUnknown_083ECE48[r3]; + } + } + } +} + +void sub_81024F0(void) +{ + sSlotMachine->unk06 = 0; + if (sSlotMachine->unk04) + sSlotMachine->unk06 = 1; +} + +u8 sub_810250C(u8 a0) +{ + u8 i; + + for (i = 0; i < 8; i++) + { + if (a0 & 1) + return gUnknown_083ECE3A[i]; + a0 >>= 1; + } + return 0; +} + +bool8 sub_8102540_(void) +{ + u8 rval = Random(); + if (gUnknown_083ECD04[sSlotMachine->unk01][sSlotMachine->bet - 1] > rval) + return TRUE; + return FALSE; +} + +extern const u8 gUnknown_083ECD16[][6]; +extern const u8 gUnknown_083ECD28[][6]; +extern const u8 gUnknown_083ECD46[][17]; +extern const u8 gUnknown_083ECDAC[][17]; + +u8 sub_8102578(void) +{ + s16 i; + + for (i = 0; i < 3; i++) + { + s16 rval = Random() & 0xff; + s16 value = gUnknown_083ECD16[i][sSlotMachine->unk01]; + if (value > rval) + break; + } + return i; +} + +u8 sub_81025BC(void) +{ + s16 i; + + for (i = 0; i < 5; i++) + { + s16 rval = Random() & 0xff; + s16 r3 = gUnknown_083ECD28[i][sSlotMachine->unk01]; + if (i == 0 && sSlotMachine->unk03 == 1) + { + r3 += 10; + if (r3 > 0x100) + r3 = 0x100; + } + else if (i == 4 && sSlotMachine->unk03 == 1) + { + r3 -= 10; + if (r3 < 0) + r3 = 0; + } + if (r3 > rval) + break; + } + return i; +} + +u8 sub_810264C(u8 a0) +{ + if (sSlotMachine->unk03 == 0) + return gUnknown_083ECD46[a0][sSlotMachine->pikaPower]; + else + return gUnknown_083ECDAC[a0][sSlotMachine->pikaPower]; +} + +void sub_8102680(void) +{ + u8 rval; + s16 i; + + sSlotMachine->unk05 = 0; + rval = Random(); + if (rval < sub_810264C(0)) + return; + for (i = 5; i > 0; i--) + { + rval = Random(); + if (rval < sub_810264C(i)) + break; + } + sSlotMachine->unk05 = i; +} + +extern const u16 gUnknown_083ECE12[]; +extern const u16 gUnknown_083ECE1C[][2]; +extern const u16 gUnknown_083ECE30[]; +extern const u16 sSlotMatchFlags[]; +extern const u16 sSlotPayouts[]; + +bool8 sub_81026DC(u16 a0) +{ + u16 rval = Random() & 0xff; + if (rval < gUnknown_083ECE12[a0]) + return TRUE; + else + return FALSE; +} + +u16 dp15_jump_random_unknown(void) +{ + u8 r4 = 0; + u8 rval; + u8 value; + if (sSlotMachine->unk10 >= 300) + r4 = 4; + else if (sSlotMachine->unk10 >= 250) + r4 = 3; + else if (sSlotMachine->unk10 >= 200) + r4 = 2; + else if (sSlotMachine->unk10 >= 150) + r4 = 1; + rval = Random() % 100; + value = gUnknown_083ECE1C[r4][0]; + if (rval < value) + return 4; + rval = Random() % 100; + value = gUnknown_083ECE1C[r4][1] + gUnknown_083ECE30[sSlotMachine->unk0B]; + if (rval < value) + return 2; + return 8; +} + +void CheckMatch(void) +{ + sSlotMachine->matchedSymbols = 0; + CheckMatch_CenterRow(); + if (sSlotMachine->bet > 1) + CheckMatch_TopAndBottom(); + if (sSlotMachine->bet > 2) + CheckMatch_Diagonals(); +} + +void CheckMatch_CenterRow(void) +{ + u8 c1, c2, c3, match; + + c1 = GetTagOfReelSymbolOnScreenAtPos(0, 2); + c2 = GetTagOfReelSymbolOnScreenAtPos(1, 2); + c3 = GetTagOfReelSymbolOnScreenAtPos(2, 2); + match = GetMatchFromSymbolsInRow(c1, c2, c3); + if (match != SLOT_MACHINE_MATCHED_NONE) + { + sSlotMachine->payout += sSlotPayouts[match]; + sSlotMachine->matchedSymbols |= sSlotMatchFlags[match]; + sub_8103E04(0); + } +} + +void CheckMatch_TopAndBottom(void) +{ + u8 c1, c2, c3, match; + + c1 = GetTagOfReelSymbolOnScreenAtPos(0, 1); + c2 = GetTagOfReelSymbolOnScreenAtPos(1, 1); + c3 = GetTagOfReelSymbolOnScreenAtPos(2, 1); + match = GetMatchFromSymbolsInRow(c1, c2, c3); + if (match != SLOT_MACHINE_MATCHED_NONE) + { + if (match == SLOT_MACHINE_MATCHED_1CHERRY) + match = SLOT_MACHINE_MATCHED_2CHERRY; + sSlotMachine->payout += sSlotPayouts[match]; + sSlotMachine->matchedSymbols |= sSlotMatchFlags[match]; + sub_8103E04(1); + } + c1 = GetTagOfReelSymbolOnScreenAtPos(0, 3); + c2 = GetTagOfReelSymbolOnScreenAtPos(1, 3); + c3 = GetTagOfReelSymbolOnScreenAtPos(2, 3); + match = GetMatchFromSymbolsInRow(c1, c2, c3); + if (match != SLOT_MACHINE_MATCHED_NONE) + { + if (match == SLOT_MACHINE_MATCHED_1CHERRY) + match = SLOT_MACHINE_MATCHED_2CHERRY; + sSlotMachine->payout += sSlotPayouts[match]; + sSlotMachine->matchedSymbols |= sSlotMatchFlags[match]; + sub_8103E04(2); + } +} + +void CheckMatch_Diagonals(void) +{ + u8 c1, c2, c3, match; + + c1 = GetTagOfReelSymbolOnScreenAtPos(0, 1); + c2 = GetTagOfReelSymbolOnScreenAtPos(1, 2); + c3 = GetTagOfReelSymbolOnScreenAtPos(2, 3); + match = GetMatchFromSymbolsInRow(c1, c2, c3); + if (match != SLOT_MACHINE_MATCHED_NONE) + { + if (match != SLOT_MACHINE_MATCHED_1CHERRY) + { + sSlotMachine->payout += sSlotPayouts[match]; + sSlotMachine->matchedSymbols |= sSlotMatchFlags[match]; + } + sub_8103E04(3); + } + c1 = GetTagOfReelSymbolOnScreenAtPos(0, 3); + c2 = GetTagOfReelSymbolOnScreenAtPos(1, 2); + c3 = GetTagOfReelSymbolOnScreenAtPos(2, 1); + match = GetMatchFromSymbolsInRow(c1, c2, c3); + if (match != SLOT_MACHINE_MATCHED_NONE) + { + if (match != SLOT_MACHINE_MATCHED_1CHERRY) + { + sSlotMachine->payout += sSlotPayouts[match]; + sSlotMachine->matchedSymbols |= sSlotMatchFlags[match]; + } + sub_8103E04(4); + } +} + +extern const u8 sSym2Match[]; + +u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3) +{ + if (c1 == c2 && c1 == c3) + return sSym2Match[c1]; + if (c1 == SLOT_MACHINE_TAG_7_RED && c2 == SLOT_MACHINE_TAG_7_RED && c3 == SLOT_MACHINE_TAG_7_BLUE) + return SLOT_MACHINE_MATCHED_777_MIXED; + if (c1 == SLOT_MACHINE_TAG_7_BLUE && c2 == SLOT_MACHINE_TAG_7_BLUE && c3 == SLOT_MACHINE_TAG_7_RED) + return SLOT_MACHINE_MATCHED_777_MIXED; + if (c1 == SLOT_MACHINE_TAG_CHERRY) + return SLOT_MACHINE_MATCHED_1CHERRY; + return SLOT_MACHINE_MATCHED_NONE; +} + +void sub_8102A24(void) +{ + sub_8102A64(CreateTask(sub_8102A64, 4)); +} + +bool8 sub_8102A44(void) +{ + if (FindTaskIdByFunc(sub_8102A64) == 0xff) + return TRUE; + else + return FALSE; +} diff --git a/src/start_menu.c b/src/start_menu.c index 7591d3b57..4a58c146e 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -33,6 +33,7 @@ #include "international_string_util.h" #include "constants/songs.h" #include "field_player_avatar.h" +#include "battle_pyramid_bag.h" // Menu actions enum @@ -73,12 +74,11 @@ EWRAM_DATA static u8 sSaveDialogTimer = 0; EWRAM_DATA static bool8 sSavingComplete = FALSE; EWRAM_DATA static u8 sSaveInfoWindowId = 0; -// Extern variables +// Extern variables. extern u8 gDifferentSaveFile; -extern u16 gSaveFileStatus; extern u8 gUnknown_03005DB4; -// Extern functions in uncompiled files +// Extern functions in not decompiled files. extern void sub_80AF688(void); extern void var_800D_set_xB(void); extern void sub_808B864(void); @@ -89,7 +89,6 @@ extern void CB2_PokeNav(void); extern void sub_80C4DDC(void (*)(void)); extern void sub_80C51C4(void (*)(void)); extern void sub_80C4E74(u8, void (*)(void)); -extern void sub_81C4EFC(void); extern void ScriptUnfreezeEventObjects(void); extern void sub_81A9EC8(void); extern void save_serialize_map(void); @@ -781,7 +780,7 @@ static bool8 StartMenuBattlePyramidBagCallback(void) play_some_sound(); RemoveExtraStartMenuWindows(); overworld_free_bg_tilemaps(); - SetMainCallback2(sub_81C4EFC); // Display battle pyramid bag + SetMainCallback2(CB2_PyramidBagMenuFromStartMenu); return TRUE; } @@ -985,7 +984,7 @@ static u8 SaveYesNoCallback(void) static u8 SaveConfirmInputCallback(void) { - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: // Yes switch (gSaveFileStatus) @@ -1045,7 +1044,7 @@ static u8 SaveConfirmOverwriteCallback(void) static u8 SaveOverwriteInputCallback(void) { - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: // Yes sSaveDialogCallback = SaveSavingMessageCallback; @@ -1169,7 +1168,7 @@ static u8 BattlePyramidRetireYesNoCallback(void) static u8 BattlePyramidRetireInputCallback(void) { - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: // Yes return SAVE_CANCELED; diff --git a/src/starter_choose.c b/src/starter_choose.c index b55b0fbc5..c1e7eea40 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -20,6 +20,7 @@ #include "international_string_util.h" #include "trig.h" #include "scanline_effect.h" +#include "trainer_pokemon_sprites.h" #define STARTER_MON_COUNT 3 @@ -48,12 +49,6 @@ extern const u8 gStarterChoose_LabelCoords[][2]; extern const u8 gUnknown_085B1E0C[]; extern const u8 gUnknown_085B1E28[][2]; -extern void clear_scheduled_bg_copies_to_vram(void); -extern void dp13_810BB8C(void); -extern void do_scheduled_bg_tilemap_copies_to_vram(void); -extern u16 sub_818D820(u16); -extern u8 sub_818D3E4(u16 species, u32 trainerId, u32 personality, u8 flags, s16 x, s16 y, u8, u16); - // this file's functions static void MainCallback2_StarterChoose(void); static void sub_8134604(void); @@ -132,7 +127,7 @@ void CB2_ChooseStarter(void) ResetSpriteData(); ResetPaletteFade(); FreeAllSpritePalettes(); - dp13_810BB8C(); + ResetAllPicSprites(); LoadPalette(GetOverworldTextboxPalettePtr(), 0xE0, 0x20); LoadPalette(gBirchBagGrassPal, 0, 0x40); @@ -258,12 +253,12 @@ static void Task_StarterChoose5(u8 taskId) { u8 spriteId; - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: // YES // Return the starter choice and exit. gSpecialVar_Result = gTasks[taskId].tStarterSelection; - dp13_810BB8C(); + ResetAllPicSprites(); SetMainCallback2(gMain.savedCallback); break; case 1: // NO @@ -271,7 +266,7 @@ static void Task_StarterChoose5(u8 taskId) PlaySE(SE_SELECT); spriteId = gTasks[taskId].tPkmnSpriteId; FreeOamMatrix(gSprites[spriteId].oam.matrixNum); - sub_818D820(spriteId); + FreeAndDestroyMonPicSprite(spriteId); spriteId = gTasks[taskId].tCircleSpriteId; FreeOamMatrix(gSprites[spriteId].oam.matrixNum); @@ -349,7 +344,7 @@ static u8 CreatePokemonFrontSprite(u16 species, u8 x, u8 y) { u8 spriteId; - spriteId = sub_818D3E4(species, 8, 0, 1, x, y, 0xE, 0xFFFF); + spriteId = CreatePicSprite2(species, 8, 0, 1, x, y, 0xE, 0xFFFF); gSprites[spriteId].oam.priority = 0; return spriteId; } diff --git a/src/battle_dome_cards.c b/src/trainer_pokemon_sprites.c index 5e659a2e8..085e66214 100644 --- a/src/battle_dome_cards.c +++ b/src/trainer_pokemon_sprites.c @@ -1,5 +1,3 @@ - -// Includes #include "global.h" #include "sprite.h" #include "window.h" @@ -7,7 +5,10 @@ #include "constants/species.h" #include "palette.h" #include "decompress.h" -#include "battle_dome_cards.h" +#include "trainer_pokemon_sprites.h" +#include "data2.h" +#include "pokemon.h" +#include "constants/trainers.h" extern const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES]; extern const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES]; @@ -19,11 +20,10 @@ extern const union AffineAnimCmd *const gUnknown_082FF694[]; extern const union AnimCmd *const gPlayerMonSpriteAnimsTable[]; extern const union AnimCmd *const *const gMonAnimationsSpriteAnimsPtrTable[NUM_SPECIES]; extern const union AnimCmd *const *const gUnknown_0830536C[]; -extern const u8 gFacilityClassToPicIndex[]; // Static type declarations -struct BattleDomeCard +struct PicData { u8 *frames; struct SpriteFrameImage *images; @@ -33,15 +33,16 @@ struct BattleDomeCard }; // Static RAM declarations +#define PICS_COUNT 8 -static EWRAM_DATA struct SpriteTemplate gUnknown_0203CCEC = {}; -static EWRAM_DATA struct BattleDomeCard gUnknown_0203CD04[8] = {}; +static EWRAM_DATA struct SpriteTemplate sCreatingSpriteTemplate = {}; +static EWRAM_DATA struct PicData sSpritePics[PICS_COUNT] = {}; // Static ROM declarations // .rodata -static const struct BattleDomeCard gUnknown_0860B058 = {}; +static const struct PicData sDummyPicData = {}; static const struct OamData gUnknown_0860B064 = { .size = 3 @@ -53,80 +54,67 @@ static const struct OamData gUnknown_0860B06C = // .text -static void nullsub_122(struct Sprite *sprite) +static void DummyPicSpriteCallback(struct Sprite *sprite) { } -bool16 dp13_810BB8C(void) +bool16 ResetAllPicSprites(void) { int i; - for (i = 0; i < 8; i ++) - { - gUnknown_0203CD04[i] = gUnknown_0860B058; - } + for (i = 0; i < PICS_COUNT; i ++) + sSpritePics[i] = sDummyPicData; + return FALSE; } -static bool16 load_pokemon_image_TODO(u16 species, u32 personality, bool8 isFrontPic, u8 *dest, bool8 isTrainer, bool8 ignoreDeoxys) +static bool16 DecompressPic(u16 species, u32 personality, bool8 isFrontPic, u8 *dest, bool8 isTrainer, bool8 ignoreDeoxys) { if (!isTrainer) { if (isFrontPic) { if (!ignoreDeoxys) - { LoadSpecialPokePic(&gMonFrontPicTable[species], dest, species, personality, isFrontPic); - } else - { LoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], dest, species, personality, isFrontPic); - } } else { if (!ignoreDeoxys) - { LoadSpecialPokePic(&gMonBackPicTable[species], dest, species, personality, isFrontPic); - } else - { LoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species], dest, species, personality, isFrontPic); - } } } else { if (isFrontPic) - { DecompressPicFromTable(&gTrainerFrontPicTable[species], dest, species); - } else - { DecompressPicFromTable(&gTrainerBackPicTable[species], dest, species); - } } return FALSE; } -static bool16 sub_818D09C(u16 species, u32 personality, bool8 isFrontPic, u8 *dest, bool8 isTrainer) +static bool16 DecompressPic_HandleDeoxys(u16 species, u32 personality, bool8 isFrontPic, u8 *dest, bool8 isTrainer) { - return load_pokemon_image_TODO(species, personality, isFrontPic, dest, isTrainer, FALSE); + return DecompressPic(species, personality, isFrontPic, dest, isTrainer, FALSE); } -static void sub_818D0C4(u16 species, u32 otId, u32 personality, u8 paletteSlot, u16 paletteTag, bool8 isTrainer) +static void LoadPicPaletteByTagOrSlot(u16 species, u32 otId, u32 personality, u8 paletteSlot, u16 paletteTag, bool8 isTrainer) { if (!isTrainer) { if (paletteTag == 0xFFFF) { - gUnknown_0203CCEC.paletteTag |= 0xFFFF; + sCreatingSpriteTemplate.paletteTag |= 0xFFFF; LoadCompressedPalette(GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality), 0x100 + paletteSlot * 0x10, 0x20); } else { - gUnknown_0203CCEC.paletteTag = paletteTag; + sCreatingSpriteTemplate.paletteTag = paletteTag; LoadCompressedObjectPalette(GetMonSpritePalStructFromOtIdPersonality(species, otId, personality)); } } @@ -134,42 +122,34 @@ static void sub_818D0C4(u16 species, u32 otId, u32 personality, u8 paletteSlot, { if (paletteTag == 0xFFFF) { - gUnknown_0203CCEC.paletteTag |= 0xFFFF; + sCreatingSpriteTemplate.paletteTag |= 0xFFFF; LoadCompressedPalette(gTrainerFrontPicPaletteTable[species].data, 0x100 + paletteSlot * 0x10, 0x20); } else { - gUnknown_0203CCEC.paletteTag = paletteTag; + sCreatingSpriteTemplate.paletteTag = paletteTag; LoadCompressedObjectPalette(&gTrainerFrontPicPaletteTable[species]); } } } -static void sub_818D180(u16 species, u32 otId, u32 personality, u8 paletteSlot, bool8 isTrainer) +static void LoadPicPaletteBySlot(u16 species, u32 otId, u32 personality, u8 paletteSlot, bool8 isTrainer) { if (!isTrainer) - { LoadCompressedPalette(GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality), paletteSlot * 0x10, 0x20); - } else - { LoadCompressedPalette(gTrainerFrontPicPaletteTable[species].data, paletteSlot * 0x10, 0x20); - } } -static void uns_builder_assign_animtable1(bool8 isTrainer) +static void AssignSpriteAnimsTable(bool8 isTrainer) { if (!isTrainer) - { - gUnknown_0203CCEC.anims = gPlayerMonSpriteAnimsTable; - } + sCreatingSpriteTemplate.anims = gPlayerMonSpriteAnimsTable; else - { - gUnknown_0203CCEC.anims = gUnknown_0830536C[0]; - } + sCreatingSpriteTemplate.anims = gUnknown_0830536C[0]; } -static u16 oamt_spawn_poke_or_trainer_picture(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 isTrainer, bool8 ignoreDeoxys) +static u16 CreatePicSprite(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 isTrainer, bool8 ignoreDeoxys) { u8 i; u8 *framePics; @@ -177,14 +157,14 @@ static u16 oamt_spawn_poke_or_trainer_picture(u16 species, u32 otId, u32 persona int j; u8 spriteId; - for (i = 0; i < 8; i ++) + for (i = 0; i < PICS_COUNT; i ++) { - if (!gUnknown_0203CD04[i].active) + if (!sSpritePics[i].active) { break; } } - if (i == 8) + if (i == PICS_COUNT) { return 0xFFFF; } @@ -199,7 +179,7 @@ static u16 oamt_spawn_poke_or_trainer_picture(u16 species, u32 otId, u32 persona Free(framePics); return 0xFFFF; } - if (load_pokemon_image_TODO(species, personality, isFrontPic, framePics, isTrainer, ignoreDeoxys)) + if (DecompressPic(species, personality, isFrontPic, framePics, isTrainer, ignoreDeoxys)) { // debug trap? return 0xFFFF; @@ -209,32 +189,32 @@ static u16 oamt_spawn_poke_or_trainer_picture(u16 species, u32 otId, u32 persona images[j].data = framePics + 0x800 * j; images[j].size = 0x800; } - gUnknown_0203CCEC.tileTag = 0xFFFF; - gUnknown_0203CCEC.oam = &gUnknown_0860B064; - uns_builder_assign_animtable1(isTrainer); - gUnknown_0203CCEC.images = images; - gUnknown_0203CCEC.affineAnims = gDummySpriteAffineAnimTable; - gUnknown_0203CCEC.callback = nullsub_122; - sub_818D0C4(species, otId, personality, paletteSlot, paletteTag, isTrainer); - spriteId = CreateSprite(&gUnknown_0203CCEC, x, y, 0); + sCreatingSpriteTemplate.tileTag = 0xFFFF; + sCreatingSpriteTemplate.oam = &gUnknown_0860B064; + AssignSpriteAnimsTable(isTrainer); + sCreatingSpriteTemplate.images = images; + sCreatingSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; + sCreatingSpriteTemplate.callback = DummyPicSpriteCallback; + LoadPicPaletteByTagOrSlot(species, otId, personality, paletteSlot, paletteTag, isTrainer); + spriteId = CreateSprite(&sCreatingSpriteTemplate, x, y, 0); if (paletteTag == 0xFFFF) { gSprites[spriteId].oam.paletteNum = paletteSlot; } - gUnknown_0203CD04[i].frames = framePics; - gUnknown_0203CD04[i].images = images; - gUnknown_0203CD04[i].paletteTag = paletteTag; - gUnknown_0203CD04[i].spriteId = spriteId; - gUnknown_0203CD04[i].active = TRUE; + sSpritePics[i].frames = framePics; + sSpritePics[i].images = images; + sSpritePics[i].paletteTag = paletteTag; + sSpritePics[i].spriteId = spriteId; + sSpritePics[i].active = TRUE; return spriteId; } -static u16 sub_818D384(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 isTrainer) +static u16 CreatePicSprite_HandleDeoxys(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 isTrainer) { - return oamt_spawn_poke_or_trainer_picture(species, otId, personality, isFrontPic, x, y, paletteSlot, paletteTag, isTrainer, FALSE); + return CreatePicSprite(species, otId, personality, isFrontPic, x, y, paletteSlot, paletteTag, isTrainer, FALSE); } -u16 sub_818D3E4(u16 species, u32 otId, u32 personality, u8 flags, s16 x, s16 y, u8 paletteSlot, u16 paletteTag) +u16 CreatePicSprite2(u16 species, u32 otId, u32 personality, u8 flags, s16 x, s16 y, u8 paletteSlot, u16 paletteTag) { u8 *framePics; struct SpriteFrameImage *images; @@ -243,14 +223,14 @@ u16 sub_818D3E4(u16 species, u32 otId, u32 personality, u8 flags, s16 x, s16 y, u8 spriteId; u8 flags2; - for (i = 0; i < 8; i ++) + for (i = 0; i < PICS_COUNT; i ++) { - if (!gUnknown_0203CD04[i].active) + if (!sSpritePics[i].active) { break; } } - if (i == 8) + if (i == PICS_COUNT) { return 0xFFFF; } @@ -274,7 +254,7 @@ u16 sub_818D3E4(u16 species, u32 otId, u32 personality, u8 flags, s16 x, s16 y, Free(framePics); return 0xFFFF; } - if (load_pokemon_image_TODO(species, personality, flags, framePics, FALSE, FALSE)) + if (DecompressPic(species, personality, flags, framePics, FALSE, FALSE)) { // debug trap? return 0xFFFF; @@ -284,76 +264,76 @@ u16 sub_818D3E4(u16 species, u32 otId, u32 personality, u8 flags, s16 x, s16 y, images[j].data = framePics + 0x800 * j; images[j].size = 0x800; } - gUnknown_0203CCEC.tileTag = 0xFFFF; - gUnknown_0203CCEC.anims = gMonAnimationsSpriteAnimsPtrTable[species]; - gUnknown_0203CCEC.images = images; + sCreatingSpriteTemplate.tileTag = 0xFFFF; + sCreatingSpriteTemplate.anims = gMonAnimationsSpriteAnimsPtrTable[species]; + sCreatingSpriteTemplate.images = images; if (flags2 == 0x01) { - gUnknown_0203CCEC.affineAnims = gUnknown_082FF694; - gUnknown_0203CCEC.oam = &gUnknown_0860B06C; + sCreatingSpriteTemplate.affineAnims = gUnknown_082FF694; + sCreatingSpriteTemplate.oam = &gUnknown_0860B06C; } else if (flags2 == 0x00) { - gUnknown_0203CCEC.affineAnims = gUnknown_082FF618; - gUnknown_0203CCEC.oam = &gUnknown_0860B06C; + sCreatingSpriteTemplate.affineAnims = gUnknown_082FF618; + sCreatingSpriteTemplate.oam = &gUnknown_0860B06C; } else { - gUnknown_0203CCEC.oam = &gUnknown_0860B064; - gUnknown_0203CCEC.affineAnims = gDummySpriteAffineAnimTable; + sCreatingSpriteTemplate.oam = &gUnknown_0860B064; + sCreatingSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; } - gUnknown_0203CCEC.callback = nullsub_122; - sub_818D0C4(species, otId, personality, paletteSlot, paletteTag, FALSE); - spriteId = CreateSprite(&gUnknown_0203CCEC, x, y, 0); + sCreatingSpriteTemplate.callback = DummyPicSpriteCallback; + LoadPicPaletteByTagOrSlot(species, otId, personality, paletteSlot, paletteTag, FALSE); + spriteId = CreateSprite(&sCreatingSpriteTemplate, x, y, 0); if (paletteTag == 0xFFFF) { gSprites[spriteId].oam.paletteNum = paletteSlot; } - gUnknown_0203CD04[i].frames = framePics; - gUnknown_0203CD04[i].images = images; - gUnknown_0203CD04[i].paletteTag = paletteTag; - gUnknown_0203CD04[i].spriteId = spriteId; - gUnknown_0203CD04[i].active = TRUE; + sSpritePics[i].frames = framePics; + sSpritePics[i].images = images; + sSpritePics[i].paletteTag = paletteTag; + sSpritePics[i].spriteId = spriteId; + sSpritePics[i].active = TRUE; return spriteId; } -static u16 sub_818D5B0(u16 spriteId) +static u16 FreeAndDestroyPicSpriteInternal(u16 spriteId) { u8 i; u8 *framePics; struct SpriteFrameImage *images; - for (i = 0; i < 8; i ++) + for (i = 0; i < PICS_COUNT; i ++) { - if (gUnknown_0203CD04[i].spriteId == spriteId) + if (sSpritePics[i].spriteId == spriteId) { break; } } - if (i == 8) + if (i == PICS_COUNT) { return 0xFFFF; } - framePics = gUnknown_0203CD04[i].frames; - images = gUnknown_0203CD04[i].images; - if (gUnknown_0203CD04[i].paletteTag != 0xFFFF) + framePics = sSpritePics[i].frames; + images = sSpritePics[i].images; + if (sSpritePics[i].paletteTag != 0xFFFF) { FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[spriteId].oam.paletteNum)); } DestroySprite(&gSprites[spriteId]); Free(framePics); Free(images); - gUnknown_0203CD04[i] = gUnknown_0860B058; + sSpritePics[i] = sDummyPicData; return 0; } static u16 sub_818D65C(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId, bool8 isTrainer) { - if (sub_818D09C(species, personality, isFrontPic, (u8 *)GetWindowAttribute(windowId, WINDOW_TILE_DATA), FALSE)) + if (DecompressPic_HandleDeoxys(species, personality, isFrontPic, (u8 *)GetWindowAttribute(windowId, WINDOW_TILE_DATA), FALSE)) { return 0xFFFF; } - sub_818D180(species, otId, personality, paletteSlot, isTrainer); + LoadPicPaletteBySlot(species, otId, personality, paletteSlot, isTrainer); return 0; } @@ -362,29 +342,29 @@ static u16 sub_818D6CC(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 *framePics; framePics = Alloc(4 * 0x800); - if (framePics && !sub_818D09C(species, personality, isFrontPic, framePics, isTrainer)) + if (framePics && !DecompressPic_HandleDeoxys(species, personality, isFrontPic, framePics, isTrainer)) { BlitBitmapRectToWindow(windowId, framePics, 0, 0, 0x40, 0x40, destX, destY, 0x40, 0x40); - sub_818D180(species, otId, personality, paletteSlot, isTrainer); + LoadPicPaletteBySlot(species, otId, personality, paletteSlot, isTrainer); Free(framePics); return 0; } return 0xFFFF; } -static u16 sub_818D778(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 ignoreDeoxys) +static u16 CreateMonPicSprite(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 ignoreDeoxys) { - return oamt_spawn_poke_or_trainer_picture(species, otId, personality, isFrontPic, x, y, paletteSlot, paletteTag, FALSE, ignoreDeoxys); + return CreatePicSprite(species, otId, personality, isFrontPic, x, y, paletteSlot, paletteTag, FALSE, ignoreDeoxys); } -u16 sub_818D7D8(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag) +u16 CreateMonPicSprite_HandleDeoxys(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag) { - return sub_818D778(species, otId, personality, isFrontPic, x, y, paletteSlot, paletteTag, FALSE); + return CreateMonPicSprite(species, otId, personality, isFrontPic, x, y, paletteSlot, paletteTag, FALSE); } -u16 sub_818D820(u16 spriteId) +u16 FreeAndDestroyMonPicSprite(u16 spriteId) { - return sub_818D5B0(spriteId); + return FreeAndDestroyPicSpriteInternal(spriteId); } u16 sub_818D834(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId) @@ -397,14 +377,14 @@ u16 sub_818D864(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u16 de return sub_818D6CC(species, otId, personality, isFrontPic, destX, destY, paletteSlot, windowId, FALSE); } -u16 sub_818D8AC(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag) +u16 CreateTrainerPicSprite(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag) { - return sub_818D384(species, 0, 0, isFrontPic, x, y, paletteSlot, paletteTag, TRUE); + return CreatePicSprite_HandleDeoxys(species, 0, 0, isFrontPic, x, y, paletteSlot, paletteTag, TRUE); } -u16 sub_818D8F0(u16 spriteId) +u16 FreeAndDestroyTrainerPicSprite(u16 spriteId) { - return sub_818D5B0(spriteId); + return FreeAndDestroyPicSpriteInternal(spriteId); } u16 sub_818D904(u16 species, bool8 isFrontPic, u8 paletteSlot, u8 windowId) @@ -417,17 +397,17 @@ u16 sub_818D938(u16 species, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteS return sub_818D6CC(species, 0, 0, isFrontPic, destX, destY, paletteSlot, windowId, TRUE); } -u8 sub_818D97C(u8 a0, u8 a1) +u16 PlayerGenderToFrontTrainerPicId_Debug(u8 gender, bool8 getClass) { - if (a1 == 1) + if (getClass == TRUE) { - switch (a0) + switch (gender) { - default: - return gFacilityClassToPicIndex[0x3F]; - case 0: - return gFacilityClassToPicIndex[0x3C]; + default: + return gFacilityClassToPicIndex[FACILITY_CLASS_PKMN_TRAINER_MAY]; + case MALE: + return gFacilityClassToPicIndex[FACILITY_CLASS_PKMN_TRAINER_BRENDAN]; } } - return a0; + return gender; } @@ -1448,8 +1448,8 @@ void ContestLiveUpdates_BeforeInterview_5(u8 a0, u8 a1) sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); if (sCurTVShowSlot != -1) { - show->contestLiveUpdates.winningSpecies = gUnknown_02039E00[a1].unk_00; - StringCopy(show->contestLiveUpdates.winningTrainerName, gUnknown_02039E00[a1].unk_0d); + show->contestLiveUpdates.winningSpecies = gContestMons[a1].species; + StringCopy(show->contestLiveUpdates.winningTrainerName, gContestMons[a1].trainerName); StripExtCtrlCodes(show->contestLiveUpdates.winningTrainerName); show->contestLiveUpdates.appealFlags2 = a0; if (a1 + 1 > gUnknown_02039F30) diff --git a/src/unk_pokedex_area_screen_helper.c b/src/unk_pokedex_area_screen_helper.c new file mode 100644 index 000000000..521af6dd9 --- /dev/null +++ b/src/unk_pokedex_area_screen_helper.c @@ -0,0 +1,75 @@ +#include "global.h" +#include "main.h" +#include "menu.h" +#include "bg.h" +#include "malloc.h" +#include "palette.h" + +EWRAM_DATA u8 *gUnknown_0203CF28 = NULL; + +static const u16 gUnknown_0861D140[] = INCBIN_U16("graphics/interface/region_map.gbapal"); +static const u8 gUnknown_0861D1A0[] = INCBIN_U8("graphics/interface/region_map.8bpp.lz"); +static const u8 gUnknown_0861DEF4[] = INCBIN_U8("graphics/interface/region_map.bin.lz"); +static const u8 gUnknown_0861E208[] = INCBIN_U8("graphics/interface/region_map_affine.8bpp.lz"); +static const u8 gUnknown_0861EF64[] = INCBIN_U8("graphics/interface/region_map_affine.bin.lz"); + +struct UnkStruct_1C4D70 +{ + u32 bg:2; + u32 unk2:8; + u32 unk10:2; + u32 unk12:20; +}; + +void sub_81C4D70(struct UnkStruct_1C4D70 *template) +{ + u8 unk; + gUnknown_0203CF28 = Alloc(4); + unk = template->unk10; + + if (unk == 0) + { + SetBgAttribute(template->bg, BG_CTRL_ATTR_WRAPAROUND, 0); + decompress_and_copy_tile_data_to_vram(template->bg, gUnknown_0861D1A0, 0, template->unk2, unk); + sub_8199D3C(decompress_and_copy_tile_data_to_vram(template->bg, gUnknown_0861DEF4, 0, 0, 1), template->unk2, 32, 32, unk); + } + else + { + SetBgAttribute(template->bg, BG_CTRL_ATTR_WRAPAROUND, 2); + SetBgAttribute(template->bg, 9, 1); + decompress_and_copy_tile_data_to_vram(template->bg, gUnknown_0861E208, 0, template->unk2, 0); + sub_8199D3C(decompress_and_copy_tile_data_to_vram(template->bg, gUnknown_0861EF64, 0, 0, 1), template->unk2, 64, 64, 1); + } + + ChangeBgX(template->bg, 0, 0); + ChangeBgY(template->bg, 0, 0); + SetBgAttribute(template->bg, BG_CTRL_ATTR_SCREENSIZE, 1); + CpuCopy32(gUnknown_0861D140, &gPlttBufferUnfaded[0x70], 0x60); + *gUnknown_0203CF28 = template->bg; +} + +bool32 sub_81C4E90(void) +{ + if (!free_temp_tile_data_buffers_if_possible()) + { + ShowBg(*gUnknown_0203CF28); + return FALSE; + } + else + { + return TRUE; + } +} + +void sub_81C4EB4(void) +{ + if (gUnknown_0203CF28 != NULL) + { + FREE_AND_SET_NULL(gUnknown_0203CF28); + } +} + +void sub_81C4ED0(u32 a0) +{ + ChangeBgY(*gUnknown_0203CF28, a0 * 0x100, 0); +} diff --git a/src/unk_text_util_2.c b/src/unk_text_util_2.c index ca8246128..4821ed776 100644 --- a/src/unk_text_util_2.c +++ b/src/unk_text_util_2.c @@ -4,6 +4,7 @@ #include "text.h" #include "sound.h" +ALIGNED(4) static const u8 sUnknown_08616124[] = {1, 2, 4}; static const u16 sFont6BrailleGlyphs[] = INCBIN_U16("data/graphics/fonts/font6.fwjpnfont"); diff --git a/src/util.c b/src/util.c index 88be4e4a1..9c8766a97 100644 --- a/src/util.c +++ b/src/util.c @@ -152,10 +152,6 @@ void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s BgAffineSet(&src, dest, 1); } -#ifdef NONMATCHING - -// Functionally equivalent. -// Only the two yflip loops don't match. void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) { u8 x, y; @@ -166,32 +162,18 @@ void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) for (y = 0; y < h; y++) { - int filler = 32 - w; - for (x = 0; x < w; x++) { int tile = (*tilemap & 0x3ff) * 32; - int attr = *tilemap & 0xc00; - if (attr == 0) + if ((*tilemap & 0xc00) == 0) { - void *src = tiles + tile; - void *dest = output; - int length = 32; - DmaCopy32(3, src, dest, length); + CpuCopy32(tiles + tile, output, 32); } - else if (attr == 0x800) // yflip + else if ((*tilemap & 0xc00) == 0x800) // yflip { for (i = 0; i < 8; i++) - { - void *src = tiles; - void *dest = output; - int length = 4; - // this is likely wrong, but makes it closer to matching - src += tile + (7 - i) * 4; - dest += i * 4; - DmaCopy32(3, src, dest, length); - } + CpuCopy32(tiles + (tile + (7 - i) * 4), output + i * 4, 4); } else // xflip { @@ -207,245 +189,20 @@ void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) if (*tilemap & 0x800) // yflip { for (i = 0; i < 8; i++) - { - void *src = xflip + (7-i) * 4; - void *dest = output + i*4; - int length = 4; - DmaCopy32(3, src, dest, length); - } + CpuCopy32(xflip + (7 - i) * 4, output + i * 4, 4); } else { - void *src = xflip; - void *dest = output; - int length = 32; - DmaCopy32(3, src, dest, length); + CpuCopy32(xflip, output, 32); } } tilemap++; output += 32; } - tilemap += filler; + tilemap += (32 - w); } } -#else -NAKED void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) -{ - asm("\n\ - .syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x38\n\ - str r2, [sp, 0x20]\n\ - adds r4, r3, 0\n\ - ldr r7, [sp, 0x58]\n\ - lsls r0, 24\n\ - lsls r1, 24\n\ - ldr r2, =sSpriteDimensions\n\ - lsrs r1, 23\n\ - lsrs r0, 21\n\ - adds r1, r0\n\ - adds r0, r2, 0x1\n\ - adds r0, r1, r0\n\ - ldrb r0, [r0]\n\ - str r0, [sp, 0x24]\n\ - adds r1, r2\n\ - ldrb r1, [r1]\n\ - str r1, [sp, 0x28]\n\ - movs r0, 0\n\ - b _0806F88C\n\ - .pool\n\ - _0806F740:\n\ - movs r5, 0\n\ - adds r0, 0x1\n\ - str r0, [sp, 0x30]\n\ - b _0806F874\n\ - _0806F748:\n\ - ldrh r0, [r4]\n\ - ldr r2, =0x000003ff\n\ - adds r1, r2, 0\n\ - ands r1, r0\n\ - lsls r1, 5\n\ - mov r8, r1\n\ - movs r2, 0xC0\n\ - lsls r2, 4\n\ - adds r1, r2, 0\n\ - ands r1, r0\n\ - mov r2, sp\n\ - strh r0, [r2, 0x34]\n\ - cmp r1, 0\n\ - bne _0806F788\n\ - ldr r0, [sp, 0x20]\n\ - add r0, r8\n\ - adds r1, r7, 0\n\ - ldr r2, =0x04000008\n\ - bl CpuSet\n\ - adds r4, 0x2\n\ - str r4, [sp, 0x2C]\n\ - adds r7, 0x20\n\ - mov r10, r7\n\ - adds r5, 0x1\n\ - mov r9, r5\n\ - b _0806F86A\n\ - .pool\n\ - _0806F788:\n\ - movs r0, 0x80\n\ - lsls r0, 4\n\ - cmp r1, r0\n\ - bne _0806F7CC\n\ - movs r1, 0\n\ - adds r4, 0x2\n\ - str r4, [sp, 0x2C]\n\ - movs r2, 0x20\n\ - adds r2, r7\n\ - mov r10, r2\n\ - adds r5, 0x1\n\ - mov r9, r5\n\ - _0806F7A0:\n\ - lsls r4, r1, 24\n\ - asrs r4, 24\n\ - movs r0, 0x7\n\ - subs r0, r4\n\ - lsls r0, 2\n\ - add r0, r8\n\ - ldr r1, [sp, 0x20]\n\ - adds r0, r1, r0\n\ - lsls r1, r4, 2\n\ - adds r1, r7, r1\n\ - ldr r2, =0x04000001\n\ - bl CpuSet\n\ - adds r4, 0x1\n\ - lsls r4, 24\n\ - lsrs r1, r4, 24\n\ - asrs r4, 24\n\ - cmp r4, 0x7\n\ - ble _0806F7A0\n\ - b _0806F86A\n\ - .pool\n\ - _0806F7CC:\n\ - movs r1, 0\n\ - adds r4, 0x2\n\ - str r4, [sp, 0x2C]\n\ - movs r2, 0x20\n\ - adds r2, r7\n\ - mov r10, r2\n\ - adds r5, 0x1\n\ - mov r9, r5\n\ - movs r0, 0xF\n\ - mov r12, r0\n\ - _0806F7E0:\n\ - movs r2, 0\n\ - lsls r4, r1, 24\n\ - lsls r0, r4, 2\n\ - lsrs r0, 24\n\ - adds r6, r0, 0x3\n\ - mov r1, r8\n\ - adds r5, r1, r0\n\ - _0806F7EE:\n\ - lsls r1, r2, 24\n\ - asrs r1, 24\n\ - subs r0, r6, r1\n\ - mov r2, sp\n\ - adds r3, r2, r0\n\ - adds r0, r5, r1\n\ - ldr r2, [sp, 0x20]\n\ - adds r0, r2, r0\n\ - ldrb r2, [r0]\n\ - mov r0, r12\n\ - ands r0, r2\n\ - lsls r0, 4\n\ - lsrs r2, 4\n\ - orrs r0, r2\n\ - strb r0, [r3]\n\ - adds r1, 0x1\n\ - lsls r1, 24\n\ - lsrs r2, r1, 24\n\ - asrs r1, 24\n\ - cmp r1, 0x3\n\ - ble _0806F7EE\n\ - movs r1, 0x80\n\ - lsls r1, 17\n\ - adds r0, r4, r1\n\ - lsrs r1, r0, 24\n\ - asrs r0, 24\n\ - cmp r0, 0x7\n\ - ble _0806F7E0\n\ - mov r2, sp\n\ - ldrh r0, [r2, 0x34]\n\ - movs r2, 0x80\n\ - lsls r2, 4\n\ - ands r0, r2\n\ - cmp r0, 0\n\ - beq _0806F860\n\ - movs r1, 0\n\ - _0806F836:\n\ - lsls r4, r1, 24\n\ - asrs r4, 24\n\ - movs r0, 0x7\n\ - subs r0, r4\n\ - lsls r0, 2\n\ - add r0, sp\n\ - lsls r1, r4, 2\n\ - adds r1, r7, r1\n\ - ldr r2, =0x04000001\n\ - bl CpuSet\n\ - adds r4, 0x1\n\ - lsls r4, 24\n\ - lsrs r1, r4, 24\n\ - asrs r4, 24\n\ - cmp r4, 0x7\n\ - ble _0806F836\n\ - b _0806F86A\n\ - .pool\n\ - _0806F860:\n\ - mov r0, sp\n\ - adds r1, r7, 0\n\ - ldr r2, =0x04000008\n\ - bl CpuSet\n\ - _0806F86A:\n\ - ldr r4, [sp, 0x2C]\n\ - mov r7, r10\n\ - mov r1, r9\n\ - lsls r0, r1, 24\n\ - lsrs r5, r0, 24\n\ - _0806F874:\n\ - ldr r2, [sp, 0x28]\n\ - cmp r5, r2\n\ - bcs _0806F87C\n\ - b _0806F748\n\ - _0806F87C:\n\ - movs r0, 0x20\n\ - ldr r1, [sp, 0x28]\n\ - subs r0, r1\n\ - lsls r0, 1\n\ - adds r4, r0\n\ - ldr r2, [sp, 0x30]\n\ - lsls r0, r2, 24\n\ - lsrs r0, 24\n\ - _0806F88C:\n\ - ldr r1, [sp, 0x24]\n\ - cmp r0, r1\n\ - bcs _0806F894\n\ - b _0806F740\n\ - _0806F894:\n\ - add sp, 0x38\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n\ - .syntax divided"); -} - -#endif // NONMATCHING - int CountTrailingZeroBits(u32 value) { u8 i; diff --git a/src/wallclock.c b/src/wallclock.c index 9b96d416c..f3feab1d4 100644 --- a/src/wallclock.c +++ b/src/wallclock.c @@ -59,13 +59,38 @@ static void SpriteCB_PMIndicator(struct Sprite *sprite); static const u8 sUnknown_085B1F58[] = INCBIN_U8("graphics/wallclock/graphics_85b1f58.4bpp.lz"); static const u16 sUnknown_085B21D4[] = INCBIN_U16("graphics/wallclock/palette_85b21d4.gbapal"); -static const struct WindowTemplate gUnknown_085B21DC[] = { - { 0x00, 0x03, 0x11, 0x18, 0x02, 0x0e, 0x200 }, - { 0x02, 0x18, 0x10, 0x06, 0x02, 0x0c, 0x230 }, + +static const struct WindowTemplate gUnknown_085B21DC[] = +{ + { + .priority = 0, + .tilemapLeft = 3, + .tilemapTop = 17, + .width = 24, + .height = 2, + .paletteNum = 14, + .baseBlock = 512 + }, + { + .priority = 2, + .tilemapLeft = 24, + .tilemapTop = 16, + .width = 6, + .height = 2, + .paletteNum = 12, + .baseBlock = 560 + }, DUMMY_WIN_TEMPLATE }; -static const struct WindowTemplate gUnknown_085B21F4 = { - 0x00, 0x18, 0x09, 0x05, 0x04, 0x0e, 0x23c +static const struct WindowTemplate gUnknown_085B21F4 = +{ + .priority = 0, + .tilemapLeft = 24, + .tilemapTop = 9, + .width = 5, + .height = 4, + .paletteNum = 14, + .baseBlock = 572 }; static const struct BgTemplate gUnknown_085B21FC[] = { { @@ -115,23 +140,25 @@ static const union AnimCmd *const gUnknown_085B2248[] = { static const union AnimCmd *const gUnknown_085B224C[] = { Unknown_085B2240 }; -static const struct SpriteTemplate gUnknown_085B2250 = { - TAG_GFX_WALL_CLOCK_HAND, - TAG_PAL_WALL_CLOCK_HAND, - &Unknown_085B2230, - gUnknown_085B2248, - NULL, - gDummySpriteAffineAnimTable, - SpriteCB_MinuteHand +static const struct SpriteTemplate gUnknown_085B2250 = +{ + .tileTag = TAG_GFX_WALL_CLOCK_HAND, + .paletteTag = TAG_PAL_WALL_CLOCK_HAND, + .oam = &Unknown_085B2230, + .anims = gUnknown_085B2248, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_MinuteHand }; -static const struct SpriteTemplate gUnknown_085B2268 = { - TAG_GFX_WALL_CLOCK_HAND, - TAG_PAL_WALL_CLOCK_HAND, - &Unknown_085B2230, - gUnknown_085B224C, - NULL, - gDummySpriteAffineAnimTable, - SpriteCB_HourHand +static const struct SpriteTemplate gUnknown_085B2268 = +{ + .tileTag = TAG_GFX_WALL_CLOCK_HAND, + .paletteTag = TAG_PAL_WALL_CLOCK_HAND, + .oam = &Unknown_085B2230, + .anims = gUnknown_085B224C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_HourHand }; static const struct OamData Unknown_085B2280 = { .y = 0xa0, @@ -152,23 +179,25 @@ static const union AnimCmd *const gUnknown_085B2298[] = { static const union AnimCmd *const gUnknown_085B229C[] = { Unknown_085B2290 }; -static const struct SpriteTemplate gUnknown_085B22A0 = { - TAG_GFX_WALL_CLOCK_HAND, - TAG_PAL_WALL_CLOCK_HAND, - &Unknown_085B2280, - gUnknown_085B2298, - NULL, - gDummySpriteAffineAnimTable, - SpriteCB_AMIndicator +static const struct SpriteTemplate gUnknown_085B22A0 = +{ + .tileTag = TAG_GFX_WALL_CLOCK_HAND, + .paletteTag = TAG_PAL_WALL_CLOCK_HAND, + .oam = &Unknown_085B2280, + .anims = gUnknown_085B2298, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_AMIndicator }; -static const struct SpriteTemplate gUnknown_085B22B8 = { - TAG_GFX_WALL_CLOCK_HAND, - TAG_PAL_WALL_CLOCK_HAND, - &Unknown_085B2280, - gUnknown_085B229C, - NULL, - gDummySpriteAffineAnimTable, - SpriteCB_PMIndicator +static const struct SpriteTemplate gUnknown_085B22B8 = +{ + .tileTag = TAG_GFX_WALL_CLOCK_HAND, + .paletteTag = TAG_PAL_WALL_CLOCK_HAND, + .oam = &Unknown_085B2280, + .anims = gUnknown_085B229C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_PMIndicator }; static const s8 sClockHandCoords[][2] = { { 0x00, -0x18}, @@ -602,7 +631,7 @@ static void WallClockInit(void) ShowBg(3); } -void Cb2_StartWallClock(void) +void CB2_StartWallClock(void) { u8 taskId; u8 spriteId; @@ -644,7 +673,7 @@ void Cb2_StartWallClock(void) schedule_bg_copy_tilemap_to_vram(2); } -void Cb2_ViewWallClock(void) +void CB2_ViewWallClock(void) { u8 taskId; u8 spriteId; @@ -763,7 +792,7 @@ static void Task_SetClock3(u8 taskId) static void Task_SetClock4(u8 taskId) { - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: PlaySE(SE_SELECT); |